inkscape transparency when exporting pdf?

How do I need to change the transparent objects in an inkscape file to be able to export them correctly to pdf? So far it seems the defaults render the transparent objects either invisible or opaque.


Since exporting transparent shapes into PDFs still doesn't work properly (at least for me, right now) and the exporting of Bitmaps is (as far as I can tell) a lot of work when you're updating your figure a lot, here's my simple workaround for shapes.

Again, this only works for shapes, not embedded images.

http://www.inkscapeforum.com/viewtopic.php?f=28&t=15739&p=65180#p65180

Basically, it boils down to setting the alpha channel of the color instead of it's opacity. I would have thought these are the same property, but apparently they are not.

Cheers, Jan


For an embedded image, if you have the SVG file without a background, just:

  • export it using File → Save a copy;
  • choose the PDF format;
  • click Save;
  • in the PDF-export window that pops up, select Export drawing and unselect Export page.

When opening the exported PDF with a PDF reader, it may look like there is a white background. But if you include it in a presentation or poster file, you will see that there is no background.


Check that it is not rather your PDF reader that is unable to render transparency. Use Adobe Acrobat or Okular (linux), these can render most of the type of transparencies in my experience (including gradients).

The easy silly solution is to export bitmap, then the transparencies over solid objects are rendered. You can then convert to PDF, but this is not scalable anymore.

However, to the best of my knowledge, there is no automatic "robust" way of exporting a scalable PDF with transparencies from inkscape.

You can do it manually though:

  1. export a bitmap and open it in e.g. GIMP
  2. for any transparent solid colour object, duplicate it as many times as it overlays other objects, intersect each of these bits (Ctrl+*) with a duplicate of the overlaid object, and give the intersection the colour you obtain with the pipette in GIMP for this part of your drawing.

A little of a hassle, isn't it? It should be scriptable... See my post at inkscape forum: http://www.inkscapeforum.com/viewtopic.php?f=28&t=15739&e=0

EDIT: OK, thinking a little more of the problem, there's a better way:

  1. create a layer "Transparent" at the depth of the transparent objects, move transparent objects to this layer;

  2. view only this layer and "Edit > Make a bitmap copy" (ALT-B)

  3. move this copy to a new layer "Bitmap" next to the layer "Transparent"

  4. Turn off the viewing of layer transparent and on the layer bitmap before exporting your PDF.

This way, you have a combined Bitmap+Scalable Vector document: only the tranparent fill is not scalable, but it will be rendered correctly in PDF viewers.

Limitations:

  1. You need to repeat this operation each time you modify any of your transparent objects.

  2. You also need to repeat this if you have transparent objects at different depths.

  3. There may be PDF viewers not even handling bitmap tranparency, in which case vector elements in layers below the "Bitmap" layer may not be rendered properly.