Wenn ich eine TeX-Datei einmal mit MiKTeX unter Windows 7 und einmal mit TeX Live unter Kubuntu 14.04 übersetze, erhalte ich unterschiedlich große PDF-Dateien:

MiKTeX: ca. 6,4 MiB, TeX Live: ca. 4,3 MiB

Die Programme und Pakete sind jeweils aktuell.

Woran liegt dieser große Unterschied und gibt es eine Möglichkeit, die beiden PDFs zu vergleichen bzw. mögliche Differenzen zu finden?

gefragt 28 Sep '15, 15:41

tom75's gravatar image

tom75
2.2k187884
Akzeptiert-Rate: 57%

bearbeitet 29 Sep '15, 19:28

Sind Bilder eingebunden, oder wie kommt die verhältnismäßig große Dateigröße zustande. Reiner Text wird es bei mehreren MiB ja nicht sein!?

(28 Sep '15, 17:25) feynman

Es ist eine beamer-Präsentation mit 239 Seiten, 1005 Slides, ganz vielen TikZ-Bildern, auch mit gnuplot. Wenn man die PDFs stichprobenartig vergleicht, scheinen sie opisch identisch zu sein. Aber es ist mühsam, alles zu vergleichen.

(28 Sep '15, 17:28) tom75

Unterschiedliche Voreinstellungen für die PDF-Version und die Komprimierung für PDF-Objekte? Unterschiedliche Grafiklibraries?

Zum Thema Vergleich: Man kann PDFs in Bitmap-Grafiken umwandeln und dann beispielsweise mit ImageMagick XOR verknüpfen, um Unterschiede optisch zu ermitteln. Es gibt neuerdings auch ein Paket, das zwei PDF übereinander legt. Leider kann ich es gerade nicht finden und weiß den Namen nicht mehr.

(28 Sep '15, 18:01) saputello

@saputello Wo sehe ich die Voreinstellungen für die PDF-Version bzw. Komprimierung und Grafiklibraries?

(28 Sep '15, 18:08) tom75

Vergleiche mal die eingebunden Schriften mit pdffonts <datei> oder über den Adobe Reader.

(28 Sep '15, 18:41) Herbert

@tom75: Schau mal im pdftex-Manual nach. Da findest Du spezielle Primitive dafür, die man nicht nur setzen, sondern auch abfragen kann. Die PDF-Version ist außerdem normalerweise im Eigenschaftendialog des PDF-Viewers zu finden. Welche Grafiklibs verwendet werden, findet man nur im Quellcode. Mich würde jedenfalls nicht wundern, wenn unterschiedliche Implementierunge unterschiedliche Grafiklibs verwenden würden und das zu unterschiedlichen Ergebnissen bei der Dateigröße führen würde …

(28 Sep '15, 20:19) saputello

… Ohne im Idealfall den Quelltext des PDFs und den Quellcode der PDFTeX-Implementierungen zu kennen, ist das aber alles Spekulation.

(28 Sep '15, 20:23) saputello

@Herbert: Ok, ich schau nachdem danach und ergänze die Frage. @saputello: Schreib ich dann beispielsweise thepdfcompresslevel ? Kommt die Ausgabe dann ins Logfile?

(28 Sep '15, 20:58) tom75

@tom75: Wenn Du thepdfcompresslevel in das Dokument schreibst, wird genau das ausgegeben. Wenn Du den Wert von \pdfcompresslevel haben willst, musst Du natürlich \the\pdfcompresslevel in das Dokument schreiben:

\documentclass{standalone}
\begin{document}
\begin{tabular}{@{}l@{\,=\,}l@{}}
\verb|\pdfcompresslevel| & \the\pdfcompresslevel \\
\verb|\pdfobjcompresslevel| & \the\pdfobjcompresslevel \\
\verb|\pdfminorversion| & \the\pdfminorversion \\
PDF-Version & 1.\the\pdfminorversion \\
\verb|\pdfpkresolution| & \the\pdfpkresolution \\
\end{tabular}
\end{document}

(29 Sep '15, 09:29) saputello

Gleiche Font-ID heißt übrigens noch nicht, dass es derselbe Font ist. Dazu müsste man die Font-Dateien selbst vergleichen. Außerdem heißt es nicht, dass beide TeX-Implementierungen dieselben Teile des Fonts in die Datei einbinden. Erster Punkt wäre also tatsächlich zu klären, ob es an den Fonts oder deren Einbindung liegt, an (externen) Abbildungen, an Objekt-Komprimierung etc. Dazu muss man diverse Einzeltests anstellen. Erst dann kann man vermuten, woran es bei einem komplexen Dokument liegt.

(29 Sep '15, 09:34) saputello

@saputello: Ich weiss nicht, wo die in meinem letzten Kommentar geblieben sind :-)

Ich hab jetzt den (einen) Unterschied: \pdfobjcompresslevel ist in TeX Live auf 2 gesetzt, in MiKTeX auf 0.

(29 Sep '15, 17:52) tom75

@tom75: Das ist ein ganz erheblicher Unterschied. Komprimierte Objekte sparen in der Tat reichlich Platz. Was die einzelnen Level bedeuten steht in der Anleitung.

(29 Sep '15, 17:56) saputello

@saputello: Weisst du, ob das Nebeneffekte/Qualitätsverlust etc. hat? Man könnte den Wert ja auch noch auf 3 setzen, um zusätzlich zu sparen.

(29 Sep '15, 17:57) tom75

@Tom75: Qualitätsverluste gibt es keine und wenn man ohnehin PDF 1.5 erzeugt, dann sehe ich auch wenig Sinn darin, einen Wert < 2 zu verwenden. 3 nicht zu verwenden kann jedoch sinnvoll sein. Ich schaue beispielsweise gerne mal mit strings oder hexdump oder schlicht im dem hex-mode oder text-mode von emacs in eine PDF-Datei, um die Info-Einträge zu lesen. Angeblich werten auch manche Robots im Internet diese Einträge aus. Allerdings könnte die auch eine Lib nutzen, die kein Problem mit der Komprimierung haben. Ob das also noch eine Rolle spielt, weiß ich nicht.

(29 Sep '15, 18:03) saputello

Du kannst ja mal auf der MiKTeX-Liste fragen, warum MiKTeX in der Voreinstellung zwar PDF 1.5 erzeugt aber \pdfobjcompresslevel auf 0 belässt. Irgend etwas wird man sich ja gedacht haben.

(29 Sep '15, 18:05) saputello

Die eigentliche Frage für mich ist, was wir mit der Frage hier machen. Eigentlich müsste man sie als zu diskutierend schließen. Auf der anderen Seite ist die Frage an sich nicht verkehrt. Vielleicht willst Du sie ja selbst insofern beantworten als die unterschiedliche Voreinstellung von \pdfobjcompresslevel der entscheidende Unterschied ist. Vielleicht kannst Du dabei auch noch ermitteln, was bei MiKTeX passiert, wenn man ein \pdfobjcompresslevel=3 in die Dokumentpräambel einfügt. Dann können wir ggf. auch Kommentare wieder entfernen.

(29 Sep '15, 18:22) saputello

@saputello: Ein erster Entwurf einer Antwort.

(29 Sep '15, 19:29) tom75
Ergebnis 5 von 17 show 12 more comments

Ein Vergleich der eingebetteten Schriftarten mit dem Kommand pdffonts <datei> brachte die selben Font-Namen, allerdings mit unterschiedlicher Font-ID.

Durch die Anregung von @saputello habe ich folgende tex-Datei auf beiden Systemen übersetzt:

Open in Online-Editor
\documentclass{standalone}
\begin{document}
\begin{tabular}{@{}l@{\,=\,}l@{}}
\verb|\pdfcompresslevel| & \the\pdfcompresslevel \\
\verb|\pdfobjcompresslevel| & \the\pdfobjcompresslevel \\
\verb|\pdfminorversion| & \the\pdfminorversion \\
PDF-Version & 1.\the\pdfminorversion \\
\verb|\pdfpkresolution| & \the\pdfpkresolution \\
\end{tabular}
\end{document}

Das Ergebnis für Windows 7 / MiKTeX:

Win7/MiKTex

Das Ergebnis für Kubuntu 14.04 / TeX Live:

Kubuntu/TeXLive

Der Unterschied liegt hier also bei \pdfobjcompresslevel.

Im feature request von MiKTeX wurde bereits gewünscht, dass man die Einstellung für \pdfobjcompresslevel zukünftig auch in der Konfigurationsdatei ändern kann.

Übersetzt man die Datei mit MiKTeX mit der Option \pdfobjcompresslevel=2, so ist die PDF-Datei ungefähr genauso groß wie mit TeXLive.

Permanenter link

beantwortet 29 Sep '15, 19:28

tom75's gravatar image

tom75
2.2k187884
Akzeptiert-Rate: 57%

bearbeitet 30 Sep '15, 18:35

Es bleibt die Frage: Wenn Du \pdfobjcompresslevel=2 an den Anfang Deiner tex-Datei schreibst, sind die Dateigrößen dann unter MiKTeX mit denen von TeX Live vergleichbar? Vielleicht kannst Du das noch testen und in Deiner Antwort berichten? Identisch werden sie verm. nicht werden, da die Fonts ja offenbar auch nicht identisch sind.

(30 Sep '15, 17:26) saputello

Gut Ding will Weile haben :-)

(30 Sep '15, 18:34) tom75
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×46
×44
×30
×1

gestellte Frage: 28 Sep '15, 15:41

Frage wurde gesehen: 11,642 Mal

zuletzt geändert: 30 Sep '15, 18:35