That looks very promising, thank you.<br><br><div class="gmail_quote">On 4 November 2011 23:23, Dominic Lachowicz <span dir="ltr">&lt;<a href="mailto:domlachowicz@gmail.com">domlachowicz@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi Todd,<br>
<br>
You&#39;re in the best position to comment on the suitability of the<br>
approaches. I really don&#39;t know what your goal is.<br>
<br>
Having worked a bit on the librsvg, Cairo, and poppler projects, I<br>
know that one can render a poppler page to a Cairo object via the<br>
poppler_page_render() function. And that Cairo supports writing to SVG<br>
surfaces, preserving all of the vector goodness (when possible) that<br>
you seem to expect.<br>
<br>
<a href="http://www.cairographics.org/manual/cairo-SVG-Surfaces.html" target="_blank">http://www.cairographics.org/manual/cairo-SVG-Surfaces.html</a><br>
<br>
You can test this out using the &quot;pdftocairo&quot; command line tool without<br>
needing to write a line of code.<br>
<br>
I believe that one can do something similar with the Qt backend, but<br>
that&#39;s outside of my area of expertise.<br>
<br>
I hope that helps,<br>
Dom<br>
<div class="HOEnZb"><div class="h5"><br>
On Fri, Nov 4, 2011 at 7:58 AM, Todd Hubers &lt;<a href="mailto:todd.hubers@alivate.com.au">todd.hubers@alivate.com.au</a>&gt; wrote:<br>
&gt; Hi Dom,<br>
&gt; You can probably tell me :) I&#39;m not claiming to be a poppler genius. Please<br>
&gt; do elaborate on the suitability the CairoOutputDevice to generate an SVG<br>
&gt; (remembering that SVGs are favoured for their vector ability for text, lines<br>
&gt; and filled shapes).<br>
&gt;<br>
&gt; Thanks, Todd.<br>
&gt;<br>
&gt; On 4 November 2011 22:55, Dominic Lachowicz &lt;<a href="mailto:domlachowicz@gmail.com">domlachowicz@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Just out of curiosity, how would the proposed SVGOutputDevice differ<br>
&gt;&gt; from using (say) the existing CairoOutputDevice that was configured to<br>
&gt;&gt; write to SVG? That can already be accomplished today.<br>
&gt;&gt;<br>
&gt;&gt; Thanks,<br>
&gt;&gt; Dom<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Nov 4, 2011 at 7:38 AM, Todd Hubers &lt;<a href="mailto:todd.hubers@alivate.com.au">todd.hubers@alivate.com.au</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; Alec, I&#39;m quite sold on the SVG idea. It is self contained and can even<br>
&gt;&gt; &gt; work<br>
&gt;&gt; &gt; outside the browser.<br>
&gt;&gt; &gt; Josh, it would seem that the HTMLOutputDevice is the better candidate<br>
&gt;&gt; &gt; for<br>
&gt;&gt; &gt; SVG. HTML would be a good interim solution as well, however with SVG,<br>
&gt;&gt; &gt; everything is packaged into a single file as a package. With HTML the<br>
&gt;&gt; &gt; browser is making repeated calls back to the web server (for image<br>
&gt;&gt; &gt; resources), but with SVG it&#39;s naturally all together. You can also<br>
&gt;&gt; &gt; achieve<br>
&gt;&gt; &gt; effects like gradients in SVG quite easily and is better supported by<br>
&gt;&gt; &gt; older<br>
&gt;&gt; &gt; browsers than alternative approaches to getting PDF into the browser.<br>
&gt;&gt; &gt; I am interested in seeing the latest version of the HTML solution. I may<br>
&gt;&gt; &gt; attempt some preliminary SVG rendering.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Back on the topic of &quot;Data&quot; output device. I&#39;m already using XML for RTF<br>
&gt;&gt; &gt; output (I&#39;m doing this in my language of choice - C# though so it&#39;s not<br>
&gt;&gt; &gt; an<br>
&gt;&gt; &gt; easy task to contribute this back to poppler). It&#39;s true that direct<br>
&gt;&gt; &gt; implementation of device drivers are more efficient, however XML or the<br>
&gt;&gt; &gt; like<br>
&gt;&gt; &gt; do provide a convenient interface very accessible for many programming<br>
&gt;&gt; &gt; languages. I would not expect such a &quot;data&quot; output device to be used by<br>
&gt;&gt; &gt; PDF<br>
&gt;&gt; &gt; viewing applications. However it would be good for all other purposes,<br>
&gt;&gt; &gt; where<br>
&gt;&gt; &gt; such implementations are usually performed in batch processes and the<br>
&gt;&gt; &gt; extra<br>
&gt;&gt; &gt; processing in the presence of multi-threading is readily accepted in<br>
&gt;&gt; &gt; return<br>
&gt;&gt; &gt; for flexibility - that is, a larger community can make use of poppler.<br>
&gt;&gt; &gt; Cheers,<br>
&gt;&gt; &gt; Todd<br>
&gt;&gt; &gt; On 4 November 2011 17:24, Josh Richardson &lt;<a href="mailto:jric@chegg.com">jric@chegg.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Hi Todd,<br>
&gt;&gt; &gt;&gt; Some of us who are working on pdftohtml utility have had similar<br>
&gt;&gt; &gt;&gt; thoughts.<br>
&gt;&gt; &gt;&gt;  It&#39;s on my wish list to completely remove the need for a poppler<br>
&gt;&gt; &gt;&gt; output<br>
&gt;&gt; &gt;&gt; device by utilizing the SVG toolset available in modern browsers.  In<br>
&gt;&gt; &gt;&gt; any<br>
&gt;&gt; &gt;&gt; case, we are achieving high accuracy on Gecko and Webkit browsers with<br>
&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; current version (not merged into the Poppler main repo yet, but I can<br>
&gt;&gt; &gt;&gt; send<br>
&gt;&gt; &gt;&gt; you an invite for a git repo that Alec Taylor made, which has all those<br>
&gt;&gt; &gt;&gt; latest changes.)  I think it might meet your needs as-is, or with some<br>
&gt;&gt; &gt;&gt; tweaks to make it work better on other browsers.<br>
&gt;&gt; &gt;&gt; We are currently extracting the text and fonts for the browser to<br>
&gt;&gt; &gt;&gt; render<br>
&gt;&gt; &gt;&gt; directly, but still must rely on Splash, Cairo, etc. to rasterize other<br>
&gt;&gt; &gt;&gt; graphic operations.  With the way we&#39;ve done it, we have an easy path<br>
&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; change over to SVG, one graphic operation at a time, if you&#39;d be<br>
&gt;&gt; &gt;&gt; interested<br>
&gt;&gt; &gt;&gt; in doing that.<br>
&gt;&gt; &gt;&gt; The idea of a separate &quot;data&quot; device is interesting, but I don&#39;t think<br>
&gt;&gt; &gt;&gt; it&#39;s the right way to go.  In effect, you are talking about changing<br>
&gt;&gt; &gt;&gt; the PDF<br>
&gt;&gt; &gt;&gt; data to XML, and from there to other formats.  I can appreciate the<br>
&gt;&gt; &gt;&gt; sentiment, since PDF is such a difficult format to work with, but<br>
&gt;&gt; &gt;&gt; adding a<br>
&gt;&gt; &gt;&gt; layer of abstraction is just going to make things more complex,<br>
&gt;&gt; &gt;&gt; error-prone,<br>
&gt;&gt; &gt;&gt; and slow.  To note, the current version of pdftohtml creates a valid<br>
&gt;&gt; &gt;&gt; XML-compliant HTML format — actually there&#39;s a small bug, but you<br>
&gt;&gt; &gt;&gt; probably<br>
&gt;&gt; &gt;&gt; get the point.  You can always use the XML-compliant HTML as your<br>
&gt;&gt; &gt;&gt; easier-to-digest &quot;data&quot; format, which also allows us to represent more<br>
&gt;&gt; &gt;&gt; semantics than are available in the original PDF document, and you can<br>
&gt;&gt; &gt;&gt; always extend it with whatever XML tags you need.  For example, I<br>
&gt;&gt; &gt;&gt; extended<br>
&gt;&gt; &gt;&gt; it with an attribute describing bounding boxes for all of the text<br>
&gt;&gt; &gt;&gt; spans.<br>
&gt;&gt; &gt;&gt;  Let me know if you want the repo invite.<br>
&gt;&gt; &gt;&gt; Best, --josh<br>
&gt;&gt; &gt;&gt; From: Todd Hubers &lt;<a href="mailto:todd.hubers@alivate.com.au">todd.hubers@alivate.com.au</a>&gt;<br>
&gt;&gt; &gt;&gt; Date: Thu, 3 Nov 2011 18:13:52 -0700<br>
&gt;&gt; &gt;&gt; To: &quot;<a href="mailto:poppler@lists.freedesktop.org">poppler@lists.freedesktop.org</a>&quot; &lt;<a href="mailto:poppler@lists.freedesktop.org">poppler@lists.freedesktop.org</a>&gt;<br>
&gt;&gt; &gt;&gt; Subject: [poppler] Poppler - SVG Device<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I&#39;m currently using Poppler for Text extraction and using GhostScript<br>
&gt;&gt; &gt;&gt; for<br>
&gt;&gt; &gt;&gt; PDF to Image functionality, all for viewing PDFs online without<br>
&gt;&gt; &gt;&gt; requiring a<br>
&gt;&gt; &gt;&gt; PDF plugin in the browser.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I noticed Mozilla was working on an interesting project, PDF.js<br>
&gt;&gt; &gt;&gt; [<a href="https://wiki.mozilla.org/PDF.js" target="_blank">https://wiki.mozilla.org/PDF.js</a>]. It loads PDF files with pure<br>
&gt;&gt; &gt;&gt; Javascript<br>
&gt;&gt; &gt;&gt; (on a HTML5 compatible browser - probably needs canvas).<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; This is an opportunity for poppler to steam ahead and get some headline<br>
&gt;&gt; &gt;&gt; grabbing exposure. The SVG format is well supported by browsers. PDFs<br>
&gt;&gt; &gt;&gt; are<br>
&gt;&gt; &gt;&gt; portable across systems, however SVGs are very portable (and fast)<br>
&gt;&gt; &gt;&gt; across<br>
&gt;&gt; &gt;&gt; the web.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I propose the building of an SVG Device - PDF to SVG. I am currently<br>
&gt;&gt; &gt;&gt; considering using PDF to XML, to then perform XML to SVG. Given the<br>
&gt;&gt; &gt;&gt; status<br>
&gt;&gt; &gt;&gt; quo, I believe it&#39;s time for PDF to SVG.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I see SVG as a very efficient and therefore powerful web format, I hope<br>
&gt;&gt; &gt;&gt; others in the poppler community will see the potential as I do.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Thanks,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Todd Hubers (BBIT Hons)<br>
&gt;&gt; &gt;&gt; Alivate<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; PS. Perhaps we could then have PDF&gt;Cairo, PDF&gt;SVG, and then tools for<br>
&gt;&gt; &gt;&gt; SVG&gt;XML, SVG&gt;HTML, SVG&gt;Text. In any case it would be good to have<br>
&gt;&gt; &gt;&gt; simply one<br>
&gt;&gt; &gt;&gt; direct rendering device and one &quot;data&quot; device.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; poppler mailing list<br>
&gt;&gt; &gt; <a href="mailto:poppler@lists.freedesktop.org">poppler@lists.freedesktop.org</a><br>
&gt;&gt; &gt; <a href="http://lists.freedesktop.org/mailman/listinfo/poppler" target="_blank">http://lists.freedesktop.org/mailman/listinfo/poppler</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; &quot;I like to pay taxes. With them, I buy civilization.&quot; --  Oliver Wendell<br>
&gt;&gt; Holmes<br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
--<br>
&quot;I like to pay taxes. With them, I buy civilization.&quot; --  Oliver Wendell Holmes<br>
</div></div></blockquote></div><br>