2017-07-06 4 views
1

Ich erstelle mehrere EPS-Dateien, die mehrere PostScript-Zeichenbefehle enthalten, die nicht unbedingt effizient codiert sind. Die erste Aktualisierung in der Antwort auf this question beschreibt ähnliche Ineffizienzen.Verlustfreie PDF-Komprimierung Von PostScript generiert

Jede meiner EPS-Dateien sind etwa 18 MB und die resultierenden PDF-Dateien sind etwa 3 MB. Ich erzeuge die PDF-Dateien mit epstopdf, die eine Art der Komprimierung standardmäßig ermöglicht.

Gibt es Vorschläge, wie Sie die resultierenden PDF-Dateigrößen weiter reduzieren können, ohne die Qualität zu ändern (z. B. das Rastern der Vektorgrafiken)?

Ich habe versucht, die Genauigkeit der Koordinaten von 8 Nachkommastellen auf 3 zu reduzieren. Dies reduzierte die EPS-Dateigrößen auf etwa 14 MB, aber, counter-intuitiv, die PDF-Dateigrößen leicht erhöht.

Update 1: Die EPS-Dateien enthalten mehrere Vorkommen des folgenden Beispielcodes für verschiedene Koordinaten und Farben.

newpath 
1 setlinejoin 
1 setlinecap 
<< 
/BBox [322  384.0417  615.0087  651.9958] 
/Domain [322  384.0417  615.0087  651.9958] 
/ShadingType 6 
/ColorSpace [/DeviceRGB] 
/DataSource 
[ 
0 
    350.00000000 651.99583594 
    336.00000000 645.75890880 
    336.00000000 645.75890880 
    322.00000000 639.52198166 
    339.17140372 627.26533984 
    339.17140372 627.26533984 
    356.34280743 615.00869803 
    370.19224806 621.16169097 
    370.19224806 621.16169097 
    384.04168868 627.31468392 
    367.02084434 639.65525993 
    367.02084434 639.65525993 
0.23047  0.29688  0.75 
0.23047  0.29688  0.75 
0.41081  0.54141  0.93366 
0.41112  0.54178  0.93388 
] 
>> 
gsave 
322  615.0087  62.04169  36.98714 rectclip 
shfill 
grestore 

Update 2: Ich konnte um etwa 15% der PDF-Dateigrößen reduzieren, indem pdftocairo mit, gefolgt von gs -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dDetectDuplicateImages=true -sOutputFile=out.pdf in_.pdf.

Antwort

1

PostScript ist eine Programmiersprache und PDF ist nicht, so oft Sie tatsächlich ein kleineres PostScript-Programm als die resultierende PDF-Datei erstellen können.

Die "Ineffizienzen", die Sie in Ihrem EPS-Programm angeben, und die Genauigkeit der eingegebenen Zahlen sind für die Größe der PDF-Datei völlig irrelevant. Die Operatoren in PDF sind nicht die gleichen Namen wie die Operatoren in PostScript, so dass ein "moveto" in PostScript nicht einfach in ein "moveto" in der resultierenden PDF-Datei transliteriert wird. Die Genauigkeit der Zahlen in der PDF-Ausgabedatei ist nicht an die Genauigkeit der Zahlen in der Eingabe gebunden.

Darüber hinaus verwenden PostScript-Interpreter oft eine arithmetische Festkommazahl (Ghostscript verwendet z. B. 24: 8), so dass zB 1.5 am Eingang nicht als 1.5 am Ausgang ausgegeben wird, sondern 1.49999999.

Das Ergebnis davon ist im Grunde, dass niemand sagen kann, warum Ihre PDF-Dateien so groß sind, wie sie sind, ohne sie zu sehen. Ich würde vorschlagen, dass eine Reduzierung der Größe um 6: 1 persönlich ziemlich vernünftig ist. Wenn Sie ein repräsentatives Beispiel an einer beliebigen Stelle veröffentlichen, könnte jemand es ansehen und vielleicht einige Vorschläge machen, aber ohne den Inhalt zu sehen, ist es nicht wirklich möglich, es zu erzählen.

NB Rendering der Inhalt würde höchstwahrscheinlich erhöhen die Größe der PDF-Datei, es sei denn, Sie rendern mit einer wirklich niedrigen Auflösung.

EDIT

Das mitgelieferte Beispiel einfach ein Shading-Wörterbuch, wird die PDF-Datei für das jeweilige Konstrukt fast genau die gleichen Daten enthalten. Es ist schon so kompakt, wie man es erwarten kann, ich bezweifle sehr, dass dies eine Art von 18MB Quelle ist, das wäre eine enorme Menge an Schattierungen. Es gibt keinen realistischen Weg, das kleiner zu machen, und wenn man es in eine Bitmap umwandelt (selbst bei sehr niedriger Auflösung), würde es es tatsächlich größer machen.

Es ist durchaus möglich, dass die EPS Dinge wie eine Bitmap-Vorschau enthält, die natürlich beim Erstellen einer PDF entfernt wird.Es kann auch (abhängig von der Erstellungsanwendung) das Originaldokument enthalten, das als Kommentar gespeichert wird und beim Erstellen einer PDF-Datei ebenfalls entfernt wird. Ohne das Original EPS zu sehen, ist es nicht wirklich möglich, viel zu sagen.

Ich fürchte, die kleinen Teile der Datei zu veröffentlichen wird nicht wirklich helfen.

+0

Danke für die Information. Ich habe die ursprüngliche Frage aktualisiert, um einen Beispielcode anzuzeigen. – BaronFiner

+0

Ich erstelle die EPS-Datei von Grund auf neu, indem ich einfach die Befehle schreibe. Es sind keine Kommentare oder Vorschauen enthalten. Die tatsächliche EPS-Datei enthält nur etwa 10.000 Schattierungen verschiedener Vierecke, wobei die Syntax verwendet wird, die in der Frage enthalten ist. – BaronFiner

+1

Gut in diesem Fall ist das resultierende PDF ungefähr so ​​kompakt, wie es erhalten wird. – KenS

Verwandte Themen