Acoplar la transparencia de PDF

11

Tengo un PDF, hecho con Inkscape, que usa colores transparentes. Esta imagen se utilizará en un documento LaTeX.

Si bien preservar la transparencia es bueno para editar, puede ser un problema para la impresión. La impresión generalmente implica la conversión de PDF a PS. Dado que PostScript no admite transparencia, esto requiere

  • aplanado, es decir, crear un gráfico vectorial que funcione sin transparencia

o

  • rasterizado, es decir, renderizar una imagen de mapa de bits.

Cuando se imprime un documento PDF que contiene dicha figura (o se convierte a PS) usando Evince (o Cairo o Ghostscript), toda la página se representa como un mapa de bits, lo que hace que las fuentes sean feas (diferentes de otras páginas). (Adobe Acrobat maneja bien esos archivos PDF).

Desafortunadamente, la conversión de las figuras PDF a EPS (antes de incluirlas con LaTeX) no ayuda mucho, porque tanto pdftops como pdf2ps (nuevamente, Cairo o Ghostscript) rasterizan la imagen, es decir, renderizan un mapa de bits (guardado como EPS). (Esto es un poco mejor, porque no afecta a toda la página, pero aún así preferiría un gráfico vectorial).

¿Cómo puedo aplanar la transparencia con Inkscape u otro software en Linux?

ene
fuente
2
Interesante pregunta. Sería muy complejo aplanar svg, ya que cada posible intersección de formas necesitaría crear una nueva forma opaca con relleno compuesto.
artfulrobot
@artfulrobot Exactamente. Los gráficos vectoriales resultantes en general pueden volverse bastante complejos. Sin embargo, para una serie de gráficos de arte de líneas típicamente vectoriales, el resultado debería funcionar bien en una impresora PostScript moderna.
Jan
El mejor método que he encontrado es un tedioso manual, que implica volver a dibujar después de un paso inicial: use inkscape para convertir su pdf a un svg, abra el svg en un buen editor de texto. Reemplace todas las apariciones de 'opacity: [0] [0-9 \.]' Con 'opacity: 1' (versión regex) o busque 'opacity: 0.' y reemplazar manualmente con opacidad 1 (versión tediosa). Abra el svg en inkscape y haga que se vea bien nuevamente (la parte difícil), que vuelva a pdf y luego a eps.
Chris H

Respuestas:

6

Una forma de evitar la mala rasterización es convertir manualmente su documento PDF a postscript porque cuando invoque CUPS a través de evince o cualquier interfaz gráfica de usuario, se convertirá de todos modos.

Puede intentar pdftops -r 1200 document.pdfaumentar la resolución desde el valor predeterminado bajo de 300 y luego imprimir la posdata resultante. Sin embargo, con las impresoras en funcionamiento, esto no produjo una mejora significativa. El texto normal en páginas con y sin imágenes transparentes todavía se veía diferente: borroso frente a claro.

Así que terminé usando Acrobat Professional (en una máquina con Windows) para aplanar las imágenes transparentes utilizadas en mi documento de látex, lo que dio resultados óptimos. Compruebe que Transparency Flattener Presetestá [High Resolution]en la configuración de impresión avanzada. Mi colega mencionó que quizás se podría enviar un archivo PDF por FTP directamente a una impresora de red laserjet moderna, sin pasar por la conversión postscript. No he intentado esto.

Sería genial tener una solución solo para Linux para este problema.

Fred Schoen
fuente
1

Tuve el mismo problema y esta es mi solución (para referencia futura):

Intenté muchas cosas, y hasta ahora la mejor solución de trabajo que encontré en Internet fue renderizar el PDF completamente como una imagen con pdf2psy ps2pdf13, pero el resultado no fue satisfactorio para mí, porque se perdieron todas las formas vectoriales. Quería renderizar solo las partes críticas, pero conservar los gráficos vectoriales.

Lo que hizo el truco para mí fue aislar todas las partes críticas en inkscape y ponerlas en una capa separada (en mis imágenes esto eran todas las sombras). Hice visible solo esta capa (y la capa de fondo) y la exporté a PNG, renderizando efectivamente todos los efectos de transparencia, pero solo ellos. Lo importé de nuevo y lo usé en una nueva capa. Después de cambiar todas las visibilidades de la capa (capa de transparencia: desactivada, todas las demás: activada), el PDF exportado funcionó perfectamente con LaTeX y fue imprimible sin representar la página completa como imagen.

TL; DR:

  1. Aísle todas las transparencias problemáticas en una capa (máscaras de transparencia, sombras, etc.)
  2. Haga visible solo la capa problemática y el fondo
  3. Exportar a PNG
  4. Importe el PNG recién creado y úselo como fondo
  5. Hacer visibles todas las capas excepto la capa problemática
  6. Exportar a PDF
  7. Sonrisa :)
Edgar
fuente
0

Una forma es hacer un cuadro blanco en Inkscape del mismo tamaño que su página y enviarlo a la capa inferior. Esto exportará su imagen con un fondo blanco en lugar de uno transparente.

brousch
fuente
1
El problema no es un fondo transparente y agregar un fondo blanco no lo resuelve. La pregunta de la imagen utiliza formas semitransparentes sobre otras formas (opacas). SVG y PDF admiten esto, pero PS no.
Ene
0

Abrí el archivo pdf usando Ubuntu / Gimp e imprimí una página a la vez comprobando la vista previa de impresión cada vez.

Huésped
fuente
-1
pdftops -origpagesizes input.pdf output.ps

luego

ps2pdf -r600x600 output.ps input-new.pdf
HinzundKunz
fuente