PDF-Transparenz reduzieren

11

Ich habe ein mit Inkscape erstelltes PDF, das transparente Farben verwendet. Dieses Bild soll in einem LaTeX-Dokument verwendet werden.

Die Beibehaltung der Transparenz ist zwar für die Bearbeitung hilfreich, kann jedoch beim Drucken problematisch sein. Das Drucken umfasst normalerweise die Konvertierung von PDF in PS. Da Postscript keine Transparenz unterstützt, ist dies ebenfalls erforderlich

  • Abflachen, dh Erstellen einer Vektorgrafik, die ohne Transparenz funktioniert

oder

  • Rastering, dh Rendern eines Bitmap-Bildes.

Wenn ein PDF-Dokument mit einer solchen Abbildung mit Evince (oder Cairo oder Ghostscript) gedruckt (oder in PS konvertiert) wird, wird die gesamte Seite als Bitmap gerendert, wodurch Schriftarten hässlich werden (anders als auf anderen Seiten). (Adobe Acrobat verarbeitet solche PDFs gut.)

Leider hilft das Konvertieren der PDF-Zahlen in EPS (bevor sie in LaTeX aufgenommen werden) nicht viel, da sowohl pdftops als auch pdf2ps (wieder Kairo oder Ghostscript) das Bild rastern, dh eine Bitmap rendern (als EPS gespeichert). (Dies ist etwas besser, da es nicht die gesamte Seite betrifft, aber ich würde trotzdem eine Vektorgrafik bevorzugen.)

Wie kann ich die Transparenz mit Inkscape oder anderer Software unter Linux reduzieren?

Jan.
quelle
2
Interessante Frage. Es wäre sehr komplex, svg zu reduzieren, da jeder mögliche Schnittpunkt von Formen eine neue undurchsichtige Form mit zusammengesetzter Füllung erzeugen müsste.
Artfulrobot
@artfulrobot Genau. Die resultierenden Vektorgrafiken können im Allgemeinen sehr komplex werden. Für eine Reihe von typischen Vektor-Strichgrafiken sollte das Ergebnis jedoch auf einem modernen Postscript-Drucker immer noch gut funktionieren.
Jan
Die beste Methode, die ich gefunden habe, ist eine langwierige manuelle Methode, bei der nach einem ersten Schritt neu gezeichnet wird: Verwenden Sie inkscape, um Ihr PDF in ein SVG zu konvertieren, und öffnen Sie das SVG in einem guten Texteditor. Ersetzen Sie alle Vorkommen von 'Deckkraft: [0] [0-9 \.]' Durch 'Deckkraft: 1' (Regex-Version) oder suchen Sie nach 'Deckkraft: 0.' und manuell durch Deckkraft 1 ersetzen (langwierige Version). Öffnen Sie das SVG in Inkscape und lassen Sie es wieder schön aussehen (der schwierige Teil), dann zurück zu PDF und weiter zu EPS.
Chris H

Antworten:

6

Eine Möglichkeit, eine schlechte Rasterisierung zu umgehen, besteht darin, Ihr PDF-Dokument manuell in Postscript zu konvertieren. Wenn Sie CUPS über evince oder eine andere Benutzeroberfläche aufrufen, wird es trotzdem konvertiert.

Sie können versuchen pdftops -r 1200 document.pdf, die Auflösung von der niedrigen Standardeinstellung von 300 zu erhöhen, und dann das resultierende Postskriptum drucken. Bei den arbeitenden Druckern ergab sich jedoch keine signifikante Verbesserung. Normaler Text auf Seiten mit und ohne transparente Bilder sah immer noch anders aus - verschwommen oder klar.

Daher habe ich Acrobat Professional (auf einem Windows-Computer) verwendet, um die in meinem Latexdokument verwendeten transparenten Bilder zu reduzieren, was zu optimalen Ergebnissen führte. Überprüfen Sie, ob Transparency Flattener Presetan ist [High Resolution]in dem erweiterten Druckaufbau. Mein Kollege erwähnte, dass man eine PDF-Datei möglicherweise direkt auf einen modernen Laserjet-Netzwerkdrucker übertragen und die Postscript-Konvertierung umgehen könnte. Ich habe das nicht versucht.

Es wäre großartig, eine Nur-Linux-Lösung für dieses Problem zu haben.

Fred Schoen
quelle
1

Ich hatte das gleiche Problem und dies ist meine Lösung (zum späteren Nachschlagen):

Ich habe viele Dinge ausprobiert, und die beste funktionierende Lösung, die ich im Internet gefunden habe, war, das PDF vollständig als Bild mit pdf2psund zu rendern ps2pdf13, aber das Ergebnis war für mich nicht zufriedenstellend, da alle Vektorformen verloren gingen. Ich wollte nur die kritischen Teile rendern, aber die Vektorgrafiken beibehalten.

Was für mich der Trick war, war, alle kritischen Teile in Inkscape zu isolieren und sie auf eine separate Ebene zu legen (in meinen Bildern waren dies alle Schatten). Ich habe nur diese Ebene (und die Hintergrundebene) sichtbar gemacht und in PNG exportiert, um effektiv alle Transparenzeffekte zu rendern, aber nur diese. Ich habe es zurück importiert und in einer neuen Ebene verwendet. Nach dem Umdrehen aller Ebenen-Sichtbarkeiten (Transparenzebene: Aus, alle anderen: Ein) funktionierte das exportierte PDF perfekt mit LaTeX und konnte gedruckt werden, ohne die gesamte Seite als Bild zu rendern.

TL; DR:

  1. Isolieren Sie alle problematischen Folien auf einer Ebene (Transparenzmasken, Schatten usw.)
  2. Machen Sie nur die problematische Ebene und den Hintergrund sichtbar
  3. Export nach PNG
  4. Importieren Sie das gerade erstellte PNG und verwenden Sie es als Hintergrund
  5. Machen Sie alle Ebenen außer der problematischen Ebene sichtbar
  6. In PDF exportieren
  7. Lächeln :)
Edgar
quelle
0

Eine Möglichkeit besteht darin, in Inkscape ein weißes Feld mit der gleichen Größe wie Ihre Seite zu erstellen und an die unterste Ebene zu senden. Dadurch wird Ihr Bild mit einem weißen Hintergrund anstelle eines transparenten exportiert.

brousch
quelle
1
Das Problem ist kein transparenter Hintergrund, und das Hinzufügen eines weißen Hintergrunds löst es nicht. Die Bildfrage verwendet halbtransparente Formen über anderen (undurchsichtigen) Formen. SVG und PDF unterstützen dies, PS jedoch nicht.
Jan
0

Ich habe die PDF-Datei mit Ubuntu / Gimp geöffnet und jeweils eine Seite gedruckt, um jedes Mal die Druckvorschau zu überprüfen.

Gast
quelle
-1
pdftops -origpagesizes input.pdf output.ps

dann

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