Re: PDF image import
Otfried Cheong <[email protected]>
| Newsgroups | gmane.comp.graphics.ipe.general |
|---|---|
| Organization | Ipe HQ |
| Message-ID | <[email protected]> |
On 25/03/14 00:46, Frank Siegert wrote: > But coming back to my original question of a *universal* PDF import > tool: how are *raster* images currently embedded into the PDF output > technically (via Latex' includegraphics?) and displayed on screen (via > Qt's QImage?)? > Would it be possible to do something similar for PDFs, i.e. include > them in the PDF output through includegraphics and use poppler-qt's > renderToImage[0] for displaying on screen? PDF is a complex file format. A PDF document consists of a number of objects, that are linked together as a directed graph. Ipe handles this file format itself - it does not use pdflatex to create the output file (when I wrote Ipe 6, pdflatex was simply not powerful enough to do this - today this would be possible). Inserting a raster image is easy: Ipe reads the bitmap, packages it into a PDF object, includes this object in the PDF output, and references it from the page stream. Including a PDF file is several orders of magnitude harder: You can't just take the PDF file and insert it in your document. You have to start with the contents stream that you want to include, and then figure out all its dependencies (objects referred, directly or indirectly, from it). All these objects need to be copied into the PDF document for the inclusion to work. This is how \includegraphics in pdflatex works - I helped work on that code many years ago, so it's certainly doable, but a sizeable project. The Ipe rendering pipeline doesn't use Qt at all. Qt is just a thin layer for the user interface, and can be easily replaced (and probably will sooner or later, for instance to make an Android port of Ipe); so poppler-Qt itself is not useful. The poppler library itself has a cairo backend, so it should be possible to render a PDF page at the right scaling into the Ipe document. Using poppler will not be straightforward, as we don't have a PDF document to work with, just a loose collection of PDF objects. This opens a can of worms - using Poppler's internal structures makes Ipe depend on any changes in Poppler (and already updating pdftoipe when Poppler changes takes time). Poppler is a large library, and I'm hesitant to add such a dependency to Ipe. I am currently experimenting with adding more complete support for the PDF operators in Ipe text objects. In the end, I want to support pgf and tikz inside text objects as much as possible. A lot of pgf and tikz functionality already works in the PDF output, as it's just linear PDF operators, but it's not yet displayed correctly on the screen. I can already see that for more complicated tikz/pgf usage Ipe will have to copy resources of the PDF object into the output (as described above). When this is implented, using \includegraphics inside text objects to include a PDF document would work as well. However, it would not be able to display your plot correctly, because what pstricks does there is just too weird. (The output PDF should be correct at that point.) But don't hold your breath - getting that far will take a while. Cheers, Otfried