pdflatex: Die Dateigröße von PDFs, die mit includepdfmerge(pdf-pages) generiert werden, ist viel kleiner als die von includegraphics

pdflatex: Die Dateigröße von PDFs, die mit includepdfmerge(pdf-pages) generiert werden, ist viel kleiner als die von includegraphics

Ich habe eine PDF-Datei test.pdf. Ich erstelle dieselbe PDF-Datei mit zwei verschiedenen Methoden neu includepdfmerge. Dabei includegraphicshabe ich festgestellt, dass die mit generierte PDF-Datei includepdfmergefast identisch mit der Original-PDF-Datei ist, während die mit generierte PDF-Datei includegraphics3-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.pdfist das deutlich größer als das test.pdfundtest_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 1000Seiten versuche, dann includepdfist die Dateigröße 1MBund die Verwendung includegrahicpsist11MB

VORÜBERGEHENDE PROBLEMUMGEHUNG

Aufgrund einiger Versuche und Fehler könnte ich die Dateigröße derzeit mit einer Kombination aus includepdfund 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 \includepdfmergeund 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

https://filebin.net/5p2a32kdx80qmvni

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 includepdfmergeund 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 timesnur bei Verwendung includegraphicsin 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:

Dieselbe Schriftart wird zweimal eingebettet, wenn mit Standalone erstellte Grafiken eingefügt werden

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

verwandte Informationen