diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp
index bd25706520bacd7c97ef663c8f3a2eb124074fca..e8eff20b7ab6eedc7a88500f004a9cdc953acab8 100644 (file)
* Authors:
* Ted Gould <ted@gould.cx>
* Ulf Erikson <ulferikson@users.sf.net>
* Authors:
* Ted Gould <ted@gould.cx>
* Ulf Erikson <ulferikson@users.sf.net>
+ * Johan Engelen <goejendaagh@zonnet.nl>
*
*
- * Copyright (C) 2004-2006 Authors
+ * Copyright (C) 2004-2010 Authors
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#include "cairo-renderer-pdf-out.h"
#include "cairo-render-context.h"
#include "cairo-renderer.h"
#include "cairo-renderer-pdf-out.h"
#include "cairo-render-context.h"
#include "cairo-renderer.h"
+#include "latex-text-renderer.h"
#include <print.h>
#include "extension/system.h"
#include "extension/print.h"
#include <print.h>
#include "extension/system.h"
#include "extension/print.h"
#include "sp-item.h"
#include "sp-root.h"
#include "sp-item.h"
#include "sp-root.h"
+#include <2geom/matrix.h>
+
namespace Inkscape {
namespace Extension {
namespace Internal {
namespace Inkscape {
namespace Extension {
namespace Internal {
static bool
pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int level,
static bool
pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int level,
- bool texttopath, bool filtertobitmap, int resolution,
+ bool texttopath, bool omittext, bool filtertobitmap, int resolution,
const gchar * const exportId, bool exportDrawing, bool exportCanvas)
{
sp_document_ensure_up_to_date(doc);
const gchar * const exportId, bool exportDrawing, bool exportCanvas)
{
sp_document_ensure_up_to_date(doc);
@@ -74,14 +78,16 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int
/* Create new arena */
NRArena *arena = NRArena::create();
/* Create new arena */
NRArena *arena = NRArena::create();
+ nr_arena_set_renderoffscreen (arena);
unsigned dkey = sp_item_display_key_new(1);
unsigned dkey = sp_item_display_key_new(1);
- NRArenaItem *root = sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY);
+ sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY);
/* Create renderer and context */
CairoRenderer *renderer = new CairoRenderer();
CairoRenderContext *ctx = renderer->createContext();
ctx->setPDFLevel(level);
ctx->setTextToPath(texttopath);
/* Create renderer and context */
CairoRenderer *renderer = new CairoRenderer();
CairoRenderContext *ctx = renderer->createContext();
ctx->setPDFLevel(level);
ctx->setTextToPath(texttopath);
+ renderer->_omitText = omittext;
ctx->setFilterToBitmap(filtertobitmap);
ctx->setBitmapResolution(resolution);
ctx->setFilterToBitmap(filtertobitmap);
ctx->setBitmapResolution(resolution);
@@ -97,28 +103,26 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int
/* Release arena */
sp_item_invoke_hide(base, dkey);
/* Release arena */
sp_item_invoke_hide(base, dkey);
- nr_arena_item_unref(root);
nr_object_unref((NRObject *) arena);
nr_object_unref((NRObject *) arena);
-/* end */
+
renderer->destroyContext(ctx);
delete renderer;
return ret;
}
renderer->destroyContext(ctx);
delete renderer;
return ret;
}
-
/**
\brief This function calls the output module with the filename
\param mod unused
\param doc Document to be saved
/**
\brief This function calls the output module with the filename
\param mod unused
\param doc Document to be saved
- \param uri Filename to save to (probably will end in .pdf)
+ \param filename Filename to save to (probably will end in .pdf)
The most interesting thing that this function does is just attach
an '>' on the front of the filename. This is the syntax used to
tell the printing system to save to file.
*/
void
The most interesting thing that this function does is just attach
an '>' on the front of the filename. This is the syntax used to
tell the printing system to save to file.
*/
void
-CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const gchar *uri)
+CairoRendererPdfOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar const *filename)
{
Inkscape::Extension::Extension * ext;
unsigned int ret;
{
Inkscape::Extension::Extension * ext;
unsigned int ret;
@@ -135,7 +139,7 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc,
// level = 1;
}
catch(...) {
// level = 1;
}
catch(...) {
-// g_warning("Parameter <PDFversion> might not exists");
+// g_warning("Parameter <PDFversion> might not exist");
}
bool new_textToPath = FALSE;
}
bool new_textToPath = FALSE;
@@ -143,7 +147,15 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc,
new_textToPath = mod->get_param_bool("textToPath");
}
catch(...) {
new_textToPath = mod->get_param_bool("textToPath");
}
catch(...) {
- g_warning("Parameter <textToPath> might not exists");
+ g_warning("Parameter <textToPath> might not exist");
+ }
+
+ bool new_textToLaTeX = FALSE;
+ try {
+ new_textToLaTeX = mod->get_param_bool("textToLaTeX");
+ }
+ catch(...) {
+ g_warning("Parameter <textToLaTeX> might not exist");
}
bool new_blurToBitmap = FALSE;
}
bool new_blurToBitmap = FALSE;
@@ -151,7 +163,7 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc,
new_blurToBitmap = mod->get_param_bool("blurToBitmap");
}
catch(...) {
new_blurToBitmap = mod->get_param_bool("blurToBitmap");
}
catch(...) {
- g_warning("Parameter <blurToBitmap> might not exists");
+ g_warning("Parameter <blurToBitmap> might not exist");
}
int new_bitmapResolution = 72;
}
int new_bitmapResolution = 72;
@@ -159,7 +171,7 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc,
new_bitmapResolution = mod->get_param_int("resolution");
}
catch(...) {
new_bitmapResolution = mod->get_param_int("resolution");
}
catch(...) {
- g_warning("Parameter <resolution> might not exists");
+ g_warning("Parameter <resolution> might not exist");
}
const gchar *new_exportId = NULL;
}
const gchar *new_exportId = NULL;
@@ -167,36 +179,45 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc,
new_exportId = mod->get_param_string("exportId");
}
catch(...) {
new_exportId = mod->get_param_string("exportId");
}
catch(...) {
- g_warning("Parameter <exportId> might not exists");
+ g_warning("Parameter <exportId> might not exist");
}
bool new_exportDrawing = FALSE;
try {
}
bool new_exportDrawing = FALSE;
try {
- new_exportDrawing = mod->get_param_bool("exportDrawing");
+ new_exportDrawing = mod->get_param_bool("areaDrawing");
}
catch(...) {
}
catch(...) {
- g_warning("Parameter <exportDrawing> might not exists");
+ g_warning("Parameter <areaDrawing> might not exist");
}
bool new_exportCanvas = FALSE;
try {
}
bool new_exportCanvas = FALSE;
try {
- new_exportCanvas = mod->get_param_bool("exportCanvas");
+ new_exportCanvas = mod->get_param_bool("areaPage");
}
catch(...) {
}
catch(...) {
- g_warning("Parameter <exportCanvas> might not exists");
+ g_warning("Parameter <exportCanvas> might not exist");
}
}
- gchar * final_name;
- final_name = g_strdup_printf("> %s", uri);
- ret = pdf_render_document_to_file(doc, final_name, level,
- new_textToPath, new_blurToBitmap, new_bitmapResolution,
- new_exportId, new_exportDrawing, new_exportCanvas);
- g_free(final_name);
+ // Create PDF file
+ {
+ gchar * final_name;
+ final_name = g_strdup_printf("> %s", filename);
+ ret = pdf_render_document_to_file(doc, final_name, level,
+ new_textToPath, new_textToLaTeX, new_blurToBitmap, new_bitmapResolution,
+ new_exportId, new_exportDrawing, new_exportCanvas);
+ g_free(final_name);
+
+ if (!ret)
+ throw Inkscape::Extension::Output::save_failed();
+ }
- if (!ret)
- throw Inkscape::Extension::Output::save_failed();
+ // Create LaTeX file (if requested)
+ if (new_textToLaTeX) {
+ ret = latex_render_document_text_to_file(doc, filename, new_exportId, new_exportDrawing, new_exportCanvas, true);
- return;
+ if (!ret)
+ throw Inkscape::Extension::Output::save_failed();
+ }
}
#include "clear-n_.h"
}
#include "clear-n_.h"
"<_item value='PDF14'>" N_("PDF 1.4") "</_item>\n"
"</param>\n"
"<param name=\"textToPath\" gui-text=\"" N_("Convert texts to paths") "\" type=\"boolean\">false</param>\n"
"<_item value='PDF14'>" N_("PDF 1.4") "</_item>\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"
- "<param name=\"exportDrawing\" gui-text=\"" N_("Export drawing, not page") "\" type=\"boolean\">false</param>\n"
- "<param name=\"exportCanvas\" gui-text=\"" N_("Export canvas") "\" type=\"boolean\">false</param>\n"
+ "<param name=\"textToLaTeX\" gui-text=\"" N_("PDF+LaTeX: Omit text in PDF, and create LaTeX file") "\" type=\"boolean\">false</param>\n"
+ "<param name=\"blurToBitmap\" gui-text=\"" N_("Rasterize filter effects") "\" type=\"boolean\">true</param>\n"
+ "<param name=\"resolution\" gui-text=\"" N_("Resolution for rasterization (dpi)") "\" type=\"int\" min=\"1\" max=\"10000\">90</param>\n"
+ "<param name=\"areaDrawing\" gui-text=\"" N_("Export area is drawing") "\" type=\"boolean\">false</param>\n"
+ "<param name=\"areaPage\" gui-text=\"" N_("Export area is 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"
"<param name=\"exportId\" gui-text=\"" N_("Limit export to the object with ID") "\" type=\"string\"></param>\n"
"<output>\n"
"<extension>.pdf</extension>\n"