cairo-renderer-pdf-out.cpp revision 00f8f5fca7184b0662b859af3ca2d2986119dd6a
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński * A quick hack to use the Cairo renderer to write out a file. This
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński * then makes 'save as...' PDF.
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński * Ted Gould <ted@gould.cx>
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelen * Ulf Erikson <ulferikson@users.sf.net>
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelen * Copyright (C) 2004-2006 Authors
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelen * Released under GNU GPL, read the file 'COPYING' for more information
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelenCairoRendererPdfOutput::check (Inkscape::Extension::Extension * module)
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosińskipdf_render_document_to_file(SPDocument *doc, gchar const *filename)
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelen /* Create new arena */
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelen NRArenaItem *root = sp_item_invoke_show(base, arena, dkey, SP_ITEM_SHOW_DISPLAY);
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński /* Create renderer and context */
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński CairoRenderer *renderer = new CairoRenderer();
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelen CairoRenderContext *ctx = renderer->createContext();
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński bool ret = renderer->setupDocument(ctx, doc);
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelen /* Release arena */
1f37e9d97c3bb8cf02b2cc80af8dcfc9aba7c7b4johanengelen \brief This function calls the output module with the filename
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński \param mod unused
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński \param doc Document to be saved
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński \param uri Filename to save to (probably will end in .png)
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński The most interesting thing that this function does is just attach
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński an '>' on the front of the filename. This is the syntax used to
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński tell the printing system to save to file.
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof KosińskiCairoRendererPdfOutput::save (Inkscape::Extension::Output *mod, SPDocument *doc, const gchar *uri)
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński final_name = g_strdup_printf("> %s", uri);
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński bool ret = pdf_render_document_to_file(doc, final_name);
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński throw Inkscape::Extension::Output::save_failed();
e4369b05aaa20df73a37f4d319ce456865cc74f3Krzysztof Kosiński \brief A function allocate a copy of this function.
e4369b05aaa20df73a37f4d319ce456865cc74f3Krzysztof Kosiński This is the definition of Cairo PDF out. This function just
e4369b05aaa20df73a37f4d319ce456865cc74f3Krzysztof Kosiński calls the extension system with the memory allocated XML that
e4369b05aaa20df73a37f4d319ce456865cc74f3Krzysztof Kosiński describes the data.
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński "<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n"
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński "<name>Cairo PDF Output (experimental)</name>\n"
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński "<id>org.inkscape.output.pdf.cairorenderer</id>\n"
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński "<extension>.pdf</extension>\n"
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński "<mimetype>application/pdf</mimetype>\n"
e4369b05aaa20df73a37f4d319ce456865cc74f3Krzysztof Kosiński "<filetypename>Cairo PDF experimental (*.pdf)</filetypename>\n"
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński "<filetypetooltip>PDF File</filetypetooltip>\n"
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński "</inkscape-extension>", new CairoRendererPdfOutput());
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński} } } /* namespace Inkscape, Extension, Internal */
00f9ca0b3aa57e09f3c3f3632c5427fc03499df5Krzysztof Kosiński#endif /* HAVE_CAIRO_PDF */