diff options
Diffstat (limited to 'src/extension/internal/cairo-pdf-out.cpp')
| -rw-r--r-- | src/extension/internal/cairo-pdf-out.cpp | 65 |
1 files changed, 57 insertions, 8 deletions
diff --git a/src/extension/internal/cairo-pdf-out.cpp b/src/extension/internal/cairo-pdf-out.cpp index ed710346f..455230dad 100644 --- a/src/extension/internal/cairo-pdf-out.cpp +++ b/src/extension/internal/cairo-pdf-out.cpp @@ -61,7 +61,20 @@ pdf_print_document_to_file(SPDocument *doc, gchar const *filename, unsigned int context.module = mod; /* fixme: This has to go into module constructor somehow */ /* Create new arena */ - mod->base = SP_ITEM(sp_document_root(doc)); + const gchar* exportId = mod->get_param_string("exportId"); + bool exportDrawing = mod->get_param_bool("exportDrawing"); + if (exportId && strcmp(exportId, "")) { + // we want to export the given item only, not page + mod->base = SP_ITEM(doc->getObjectById(exportId)); + mod->set_param_bool("pageBoundingBox", FALSE); + } else { + // we want to export the entire document from root + mod->base = SP_ITEM(sp_document_root(doc)); + if (exportDrawing) + mod->set_param_bool("pageBoundingBox", FALSE); + else + mod->set_param_bool("pageBoundingBox", TRUE); + } mod->arena = NRArena::create(); mod->dkey = sp_item_display_key_new(1); mod->root = sp_item_invoke_show(mod->base, mod->arena, mod->dkey, SP_ITEM_SHOW_DISPLAY); @@ -117,7 +130,7 @@ CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g ext->set_param_bool("textToPath", new_textToPath); } catch(...) { - g_warning("Parameter <textToPath> might not exists"); + g_warning("Parameter <textToPath> might not exist"); } bool old_blurToBitmap = FALSE; @@ -128,7 +141,29 @@ CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g ext->set_param_bool("blurToBitmap", new_blurToBitmap); } catch(...) { - g_warning("Parameter <blurToBitmap> might not exists"); + g_warning("Parameter <blurToBitmap> might not exist"); + } + + const gchar* old_exportId = NULL; + const gchar* new_exportId = NULL; + try { + old_exportId = ext->get_param_string("exportId"); + new_exportId = mod->get_param_string("exportId"); + ext->set_param_string("exportId", new_exportId); + } + catch(...) { + g_warning("Parameter <exportId> might not exist"); + } + + bool old_exportDrawing = NULL; + bool new_exportDrawing = NULL; + try { + old_exportDrawing = ext->get_param_bool("exportDrawing"); + new_exportDrawing = mod->get_param_bool("exportDrawing"); + ext->set_param_bool("exportDrawing", new_exportDrawing); + } + catch(...) { + g_warning("Parameter <exportDrawing> might not exist"); } gchar * final_name; @@ -140,13 +175,25 @@ CairoPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const g ext->set_param_bool("blurToBitmap", old_blurToBitmap); } catch(...) { - g_warning("Parameter <blurToBitmap> might not exists"); + g_warning("Parameter <blurToBitmap> might not exist"); } try { ext->set_param_bool("textToPath", old_textToPath); } catch(...) { - g_warning("Parameter <textToPath> might not exists"); + g_warning("Parameter <textToPath> might not exist"); + } + try { + ext->set_param_string("exportId", old_exportId); + } + catch(...) { + g_warning("Parameter <exportId> might not exist"); + } + try { + ext->set_param_bool("exportDrawing", old_exportDrawing); + } + catch(...) { + g_warning("Parameter <exportDrawing> might not exist"); } if (!ret) @@ -172,11 +219,13 @@ CairoPdfOutput::init (void) "<id>org.inkscape.output.pdf.cairo</id>\n" "<param name=\"PDFversion\" gui-text=\"" N_("Restrict to PDF version") "\" type=\"enum\" >\n" "<item value='PDF14'>" N_("PDF 1.4") "</item>\n" - "</param>\n" + "</param>\n" "<param name=\"textToPath\" gui-text=\"" N_("Convert texts to paths") "\" type=\"boolean\">false</param>\n" "<param name=\"blurToBitmap\" gui-text=\"" N_("Convert blur effects to bitmaps") "\" type=\"boolean\">false</param>\n" - "<param name=\"resolution\" gui-text=\"" N_("Preferred resolution (DPI) of bitmaps") "\" type=\"int\" min=\"72\" max=\"2400\">90</param>\n" - "<output>\n" + "<param name=\"resolution\" gui-text=\"" N_("Preferred resolution (DPI) of bitmaps") "\" type=\"int\" min=\"72\" max=\"2400\">90</param>\n" + "<param name=\"exportDrawing\" gui-text=\"" N_("Export drawing, not page") "\" type=\"boolean\">false</param>\n" + "<param name=\"exportId\" gui-text=\"" N_("Limit export to the object with ID") "\" type=\"string\"></param>\n" + "<output>\n" "<extension>.pdf</extension>\n" "<mimetype>application/pdf</mimetype>\n" "<filetypename>" N_("PDF via Cairo (*.pdf)") "</filetypename>\n" |
