Appiattimento della trasparenza dei PDF


11

Ho un PDF, realizzato con Inkscape, che utilizza colori trasparenti. Questa immagine deve essere utilizzata in un documento LaTeX.

Sebbene preservare la trasparenza sia utile per la modifica, può essere un problema per la stampa. La stampa di solito comporta la conversione da PDF a PS. Poiché Postscript non supporta la trasparenza, questo richiede neanche

  • appiattimento, ovvero creazione di una grafica vettoriale che funzioni senza trasparenza

o

  • rastering, ovvero rendering di un'immagine bitmap.

Quando un documento PDF contenente tale figura viene stampato (o convertito in PS) usando Evince (o Cairo o Ghostscript), l'intera pagina viene resa come una bitmap, rendendo i caratteri brutti (diversi dalle altre pagine). (Adobe Acrobat gestisce bene tali PDF.)

Sfortunatamente, convertire i dati PDF in EPS (prima di includerli in LaTeX) non aiuta molto, perché sia ​​pdftops che pdf2ps (di nuovo Cairo o Ghostscript) rasterizzano l'immagine, cioè rendono un bitmap (salvato come EPS). (Questo è leggermente migliore, perché non influisce sull'intera pagina, ma preferirei comunque una grafica vettoriale.)

Come posso appiattire la trasparenza con Inkscape o altri software su Linux?


2
Domanda interessante. Sarebbe molto complesso appiattire svg in quanto ogni possibile intersezione di forme avrebbe bisogno di creare una nuova forma opaca con riempimento composito.
artfulrobot,

@artfulrobot Esatto. La grafica vettoriale risultante può in generale diventare piuttosto complessa. Tuttavia, per una serie di grafica tipicamente vettoriale, il risultato dovrebbe comunque funzionare bene su una moderna stampante Postscript.
Jan

Il metodo migliore che ho trovato è un noioso manuale, che prevede il ridisegno dopo un primo passo: usa inkscape per convertire il tuo pdf in uno svg, apri lo svg in un buon editor di testo. Sostituisci tutte le occorrenze di 'opacità: [0] [0-9 \.]' Con 'opacità: 1' (versione regex) o trova 'opacità: 0.' e sostituisci manualmente con l'opacità 1 (versione noiosa). Apri lo svg in inkscape e rendilo di nuovo bello (la parte difficile), che torna in pdf e su eps.
Chris H,

Risposte:


6

Un modo per aggirare la cattiva rasterizzazione è convertire manualmente il tuo documento PDF in Postscript perché quando invochi CUPS attraverso evince o qualunque altra gui, verrà convertito comunque.

Puoi provare pdftops -r 1200 document.pdfad aumentare la risoluzione dal valore predefinito basso di 300, quindi stampare il poscritto risultante. Tuttavia, con le stampanti al lavoro questo non ha prodotto un miglioramento significativo. Il testo normale sulle pagine con e senza immagini trasparenti sembrava ancora diverso: sfocato o chiaro.

Così ho finito per usare Acrobat Professional (su un computer Windows) per appiattire le immagini trasparenti utilizzate nel mio documento in lattice, che ha dato risultati ottimali. Verificare che Transparency Flattener Presetsia presente [High Resolution]nell'impostazione di stampa avanzata. Il mio collega ha detto che si potrebbe forse inviare FTP un file pdf direttamente a una moderna stampante di rete laserjet, aggirando la conversione PostScript. Non ho provato questo.

Sarebbe bello avere una soluzione solo Linux per questo problema.


1

Ho avuto lo stesso problema e questa è la mia soluzione (per riferimento futuro):

Ho provato molte cose, e finora la migliore soluzione di lavoro che ho trovato su Internet è stata quella di rendere il PDF completamente come un'immagine con pdf2pse ps2pdf13, ma il risultato non è stato soddisfacente per me, perché tutte le forme vettoriali sono state perse. Volevo renderizzare solo le parti critiche, ma conservare la grafica vettoriale.

Quello che ha fatto il trucco per me era isolare tutte le parti critiche in inkscape e metterle su un livello separato (nelle mie immagini c'erano tutte le ombre). Ho reso visibile solo questo livello (e il livello di sfondo) ed esportato in PNG, rendendo effettivamente tutti gli effetti di trasparenza, ma solo loro. L'ho importato indietro e l'ho usato in un nuovo livello. Dopo aver capovolto tutte le visibilità del livello (livello di trasparenza: disattivato, tutti gli altri: attivato), il PDF esportato ha funzionato perfettamente con LaTeX ed è stato stampabile senza rendere l'intera pagina come immagine.

TL; DR:

  1. Isola tutti i lucidi problematici su un livello (maschere di trasparenza, ombre, ecc.)
  2. Rendi visibili solo il livello problematico e lo sfondo
  3. Esporta in PNG
  4. Importa il PNG appena creato e usa come sfondo
  5. Rendi visibili tutti i livelli tranne quello problematico
  6. Esporta in PDF
  7. Sorridi :)

0

Un modo è creare una scatola bianca in Inkscape delle stesse dimensioni della tua pagina e inviarla al livello inferiore. Questo esporterà la tua immagine con uno sfondo bianco anziché trasparente.


1
Il problema non è uno sfondo trasparente e l'aggiunta di uno sfondo bianco non lo risolve. La domanda sull'immagine usa forme semitrasparenti sopra altre forme (opache). SVG e PDF lo supportano, ma PS no.
Jan

0

Ho aperto il file pdf usando Ubuntu / Gimp e stampato una pagina alla volta controllando ogni volta l'anteprima di stampa.


-1
pdftops -origpagesizes input.pdf output.ps

poi

ps2pdf -r600x600 output.ps input-new.pdf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.