summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/pdfinput/pdf-input.cpp
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2015-05-29 11:15:32 +0000
committertavmjong-free <tavmjong@free.fr>2015-05-29 11:15:32 +0000
commit74b8a70899955af0a132a1eb38bbe16b40110c73 (patch)
tree901139209fbceba529312ad4927696db2610e224 /src/extension/internal/pdfinput/pdf-input.cpp
parentclean up a couple of clang warnings (diff)
downloadinkscape-74b8a70899955af0a132a1eb38bbe16b40110c73.tar.gz
inkscape-74b8a70899955af0a132a1eb38bbe16b40110c73.zip
Use more fine-grain fallbacks for Poppler/Cairo PDF imports.
(bzr r14184)
Diffstat (limited to 'src/extension/internal/pdfinput/pdf-input.cpp')
-rw-r--r--src/extension/internal/pdfinput/pdf-input.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp
index 1cd409a0a..363061734 100644
--- a/src/extension/internal/pdfinput/pdf-input.cpp
+++ b/src/extension/internal/pdfinput/pdf-input.cpp
@@ -881,6 +881,13 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) {
Glib::ustring output;
cairo_surface_t* surface = cairo_svg_surface_create_for_stream(Inkscape::Extension::Internal::_write_ustring_cb,
&output, width, height);
+
+ // This magical function results in more fine-grain fallbacks. In particular, a mesh
+ // gradient won't necessarily result in the whole PDF being rasterized. Of course, SVG
+ // 1.2 never made it as a standard, but hey, we'll take what we can get. This trick was
+ // found by examining the 'pdftocairo' code.
+ cairo_svg_surface_restrict_to_version( surface, CAIRO_SVG_VERSION_1_2 );
+
cairo_t* cr = cairo_create(surface);
poppler_page_render_for_printing(page, cr);