You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi Felix,
I could not help but notice that you recently added SVG support to printpdf using my svg2pdf crate (thanks!).
Converting an SVG to a PDF often requires more than a single content stream/object. svg2pdf heavily uses the /Do operator to draw other XObjects and references many objects through the Resources dictionary of the page. printpdf currently discards all of the svg2pdf output except for the main content stream.
This means that SVGs using the features listed below will produce content streams with broken references:
transparency of any kind, be it fill or stroke opacity or whole groups
gradients
patterns
masks
external images
some transformed groups
filters (e.g. blend modes) -- if I'll ever support those 😬
To fix this, printpdf would have to collect all objects in the Page's Resources dictionary and the Resources dictionary of all referenced XObjects recursively and carry them over to the target file.
In order to reproduce the bug, I converted the attached SVG to a PDF file with printpdf and a standalone svg2pdf setup. The printpdf result cannot be opened in Acrobat and only shows a solid orange rectangle in Pdfium while the svg2pdf output reproduces the output of an SVG viewer.
I suspected that, but I personally just use this to create maps and to instantiate SVG symbols in my map (without bloating the file size):
For my purpose it's okay, since I only use simple symbols (basic paths, etc.). Right now I don't need to support gradients or complex symbols, it's just important that I can use the SVG format, so that I can edit symbol sets using an SVG editor.
Thanks for making svg2pdf by the way, placing SVG symbols in the map was the last problem I had with putting a proper map together.
Is there a way to mitigate that ? by a transformation of the source SVG by any chance ?
I'd like to use an SVG in printpdf which doesn't render well, while svg2pdf renders it correctly.
Hi Felix,
I could not help but notice that you recently added SVG support to
printpdf
using mysvg2pdf
crate (thanks!).Converting an SVG to a PDF often requires more than a single content stream/object.
svg2pdf
heavily uses the/Do
operator to draw other XObjects and references many objects through theResources
dictionary of the page.printpdf
currently discards all of thesvg2pdf
output except for the main content stream.This means that SVGs using the features listed below will produce content streams with broken references:
To fix this,
printpdf
would have to collect all objects in thePage
'sResources
dictionary and theResources
dictionary of all referenced XObjects recursively and carry them over to the target file.In order to reproduce the bug, I converted the attached SVG to a PDF file with
printpdf
and a standalonesvg2pdf
setup. Theprintpdf
result cannot be opened in Acrobat and only shows a solid orange rectangle in Pdfium while thesvg2pdf
output reproduces the output of an SVG viewer.The original SVG (on OneDrive because GitHub does not allow the file format in issues)
The
printpdf
result (pardon the margins)The
svg2pdf
resultThe text was updated successfully, but these errors were encountered: