summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/cairo-pdf-out.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/extension/internal/cairo-pdf-out.cpp')
-rw-r--r--src/extension/internal/cairo-pdf-out.cpp65
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"