Difference between revisions of "Roadmap"

From Inkscape Wiki
Jump to navigation Jump to search
(despam)
 
(Revert spamming)
(One intermediate revision by the same user not shown)
Line 1: Line 1:
== Inkscape Development Roadmap ==  
== Problem ==


NOTE: This is a working document showing specific near-term tasks needed for achieving milestones. The number in front of the version is in reference to the milestone.
Bryce has pointed out the #1 feature need for Inkscape right now is strong support for Adobe Portable Document Format (PDF) and Postscript (PS) in his  [http://sourceforge.net/mailarchive/forum.php?forum_id=36054&max_rows=25&style=flat&viewmonth=200511&viewday=30 2005.11.30 email] to the Inkscape mailing lists.
This ConsensusPoll exists to enable the community to efficiently create and commit to a plan of action to resolve this issue.


''Milestones 0-7 have been completed since the start of the Inkscape Project.''
== Contract ==


=== Milestone 8 - GtkMM Architectural Change - Inkscape 0.42 ===
* >= 20 inkscape enthusiasts
* >= 4 developers with commit access
* >= 95% yes
* all conditions in plan are met
* 72 hour GO timer
* 80% cloture


General Gtkmm Interface
ContractExplanation
* (DONE) Merge the inkscape_gtkmm codebase into mainline with cmdline option to activate it [bryce]
* Create a TreeEditor dialog for use by the XML editor, Extensions, Layers, etc.
* Develop a loadable keyboard accelerator "theme" system
* (DONE) Implement text in shape UI
* Create a CurrentColorWidget
* (DONE) Selection and node tools: double-click on group sets group as current layer (without altering inkscape:groupmode) [bb]


Main Chrome
Because this contract defines what it means to participate in this poll it will never be changed.  If it turns out to be inadequate, this poll must be canceled and a new poll with a new contract must be drafted.
* Controls panel:
** Implement Text controls
** Implement X/Y spinbuttons for the Node controls
** Add more spinbuttons to shape tools: center, radius, w/h, etc.
** Make defaults settable in Preferences
* Develop Gtkmm Context Menu
* Develop Gtkmm Statusbar
* Implement a detachable toolbox


Icons and Cursors
== Yes-No Poll ==
* (DONE) Implement basic icon theming capability
* Add Gnome HIG-compliant ICON (Normal logo with NIB in it) [mental]
* (DONE) Convert all xmp icons to svg's
* Create a complete default icon/cursor set [bb]
* (DONE) Create one alternate icon/cursor set


Dialogs Redevelopment and HIG-Compliance
Participation in this poll is open to anyone who wants to participate.
* Preferences dialog
** Convert to Gtkmm
** Redesign so it's not tabs-in-tabs
* Fill/Stroke dialog
** Convert to Gtkmm
** (DONE) Overhaul Gradient UI to improve management and creation
* Object Properties dialog
** (DONE) Redesign Object Properties dialog
* Text Properties dialog - Convert to Gtkmm
* Layers Dialog (Also see Layers section below)
* Export Dialog - Convert to Gtkmm
* (DONE) Align and Distribute Dialog - Convert to Gtkmm
* Document Preferences Dialog - Convert to Gtkmm [rwst]
* Find Dialog - Convert to Gtkmm
* Messages Dialog - Convert to Gtkmm
* (DONE) Trace Dialog - Convert to Gtkmm
* (DONE) Transformation Dialog - Convert to Gtkmm
* XML Editor - Convert to Gtkmm


Layer Enhancements
Voting yes in this poll means that you believe the community created plan is ready for implementation, and that you will do your part to support its execution. Voting no in this poll means that you have outstanding concerns about the community created plan. You can change your vote at any time. All votes are transparent so that those voting yes can listen to the concerns of those voting no.
* Implement a layer management dialog [mental]
* (DONE) search checks inkscape:label, and ignores layers [bb]
* Layers...      // opens the Layers dialog
* (DONE) Move to Layer Above    Shift+PgUp
* (DONE) Move to Layer Below      Shift+PgDn
* Move to Layer... // let me choose layer name to move selection to
* Unlock All Layers // unlock all layers in the document
** (or all siblings of the current layer?)
* Unhide All Layers
* Unlock All in Layer // unlock all children of the current layer
* Unhide All in Layer
* Group to Layer      // convert group to layer
* Layer to Group


* (DONE) Clean up tool ("event context") code
No ... BrandonCsSanders    - Success needs to be defined (e.g., if all 20 test cases are passed ...)
No ... BryceHarrington    - I will pledge $50 once someone defines how we do pledges :-)
No ... AlexandreProkoudine - There is no plan yet
No ... ColinMarquardt      - There is no plan yet
No ... EricWilhelm        - The plan needs salt
No ... MenTaLguY          - This isn't much of a plan...
No ... JonCruz            - Plan? Not quite yet
No ... JonPhillips        - no plan...
No ... NicuBuculei        - so far the plan is weak
No ... RalfWStephan        - isolated thoughts don't make a plan, pledge 5% of SoC money amount used for it
No ... AndyFitzsimon      - I will also pledge $50 once someone defines how we do pledges.
No ... TuukkaPasanen      - There isn't good plan yet.
No ... EricJonas          - There is no plan


Extension Infrastructure
(If you are voting no because the plan is incomplete, please describe what you'd like to see added or changed.)
* Sketch out a first cut at an extension manager dialog
* Decide on an API for extensions to interact with the XML tree / DOM (see DOM 3 spec)
* Add DOM/XPath support [ishmal]


=== Milestone 9 - Design Extension Architecture - Inkscape 0.43 ===
== Pledges ==


* This architectural change will establish a new mechanism for how features are added and maintained in the codebase. ''see also: ExtensionArchitectureProposals''
$50 ... BryceHarrington  - I will pledge $50 once someone defines how we do pledges :-)
$50 ... AndyFitzsimon    - I will also pledge $50 once someone defines how we do pledges.
??? ... RalfWStephan    - pledge 5% of SoC money amount used for it (how much is this?)
$50 ... BrandonCsSanders - once the plan is done
$100 ... EricJonas      - Just let me know how to pledge


Internal
== Plan ==
* Thoroughly document SPRepr
* Hook up the DOM stuff to Swig to enable scripting languages access to internals
** foreach section of code to script, subclass NodeImpl and add fields and methods
* Redo the internal clipboard to use an SPDocument/SPObjects rather than being simply literal copying at the SPRepr level [mental]
* Specification Document for extension system including API
* Hook up system clipboard (via gtkmm). Ensure when copying, that 'image/png' and/or 'image/svg' get on the system clipboard
* Solidify the underlying Extensions infrastructure
** Convert Extensions to OO
** Rename extensions to be consistent with new naming scheme
* (DONE) Example extension package
* Implement support for SVG's "switch" element (SPItemGroup subclass, I think..), and the associated requiredFeatures, requiredExtensions and systemLanguage attributes (on SPItems in general)
* Look into implementing SVG filters via extensions
* Implement added Desktop file entries for GNOME 2.8 http://www.gnomedesktop.org/article.php?sid=1885&mode=thread&order=0&thold=0


Drawing
# Describe the [[Current PDF Support]]
* Fix inverted coordinate system [mental]
# Identify [[Required PDF Support]]
* Make clones respond sensibly to original duplication [bb]
# Assemble a few dozen examples to use as [[PDF test cases]]
* Review & plan out replacement of sp-file.*
# Document how each of the current existing projects (potential starting points) performs on the suite of test cases
** Implement backup functionality for documents and preferences.xml, ideally with versioning like in Emacs
# Determine timeframe
* Implement Rounding for arbitrary paths
## Start some time in early 2006?
## Expected completion some time in mid/late 2006?
# Select developer with the right skillset
## C/C++, XML
## PDF file format
## SVG file format
## Able to work under (U.S.) contract
## /Other skillset requirements?/
# Determine what funding is needed to enable them to complete the work
# Establish a contract with the selected developer to perform the work
# When the developer is done, verify that all test cases pass, then pay developer


Dialogs
== Background Information ==
* Redevelop About screen
** break out the credited authors
** possibly add tab or section to this with known issues/bugs
** same for release notes
** investigate use of GtkAbout


=== Milestone 10 - RFE's & Extensions Implementation - Inkscape 0.44 ===
* [[SOC_Original_Project_Prompts]]
* PrintingSubsystem
* [[Roadmap]] (Milestone 11) Import/Export Feature Enhancements


New/Changed Dependencies
== Adequate Technical Solutions ==
* (DONE) Add libcroco


What solutions would be fine?
* Library that integrates directly in to inkscape (and scribus, ...)
** Use [[Cairo]] as the presentation layer and use its support for pdf/ps
*** See [http://poppler.freedesktop.org/ Poppler] for PDF import. 
*** This may be a first step towards an eventual migration of the backend renderer to Cairo
** Pull out the scribus pdf support into a libpdf that can be shared by both scribus and Inkscape
*** Requires conversion of Qt-isms into more neutral widgetset-independent style
* Extend an existing standalone (filter) tool that can be bundled with inkscape
** [http://scratchcomputing.com/projects/uber-converter/ Uberconverter]
** [http://www.solidcode.net/pdf2svg/ pdf2svg]
** [http://www.sodipodi.com/index.php3?section=download/tools ill2svg]
** [http://www.xs4all.nl/~hanwen/public/software/ai2svg.py ai2svg]
** [http://www.accesspdf.com/pdftk/ pdftk]


Internals
== Possible Strategies ==


* Implement extension API
* Raise money and hire a developer to implement it
* Implement extension registry
** Collect pledges, once we are over threshold collect funds (http://fundable.org/)
* Complete Extension preferences dialog
*** What should the threshhold be?  $2000?  $5000?
* (DONE) Reduce open/total RFE ratio to 55%
*** Still too early to decide what the threshold should be.  We need to know how much it will cost first.
* Implement creation and on-canvas editing of masks/clippaths
** Need to decide what the funds would be spent on ahead of time
* Create an SPObject API for tracking references and avoiding id clashes on import and interdocument copy/paste. What we need are a void SPDocument::importCopies([set of SPObjects]), and an [set of SPObjects] SPObject::dependencies() method.
*** 10-20% - Tester to collect test cases and put together a test suite for developer to use
* Implement gradient UI "release" handler to deal with gradient garbage collection (see bug 984854)
*** 70-80% - Developer to write the code, document it, and make it pass the tests
* improvement of svg patterns UI - make it similar to gradient-drag, instead of piggybacking knotholder
*** 5-10%  - Liaison to handle the paperwork, collect/distribute funds, track/report progress, and verify the work has been completed adequately
** Mercenaries that would do this for us?
*** BrandonCsSanders ... I'd do it for $2000, half up front, half once it meets spec.  Caveat: it would take me six months to complete because my plate is pretty full right now and I'll be snatching a week here and a week there.
*** EricWilhelm ... This will be a lovely fit for the UberConverter.  I'm guessing $5k would get it to about the same level as XAR and SVG in chromista.  Caveat: Those aren't done yet.  Check back in Jan.  I would also be happy to oversee/direct the work of someone else wanting to write this as a pair of UberConverter connectors (crs2pdf, pdf2crs.)
*** /other mercenaries?/
* Hold a [http://www.usemod.com/cgi-bin/mb.pl?BarnRaising BarnRaising]
** at [http://RecentChangesCamp.org RecentChangesCamp] in Portland February 3-5
** other location/time?
* Wait for a volunteer to get inspired and just do it


RFE's
* [http://sourceforge.net/tracker/index.php?func=detail&aid=893812&group_id=93438&atid=604309 hyperlinking]
* tools: add/remove points on path, bezier drag


Maintenance
== Questions/Brainstorms ==
* Learn and use autoscan and autoreconf to find out which configure tests are still needed.
* Clean up configure.in
* (PARTIALLY DONE) [http://inkscape.org/cgi-bin/wiki.pl?DirectoryReorgProposal Directory Reorganization] (rejon)
* When run without installing, make it look for icon image file(s) locally so we don't get garbage icons


Testing
* What about what inkscape earned through the Google Summer of Code? What's the status of this?
* (DONE) Implement tests of Inkscape against the W3C test suite [rick beton, bryce]
** $2000 earned; there has been no plan or consensus for what to use it for
* Include some rendering tests in `make check'.
* Does Cairo have PDF export already? What about to use cairo for just this job? and later then use cairo for the whole presentation layer? Instead of creating an interims solution?
 
** Yes, Cairo has PDF export capabilities; it's unknown if it's significantly better than our current (poor) pdf export functionality
=== Milestone 11 - Import/Export Feature Enhancements - Inkscape 0.45 ===
** Cairo Postscript and PDF backends are still experimental and disabled by default in current stable release, but plan is to make them supported in next stable release, expected for the end of 2005. See [http://cvs.cairographics.org/*checkout*/cairo/ROADMAP Cairo ROADMAP]
 
** A way to test cairo capabilities would be to use librsvg HEAD. See Dom Lachowicz [http://www.advogato.org/person/cinamod/diary.html?start=91 blog entry].
* Make printing work more efficiently and reliably
* Enhance file manager
* PDF Export
* Investigate ps2ai, pstoedit and ai2svg conversion options (potential EPS support?)
* Investigate ps2ai, pstoedit and ai2svg conversion options (potential EPS support?)
* Import of native Adobe Illustrator files
* Import of native Adobe Illustrator files, which have been PDF based since Illustrator 10 (at least). 
* Other RFE's related to Import/Export
* Other RFE's related to Import or Export?
* Add extension for use of VDX2SVG (http://vdxtosvg.sourceforge.net/)
* Add extension for use of [http://vdxtosvg.sourceforge.net/ VDX2SVG]
* Add extension for use of PDF2SVG (http://www.solidcode.net/pdf2svg/)
** (This is an unrelated file format... -- Bryce)
* WebDAV/FTP support via GNOME-VFS, Neon, or the like
* UberConverter
 
=== Milestone 12 - Style Refactoring - Inkscape 0.46 ===
 
* Eliminate use of the style.h types in as much of codebase as possible, particularly display/*.
* Change to use of GQuarks instead of #defines where feasible
* Editable toolbars (libegg)
 
=== Milestone 13 - Bug Hunt & RFE's - Inkscape 0.47 ===
 
* Reduce open/total RFE ratio to 40%
* Reduce open/total bug ratio to 5%
 
=== Milestone 14 - Drawing Feature Enhancements - Inkscape 0.48 ===
 
* Object-to-object snapping
* (DONE) Markers
* Enhanced grid system
* Inter-application cut-and-paste
* Inter-application drag-and-drop
* Clipart manager GUI
* Hyperlinking
* (DONE) Load-from-URL
 
=== Milestone 15 - Style Rewrite & libcroco - Inkscape 0.49 ===
 
* Replace style.cpp entirely, with a clearer and cleaner version.
* (DONE) Integrate use of libcroco for handling Cascading Style Sheets.
 
* Palettes
 
(suggestion: having custom palletes, like from Gnome )
(suggestion: accuraced palettes from colour norms, like Pantone, Trumatch, Focoltone, Toyo, etc. (since lots of people uses it, specially professionally) - problem: some are patented/copyrighted, which seems each norm company like this must be contacted for authorization (?) - as well, is also an open-source colour norm standard welcome? (which works on both video/printing outputs, like Pantone seems to be?) )
 
 
=== Milestone 16 - Cairoification - Inkscape 0.50 ===
 
* Prereq: Is renderer immune to the same kinds of numerical problems we see with our new renderer, libnr, or libart?
* Create a Cairo-based SVG Canvas library
 
=== Milestone 17 - Animation Conceptualization - Inkscape 0.51 ===
 
* Prereq: We need a conceptualization of how it should work
* Currently, part of the concept discussion is at [[Animation-(Timeline)|here]]
 
 
=== Milestone 18 - Fonts Revisited - Inkscape 0.52 ===
 
* Reenable fuzzy font matching [bb]
* (DONE) Bidirectional text in Pango needs attention
* (DONE) MakeVertical in Pango needs attention
 
=== Milestone 19 - Palettes - Inkscape 0.53 ===
 
* Implement LittleCMS as color management system
* (DONE) Create a swatches dialog
 
=== Milestone 20 - Full Animation Support - Inkscape 0.54 ===
 
=== Milestone 21 - RFE's - Inkscape 0.55 ===
 
* Reduce open/total RFE ratio to 30%
 


=== Milestone [Future] ===
* Investigate performance measurement testing for Inkscape
* Convert all tabs into spaces (convert tabs to 4 spaces)
* Rename all 'SPFooBar' routines to 'FooBar' and put into namespaces
** (DONE) dialogs folder
* Investigate SVG docs where SVG is not the default namespace used at the root -- e.g. <svg:svg xmlns:svg="http://...etc"><svg:rect.../><blah></svg:svg> -- <blah> would end up getting shoehorned into the svg namespace
* Write an Internal DTD subset describing the custom Inkscape XML elements, for validation against SVG DTD
* Ensure Inkscape does not throw away the internal DTD subsets of documents it reads
* Start thinking about 1.0 when major functionality gaps are closed ((BASICALLY DONE) layers, (DONE) color palette, (DONE) gradient tool, mask tool, (DONE) patterns, (DONE) text on path and in shape, (DONE) text selection, perspective transforms, SVG filters, scripting, path editing, shaped strokes)
* Implement preliminary support for iso & hex grid [njh]
* Implement perspective transformations via PerspectiveObject
* Improve freehand curve smoothness [pjrm, paraprax]
* Review X1-1GUITest on SF
* Review usability links at http://openusability.org/docman/?group_id=52
* Review usability links at http://openusability.org/docman/?group_id=57


== PastMilestones ==
* I'd like to suggest looking at Xpdf or ghostview as possible bases to build a pdftosvg tool with. They both come with command line tools to convert pdf files to other formats. - Ulf Erikson
** This is what we do currently iirc - Bryce
** Uh, okay. I must have missed that. What tool do you use? I know about [http://www.solidcode.net/pdf2svg/ pdf2svg], [http://www.sodipodi.com/index.php3?section=download/tools ill2svg] and [http://www.xs4all.nl/~hanwen/public/software/ai2svg.py ai2svg]. Neither seem to be based on a pdf reader/viewer. I have never tried the (Windows only?) SVG plugin for [http://www.pstoedit.net/pstoedit pstoedit] and the [http://www.eprg.org/projects/SVG/ps2svg/ ps2svg] SVG driver for Ghostscript doesn't seem to be available at all. Anyway, I see now that you list [http://poppler.freedesktop.org/ Poppler] (which a pdf library based on Xpdf) as something worth looking at, so I guess you can remove my comment all together. Let me know if you wish to try my Xpdf code with Poppler. - Ulf  (Could we not use the mailing list for discussions?)

Revision as of 07:31, 17 December 2005

Problem

Bryce has pointed out the #1 feature need for Inkscape right now is strong support for Adobe Portable Document Format (PDF) and Postscript (PS) in his 2005.11.30 email to the Inkscape mailing lists. This ConsensusPoll exists to enable the community to efficiently create and commit to a plan of action to resolve this issue.

Contract

  • >= 20 inkscape enthusiasts
  • >= 4 developers with commit access
  • >= 95% yes
  • all conditions in plan are met
  • 72 hour GO timer
  • 80% cloture

ContractExplanation

Because this contract defines what it means to participate in this poll it will never be changed. If it turns out to be inadequate, this poll must be canceled and a new poll with a new contract must be drafted.

Yes-No Poll

Participation in this poll is open to anyone who wants to participate.

Voting yes in this poll means that you believe the community created plan is ready for implementation, and that you will do your part to support its execution. Voting no in this poll means that you have outstanding concerns about the community created plan. You can change your vote at any time. All votes are transparent so that those voting yes can listen to the concerns of those voting no.

No ... BrandonCsSanders    - Success needs to be defined (e.g., if all 20 test cases are passed ...)
No ... BryceHarrington     - I will pledge $50 once someone defines how we do pledges :-)
No ... AlexandreProkoudine - There is no plan yet
No ... ColinMarquardt      - There is no plan yet
No ... EricWilhelm         - The plan needs salt
No ... MenTaLguY           - This isn't much of a plan...
No ... JonCruz             - Plan? Not quite yet
No ... JonPhillips         - no plan...
No ... NicuBuculei         - so far the plan is weak
No ... RalfWStephan        - isolated thoughts don't make a plan, pledge 5% of SoC money amount used for it
No ... AndyFitzsimon       - I will also pledge $50 once someone defines how we do pledges.
No ... TuukkaPasanen       - There isn't good plan yet.
No ... EricJonas           - There is no plan

(If you are voting no because the plan is incomplete, please describe what you'd like to see added or changed.)

Pledges

$50 ... BryceHarrington  - I will pledge $50 once someone defines how we do pledges :-)
$50 ... AndyFitzsimon    - I will also pledge $50 once someone defines how we do pledges.
??? ... RalfWStephan     - pledge 5% of SoC money amount used for it (how much is this?)
$50 ... BrandonCsSanders - once the plan is done
$100 ... EricJonas       - Just let me know how to pledge

Plan

  1. Describe the Current PDF Support
  2. Identify Required PDF Support
  3. Assemble a few dozen examples to use as PDF test cases
  4. Document how each of the current existing projects (potential starting points) performs on the suite of test cases
  5. Determine timeframe
    1. Start some time in early 2006?
    2. Expected completion some time in mid/late 2006?
  6. Select developer with the right skillset
    1. C/C++, XML
    2. PDF file format
    3. SVG file format
    4. Able to work under (U.S.) contract
    5. /Other skillset requirements?/
  7. Determine what funding is needed to enable them to complete the work
  8. Establish a contract with the selected developer to perform the work
  9. When the developer is done, verify that all test cases pass, then pay developer

Background Information

Adequate Technical Solutions

What solutions would be fine?

  • Library that integrates directly in to inkscape (and scribus, ...)
    • Use Cairo as the presentation layer and use its support for pdf/ps
      • See Poppler for PDF import.
      • This may be a first step towards an eventual migration of the backend renderer to Cairo
    • Pull out the scribus pdf support into a libpdf that can be shared by both scribus and Inkscape
      • Requires conversion of Qt-isms into more neutral widgetset-independent style
  • Extend an existing standalone (filter) tool that can be bundled with inkscape

Possible Strategies

  • Raise money and hire a developer to implement it
    • Collect pledges, once we are over threshold collect funds (http://fundable.org/)
      • What should the threshhold be? $2000? $5000?
      • Still too early to decide what the threshold should be. We need to know how much it will cost first.
    • Need to decide what the funds would be spent on ahead of time
      • 10-20% - Tester to collect test cases and put together a test suite for developer to use
      • 70-80% - Developer to write the code, document it, and make it pass the tests
      • 5-10% - Liaison to handle the paperwork, collect/distribute funds, track/report progress, and verify the work has been completed adequately
    • Mercenaries that would do this for us?
      • BrandonCsSanders ... I'd do it for $2000, half up front, half once it meets spec. Caveat: it would take me six months to complete because my plate is pretty full right now and I'll be snatching a week here and a week there.
      • EricWilhelm ... This will be a lovely fit for the UberConverter. I'm guessing $5k would get it to about the same level as XAR and SVG in chromista. Caveat: Those aren't done yet. Check back in Jan. I would also be happy to oversee/direct the work of someone else wanting to write this as a pair of UberConverter connectors (crs2pdf, pdf2crs.)
      • /other mercenaries?/
  • Hold a BarnRaising
  • Wait for a volunteer to get inspired and just do it


Questions/Brainstorms

  • What about what inkscape earned through the Google Summer of Code? What's the status of this?
    • $2000 earned; there has been no plan or consensus for what to use it for
  • Does Cairo have PDF export already? What about to use cairo for just this job? and later then use cairo for the whole presentation layer? Instead of creating an interims solution?
    • Yes, Cairo has PDF export capabilities; it's unknown if it's significantly better than our current (poor) pdf export functionality
    • Cairo Postscript and PDF backends are still experimental and disabled by default in current stable release, but plan is to make them supported in next stable release, expected for the end of 2005. See Cairo ROADMAP
    • A way to test cairo capabilities would be to use librsvg HEAD. See Dom Lachowicz blog entry.
  • Investigate ps2ai, pstoedit and ai2svg conversion options (potential EPS support?)
  • Import of native Adobe Illustrator files, which have been PDF based since Illustrator 10 (at least).
  • Other RFE's related to Import or Export?
  • Add extension for use of VDX2SVG
    • (This is an unrelated file format... -- Bryce)
  • UberConverter


  • I'd like to suggest looking at Xpdf or ghostview as possible bases to build a pdftosvg tool with. They both come with command line tools to convert pdf files to other formats. - Ulf Erikson
    • This is what we do currently iirc - Bryce
    • Uh, okay. I must have missed that. What tool do you use? I know about pdf2svg, ill2svg and ai2svg. Neither seem to be based on a pdf reader/viewer. I have never tried the (Windows only?) SVG plugin for pstoedit and the ps2svg SVG driver for Ghostscript doesn't seem to be available at all. Anyway, I see now that you list Poppler (which a pdf library based on Xpdf) as something worth looking at, so I guess you can remove my comment all together. Let me know if you wish to try my Xpdf code with Poppler. - Ulf (Could we not use the mailing list for discussions?)