X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fextension%2Finternal%2Fcairo-renderer-pdf-out.cpp;h=e8eff20b7ab6eedc7a88500f004a9cdc953acab8;hb=d6f9b52df16e79dea9fe5c9a6db9e5eee14dee62;hp=4b37cae5ca193afae0c4a5f1176533a7f6feceb9;hpb=4b1e20ea55d30511ebd789a258e84f11f256184f;p=inkscape.git diff --git a/src/extension/internal/cairo-renderer-pdf-out.cpp b/src/extension/internal/cairo-renderer-pdf-out.cpp index 4b37cae5c..e8eff20b7 100644 --- a/src/extension/internal/cairo-renderer-pdf-out.cpp +++ b/src/extension/internal/cairo-renderer-pdf-out.cpp @@ -5,8 +5,9 @@ * Authors: * Ted Gould * Ulf Erikson + * Johan Engelen * - * Copyright (C) 2004-2006 Authors + * Copyright (C) 2004-2010 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -20,6 +21,7 @@ #include "cairo-renderer-pdf-out.h" #include "cairo-render-context.h" #include "cairo-renderer.h" +#include "latex-text-renderer.h" #include #include "extension/system.h" #include "extension/print.h" @@ -33,6 +35,8 @@ #include "sp-item.h" #include "sp-root.h" +#include <2geom/matrix.h> + namespace Inkscape { namespace Extension { namespace Internal { @@ -48,7 +52,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 omittext, bool filtertobitmap, int resolution, const gchar * const exportId, bool exportDrawing, bool exportCanvas) { sp_document_ensure_up_to_date(doc); @@ -74,6 +78,7 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int /* Create new arena */ NRArena *arena = NRArena::create(); + nr_arena_set_renderoffscreen (arena); unsigned dkey = sp_item_display_key_new(1); sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY); @@ -82,6 +87,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 = omittext; ctx->setFilterToBitmap(filtertobitmap); ctx->setBitmapResolution(resolution); @@ -105,19 +111,18 @@ pdf_render_document_to_file(SPDocument *doc, gchar const *filename, unsigned int return ret; } - /** \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 -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; @@ -145,6 +150,14 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, g_warning("Parameter might not exist"); } + bool new_textToLaTeX = FALSE; + try { + new_textToLaTeX = mod->get_param_bool("textToLaTeX"); + } + catch(...) { + g_warning("Parameter might not exist"); + } + bool new_blurToBitmap = FALSE; try { new_blurToBitmap = mod->get_param_bool("blurToBitmap"); @@ -179,21 +192,32 @@ CairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, bool new_exportCanvas = FALSE; try { - new_exportCanvas = mod->get_param_bool("areaCanvas"); + new_exportCanvas = mod->get_param_bool("areaPage"); } catch(...) { g_warning("Parameter 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); + + if (!ret) + throw Inkscape::Extension::Output::save_failed(); + } } #include "clear-n_.h" @@ -216,10 +240,11 @@ CairoRendererPdfOutput::init (void) "<_item value='PDF14'>" N_("PDF 1.4") "\n" "\n" "false\n" + "false\n" "true\n" - "90\n" - "false\n" - "false\n" + "90\n" + "false\n" + "false\n" "\n" "\n" ".pdf\n"