summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2010-02-20 21:01:12 +0000
committerJohan Engelen <goejendaagh@zonnet.nl>2010-02-20 21:01:12 +0000
commit1c51deb0c68f8358e7db1501b6c0135364758c55 (patch)
treea1b92d8f7135123cba05c9f4432d7d5330ea536c /src
parentNoop: removing and updating comments, fixing indentation (diff)
downloadinkscape-1c51deb0c68f8358e7db1501b6c0135364758c55.tar.gz
inkscape-1c51deb0c68f8358e7db1501b6c0135364758c55.zip
add option to exclude/omit text from the PDF when saving to pdf
(bzr r9101.1.1)
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/cairo-renderer-pdf-out.cpp14
-rw-r--r--src/extension/internal/cairo-renderer.cpp6
-rw-r--r--src/extension/internal/cairo-renderer.h4
3 files changed, 22 insertions, 2 deletions
diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp
index 0598c388a..a62d2cb14 100644
--- a/src/extension/internal/cairo-renderer-pdf-out.cpp
+++ b/src/extension/internal/cairo-renderer-pdf-out.cpp
@@ -48,7 +48,7 @@ CairoRendererPdfOutput::check (Inkscape::Extension::Extension * module)
static bool
pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int level,
- bool texttopath, bool filtertobitmap, int resolution,
+ bool texttopath, bool texttolatex, bool filtertobitmap, int resolution,
const gchar * const exportId, bool exportDrawing, bool exportCanvas)
{
sp_document_ensure_up_to_date(doc);
@@ -83,6 +83,7 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int
CairoRenderContext *ctx = renderer->createContext();
ctx->setPDFLevel(level);
ctx->setTextToPath(texttopath);
+ renderer->_omitText = texttolatex;
ctx->setFilterToBitmap(filtertobitmap);
ctx->setBitmapResolution(resolution);
@@ -146,6 +147,14 @@ CairoRendererPdfOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc,
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;
try {
new_blurToBitmap = mod->get_param_bool("blurToBitmap");
@@ -189,7 +198,7 @@ CairoRendererPdfOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc,
gchar * final_name;
final_name = g_strdup_printf("> %s", filename);
ret = pdf_render_document_to_file(doc, final_name, level,
- new_textToPath, new_blurToBitmap, new_bitmapResolution,
+ new_textToPath, new_textToLaTeX, new_blurToBitmap, new_bitmapResolution,
new_exportId, new_exportDrawing, new_exportCanvas);
g_free(final_name);
@@ -217,6 +226,7 @@ CairoRendererPdfOutput::init (void)
"<_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=\"textToLaTeX\" gui-text=\"" N_("Exclude text, 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"
diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp
index 0e68ae130..6d75c1e5d 100644
--- a/src/extension/internal/cairo-renderer.cpp
+++ b/src/extension/internal/cairo-renderer.cpp
@@ -103,6 +103,7 @@ namespace Extension {
namespace Internal {
CairoRenderer::CairoRenderer(void)
+ : _omitText(false)
{}
CairoRenderer::~CairoRenderer(void)
@@ -568,6 +569,11 @@ CairoRenderer::setStateForItem(CairoRenderContext *ctx, SPItem const *item)
void
CairoRenderer::renderItem(CairoRenderContext *ctx, SPItem *item)
{
+ if ( _omitText && (SP_IS_TEXT(item) || SP_IS_FLOWTEXT(item)) ) {
+ // skip text if _omitText is true
+ return;
+ }
+
ctx->pushState();
setStateForItem(ctx, item);
diff --git a/src/extension/internal/cairo-renderer.h b/src/extension/internal/cairo-renderer.h
index ab5d4cf58..d69a60753 100644
--- a/src/extension/internal/cairo-renderer.h
+++ b/src/extension/internal/cairo-renderer.h
@@ -56,6 +56,10 @@ public:
/** Traverses the object tree and invokes the render methods. */
void renderItem(CairoRenderContext *ctx, SPItem *item);
+
+ /** If _omitText is true, no text will be output to the PDF document.
+ The PDF will be exactly the same as if the text was written to it and then erased. */
+ bool _omitText;
};
// FIXME: this should be a static method of CairoRenderer