Passar por um arquivo intermediário '.ps' ajuda

Passar por um arquivo intermediário '.ps' ajuda

Eu uso o Inkscape para criar gráficos que exporto para PDFs para incluí-los em documentos LaTeX (com \includegraphics e usando pdflatex). Eu não percebi que havia algo errado até que alguém me disse que minhas figuras não são exibidas corretamente no Mac OS X. Partes gráficas básicas, por exemplo, caixas ou círculos que possuem uma configuração de Opacidade inferior a 100%, não são exibidas.

O problema parece estar no pdflatex, já que o PDF exportado apenas do inkscape é exibido perfeitamente em um Mac. Como uso Linux e às vezes Windows nunca percebi que havia algum problema!

Depois de tentar descobrir o que poderia causar o problema, tropecei

\includegraphics PDF, problema de cor e Inkscape → PDF → incluir gráficos → XeLaTeX → cores alteradas

No entanto, isso não resolveu meu problema.

Uma pergunta semelhante foi feita emGradiente opaco para transparente perdido na figura PDF incorporadamas agora a resposta foi realmente dada.

Descobri que a conversão do PDF exportado para PS e depois de volta para PDF resolve o problema, mas depois a qualidade gráfica fica muito ruim.

O que eu perdi? Obrigado por qualquer sugestão.

Abaixo está um exemplo mínimo de trabalho:

\documentclass[a4paper]{article}
\usepackage[pdftex]{color,graphicx}

\begin{document}

\begin{figure}[htb]
 \begin{center}
  \includegraphics[width=\columnwidth]{test_diagram}
  \caption{Block diagram created with Inkscape 0.48}
 \end{center}
\end{figure}

\end{document}

O gráfico incluído pode ser baixado aqui:https://www.dropbox.com/s/mrtj0c3u0ng6a39/test_diagram.pdf

Inkscape: 0.48.3.1 r9886
pdfTeX, versão 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian)

Responder1

Eu também vi esse problema se as imagens do Inkscape forem incorporadas pdflatexe exibidas em um visualizador baseado em PDFKit. (PDFKit é o mecanismo de renderização de PDF integrado do OS X e usado pelo Skim, Preview e muitos outros programas).

Aparentemente, o Inkscape possui uma maneira "incomum" de especificar transparências, que não sobrevivem à incorporação feita pelo pdflatex.

A única solução alternativa que funcionou de forma confiável para mim foi "higienizar" o PDF, achatando as transparências. Eu uso ghostscript (através do ps2pdfwrscript) com a dHaveTransparencies=falseopção para esta finalidade:

ps2pdfwr -dCompatibilityLevel=1.4 -dHaveTransparency=false test_diagram.pdf sanitized.pdf

A desvantagem é que isso se resume a rasterizar a imagem. A resolução padrão para isso é 720 dpi, o que deve ser adequado para a maioria dos casos de uso. Se, no entanto, você precisar de qualidade melhor (ou inferior), você também pode especificar a resolução:

ps2pdfwr -dCompatibilityLevel=1.4 -r1200 -dHaveTransparency=false test_diagram.pdf sanitized.pdf

A 1200 dpi, sua imagem de ~5 KiB aumenta para ~78 KiB em sua versão rasterizada. No entanto, as transparências em PDF são uma fonte demuitosproblemas estranhos quando se trata de dispositivos de saída – não apenas se produzidos pelo Inkscape. Veja, por exemplo: Usar a opacidade no TikZ faz com que a página inteira fique "mais grosseira" quando impressa. Portanto, considero este o preço a pagar.

Responder2

Parece funcionar aqui, ajustar a opacidade alfa do que a opacidade geral.

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

Estou usando pdftex e Inkscape 0.91

Responder3

Eu tive o mesmo problema com o Inkscape/Mac OS/LaTeX. Consegui lidar com isso rasterizando apenas as partes problemáticas da imagem e deixando o restante vetorizado. Para fazer isso, abri o arquivo SVG, selecionei o(s) objeto(s) em questão no Inkscape e fiz Editar -> Fazer uma cópia de bitmap e salvei como PDF. Não consegui chegar a lugar nenhum sobre esse problema com o Inkscape 0.91, mas funcionou com o Inkscape 0.48.

Responder4

Passar por um arquivo intermediário '.ps' ajuda

Assim como RalfB, descobri que converter primeiro para PS e depois para PDF tornava o látex mais feliz. Usar este script ajudou:

inkscape foo.svg --export-ps=foo.ps
pstopdf foo.ps -o foo.pdf

Em seguida, basta compilar seu arquivo latex normalmente.

Deve ser que a conversão do inkscape para '.pdf' esteja bagunçando alguma coisa, em comparação com sua conversão para '.ps', como Daniel mencionou.

Resultados

Aqui estão as fotos de antes/depois, mostrando que a transparência desejada está presente passando pelo ps:

Antes (svg -> pdf)

Antes do PS intermediário

Depois (svg -> ps -> pdf)

Depois do PS intermediário

informação relacionada