![pdflatex: Die Dateigröße von PDFs, die mit includepdfmerge(pdf-pages) generiert werden, ist viel kleiner als die von includegraphics](https://rvso.com/image/420773/pdflatex%3A%20Die%20Dateigr%C3%B6%C3%9Fe%20von%20PDFs%2C%20die%20mit%20includepdfmerge(pdf-pages)%20generiert%20werden%2C%20ist%20viel%20kleiner%20als%20die%20von%20includegraphics.png)
Ich habe eine PDF-Datei test.pdf
. Ich erstelle dieselbe PDF-Datei mit zwei verschiedenen Methoden neu includepdfmerge
. Dabei includegraphics
habe ich festgestellt, dass die mit generierte PDF-Datei includepdfmerge
fast identisch mit der Original-PDF-Datei ist, während die mit generierte PDF-Datei includegraphics
3-4 Mal größer als die Originaldatei ist. Unten sehen Sie den Latex-Code und den Link zu den Dateien.
METHODE 1: Verwenden von includepdfmerge
AUSGABEDATEINAME: test_includepdf.pdf
Das Skript fügt 5 Seiten aus test.pdf hinzu
\documentclass[version=3.21]{scrartcl}
\usepackage{pdfpages}
\usepackage[showframe]{geometry}
\usepackage[automark,headsepline=false,footsepline=false]{scrlayer-scrpage}
\pagestyle{empty}
\begin{document}
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}
\includepdfmerge[fitpaper,templatesize={432pt}{33.87999pt}]{test.pdf, 1}
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}
\includepdfmerge[fitpaper,templatesize={432pt}{33.87999pt}]{test.pdf, 2}
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}
\includepdfmerge[fitpaper,templatesize={432pt}{33.87999pt}]{test.pdf, 3}
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}
\includepdfmerge[fitpaper,templatesize={432pt}{33.87999pt}]{test.pdf, 4}
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}
\includepdfmerge[fitpaper,templatesize={432pt}{33.87999pt}]{test.pdf, 5}
\end{document}
METHODE 2: Verwenden von Includegraphics
AUSGABEDATEINAME: test_includegraphics.pdf
Das Skript fügt 5 Seiten aus test.pdf hinzu
\documentclass[parskip=full,version=3.21]{scrartcl}
\usepackage{pdfpages}
\usepackage[showframe]{geometry}
\usepackage[automark,headsepline=false,footsepline=false]{scrlayer-scrpage}
\pagestyle{empty}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}
\setlength{\baselineskip}{0pt}
\begin{document}
\KOMAoptions{paper=432pt:33.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=1]{test.pdf}%
\KOMAoptions{paper=432pt:33.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=2]{test.pdf}%
\KOMAoptions{paper=432pt:33.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=3]{test.pdf}%
\KOMAoptions{paper=432pt:33.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=4]{test.pdf}%
\KOMAoptions{paper=432pt:33.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=5]{test.pdf}%
\end{document}
Alle Dateien sind unter dem Link verfügbarhttps://filebin.net/1498hwp3fxnngpcs Hinweis: Der obige Link läuft am 20. September 2020 ab.
Die Dateigrößen, die ich habe, sind:
test.pdf 19 kB
test_includepdf.pdf 20 kB
test_includegraphics.pdf 76 kB
Wie wir sehen, test_includegrahicps.pdf
ist das deutlich größer als das test.pdf
undtest_includepdf.pdf
Warum erzeugt das zweite Skript mit Includegraphics große PDF-Dateien? Gibt es eine Möglichkeit, die Größe zu steuern?
Denn wenn ich es mit einem PDF mit 1000
Seiten versuche, dann includepdf
ist die Dateigröße 1MB
und die Verwendung includegrahicps
ist11MB
VORÜBERGEHENDE PROBLEMUMGEHUNG
Aufgrund einiger Versuche und Fehler könnte ich die Dateigröße derzeit mit einer Kombination aus includepdf
und verkleinern includegraphics
. Dies ist nicht die richtige Lösung, erfüllt aber bis zu einem gewissen Grad mein Problem.
Der Grund für meine Frage ist mir nicht klar geworden.
Da ich aber Includegraphics in meinem Latex-Projekt verwenden muss und gleichzeitig keine riesigen Dateigrößen haben möchte, habe ich durch Ausprobieren den folgenden Weg gefunden, der zu einer deutlich geringeren Dateigröße führt.
Fügen Sie eine zusätzliche erste Seite in das PDF ein, die aufgerufen wird mit \includepdfmerge
und dann können die restlichen Seiten aufgerufen werden mitincludegraphics
Also habe ich versucht
\documentclass[parskip=full,version=3.21]{scrartcl}
\usepackage{pdfpages}
\usepackage[showframe]{geometry}
\usepackage[automark,headsepline=false,footsepline=false]{scrlayer-scrpage}
\usepackage{xcolor}
\color[RGB]{84,84,84}
\pagestyle{empty}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}
\setlength{\baselineskip}{0pt}
\begin{document}
%%%%%%%% ADDITIONAL PAGE IN THE START CALLED USING includepdfmerge
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}
\includepdfmerge[fitpaper,templatesize={432pt}{33.87999pt}]{test.pdf, 1}
%%%%%% LATER PAGES CALLED USING INCLUDEGRAPHICS
\KOMAoptions{paper=432pt:38.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 38.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=1]{test.pdf}%
\KOMAoptions{paper=432pt:38.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 38.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=2]{test.pdf}%
\KOMAoptions{paper=432pt:38.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 38.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=3]{test.pdf}%
\KOMAoptions{paper=432pt:38.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 38.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=4]{test.pdf}%
\KOMAoptions{paper=432pt:38.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 38.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=5]{test.pdf}%
\end{document}
Die Änderungen sind wie folgt:
\newgeometry{layoutwidth = 432pt,layoutheight = 33.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}
\includepdfmerge[fitpaper,templatesize={432pt}{33.87999pt}]{test.pdf, 1}
\includepdfmerge wurde auf der Startseite und späteren Seiten hinzugefügt mitincludegraphics
\KOMAoptions{paper=432pt:38.87999pt,DIV=calc}%
\recalctypearea%
\newgeometry{layoutwidth = 432pt,layoutheight = 38.87999pt,left=0mm,right=0mm,top=0mm, bottom=0mm}%
\includegraphics[width=\textwidth,keepaspectratio,page=1]{test.pdf}%
Die endgültige PDF-Datei hat am Anfang eine zusätzliche Seite
Jetzt ist die Dateigröße 20kb
. Der folgende Link ist die endgültige Ausgabe pdf
Antwort1
Es scheint auszureichen, das PDF einmal in einer temporären Box zu speichern, um die Schriftoptimierung auszulösen. Dies ist nur bei pdflatex erforderlich, lualatex erledigt dies standardmäßig.
\documentclass{article}
\usepackage{graphicx}
\pagestyle{empty}
\makeatletter
\setbox\@tempboxa=\hbox{\includegraphics{example-image-a4-numbered}}% font is included only once
\makeatother
\begin{document}
\includegraphics[width=\textwidth,keepaspectratio,page=1]{example-image-a4-numbered}%
\newpage
\includegraphics[width=\textwidth,keepaspectratio,page=2]{example-image-a4-numbered}%
\newpage
\includegraphics[width=\textwidth,keepaspectratio,page=3]{example-image-a4-numbered}%
\newpage
\includegraphics[width=\textwidth,keepaspectratio,page=4]{example-image-a4-numbered}%
\newpage
\includegraphics[width=\textwidth,keepaspectratio,page=5]{example-image-a4-numbered}%
\end{document}
Antwort2
ANTWORT TEIL 1: WARUM IST DIE DATEIGRÖSSE SO GROSS, WENN NUR INCLUDEGRAPHICS VERWENDET WERDEN?
Das liegt daran, dass Schriftarten mehrfach eingebettet sind
Datei erstellt nur mitincludegraphics
$ pdffonts test_includegraphics.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
ABCDEE+ScaGoudy TrueType WinAnsi yes yes no 9 0
ABCDEE+ScaGoudy TrueType WinAnsi yes yes no 19 0
ABCDEE+ScaGoudy TrueType WinAnsi yes yes no 31 0
ABCDEE+ScaGoudy TrueType WinAnsi yes yes no 41 0
ABCDEE+ScaGoudy TrueType WinAnsi yes yes no 51 0
Datei erstellt nur mitincludepdfmerge
$ pdffonts test_includepdf.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
ABCDEE+ScaGoudy TrueType WinAnsi yes yes no 12 0
DATEI erstellt mit erster Seite includepdfmerge
und Rest mitincludegraphics
$ pdffonts test_mix.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
ABCDEE+ScaGoudy TrueType WinAnsi yes yes no 15 0
Wie man sehen kann, wird die Schriftart 5 times
nur bei Verwendung includegraphics
in den beiden anderen Fällen eingebettet.once
KEINE ANTWORT FÜR TEIL 2 GEFUNDEN: SO VERMEIDEN SIE ES
But now the question is how can we avoid font getting embedded mutliple times when made using only includegraphics
Ich habe eine ähnliche Frage gefunden:
Eine der Antworten besagt, dass die Verwendung von Latex nicht möglich ist. Die einzige Möglichkeit besteht darin, es später mitpdfsizeopt
https://tex.stackexchange.com/a/83709/221200
Habe auch die vorgeschlagene Lösung ausprobiert \pdfinclusioncopyfonts=0
, aber sie funktioniert nicht, oder die Schriftarten werden mehrfach in pdflatex eingebettet