pdfx-Paket schlägt mit veraPDF fehl und Preflight unterstützt keine Sonderzeichen (UTF-8 wird nicht verwendet) und

pdfx-Paket schlägt mit veraPDF fehl und Preflight unterstützt keine Sonderzeichen (UTF-8 wird nicht verwendet) und

Ich habe (nach viel Arbeit) meine Doktorarbeit in LaTeX fertiggestellt. Allerdings hatte ich ein großes Problem, nachdem ich gelesen hatte, dass ich das PDF als PDF/A-Datei einreichen muss. Zunächst versuchte ich, es mit der Acrobat Professional Software zu konvertieren (das hat die IT gemacht), aber es hat nicht geklappt. Also ging ich einen Schritt zurück und versuchte, die PDF/A-Datei über LaTeX zu erstellen und stieß auf das Paket pdfx. Während ich dieses Paket verwende, kann ich nicht verwenden, usepackage[utf8]{inputenc}da es eine Abhängigkeit des pdfxPakets ist. Nachdem ich jedoch einige eigene Befehle und andere mathematische Operatoren wie geändert hatte \bullet, die bereits verwendet werden oder nicht mehr existieren, trat das Problem auf, dass die Umlaute ä ü ö ßnicht mehr funktionieren.

AktualisierenDieses Problem hing mit einer nicht aktualisierten Version von zusammen pdfx package. Nach der Aktualisierung \usepackage[utf8]{inputenc}kann verwendet werden und alles funktioniert einwandfrei.


Das zweite Problem ist, dass das generierte PDF nicht PDF/A-konform ist. preflight and veraPDFEs gab eine Reihe von Fehlern, die ich nicht beheben kann. Irgendwelche Ideen?


Ich hoffe, dass mir jemand einen Rat geben kann.

Danke im Voraus Tobi

Antwort1

Update: Patch für pdfx unten hinzugefügt (23.02.2018)

Heute habe ich mich mit dem Thema PDF/A-Dateigenerierung mit LaTeX beschäftigt und pdfx packagedie Lösung gefunden. Eigentlich werde ich zwei Versionen und die Validierungsprüfung mithilfe der veraPDFAnwendung vorstellen. Okay, fangen wir an. Am einfachsten ist es, Acrobat Professional zu verwenden (falls verfügbar).


Verwenden von Acrobat Professional

  • Kompilieren Sie Ihre LaTeX-Datei so wie sie ist in ein PDF
  • Öffnen Sie das PDF auf dem Computer mit der installierten Adobe-Software
  • Drucken Sie die Datei mit dem Adobe PDFDrucker aus und wählen Sie die Option PDF/A
  • Prüfen mit veraPDFoder preflight-> gültig
  • Fertig & glücklich

In meinem Fall konnte ich es nicht direkt konvertieren, da einige Fehler auftraten. Ich habe keine Ahnung, warum, aber der einzige mögliche Weg war der oben genannte.


pdfxPaket in LaTeX verwenden

  • Stellen Sie sicher, dass Sie das neueste pdfxverfügbare Paket haben. Zu diesem Zweck können Sie einfach daskpsewhere pdfx.sty in Linux einfach die Funktion verwenden, um den Pfad zur Datei abzurufen und die Version zu überprüfen (öffnen Sie sie mit einem Editor). In meinem Fall hatte ich ein älteres Paket und musste das Paket aktualisieren (https://ctan.org/pkg/pdfx?lang=en)
  • Alle Informationen sind in der Dokumentation enthalten, ebenso wie weitere Dinge wie how to add the meta keywords.

Beispielsweise habe ich mit der inputFunktion an der ersten Stelle (Achtung: vor der Dokumentklassendefinition) eine neue Datei eingefügt.

\input{Pre/Pre_MetaData}
\documentclass[...]
\input{Pre/Pre_Packages}
\input{Pre/Pre_Settings}

In der Pre_MetaDataDatei findet man Code dieser Art (der gemäß der Dokumentation des pdfxPakets erweitert werden kann):

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 

\begin{filecontents*}{\jobname.xmpdata}
 \Title{Your Title of the work}
 \Author{Tobias Holzmann\sep And Others}
 \Keywords{Your\sep Keywords\sep}
 \Publisher{...}
 \Copyright{...}
\end{filecontents*}

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 

pdfxWenn man das Paket am Ende der Arbeit verwendet (also wenn man ein Buch oder eine Diplomarbeit geschrieben hat und feststellt, dass man eine PDF/A-Datei erstellen muss), kann es passieren, dass man einen Workaround mit selbst generierten Befehlen machen muss. Daher empfehle ich jedem, der direkt weiß, dass es eine PDF/A-Datei sein muss, direkt mit dem Einbinden der zu beginnen pdfx package. Außerdem ist es – wie in der Dokumentation angegeben – eine gute Idee, dieses Paket an erster Stelle zu laden. Danach kann man das Dokument neu kompilieren und das PDF/A-PDF wird generiert. Zusammenfassend:

  • Stellen Sie sicher, dass Sie das neueste pdfxPaket installiert haben
  • Fügen Sie die Metadaten gleich zu Beginn ein (bevor die Dokumentklasse beginnt).
  • Binden Sie das pdfxPaket an erster Stelle ein (lesen Sie auch die Abhängigkeitsliste: Das hyperrefPaket muss beispielsweise nicht mehr vom Benutzer eingebunden werden, da pdfxes gerade geladen wird ...)
  • Fügen Sie das Farbschema zu Ihrem LaTeX-Projekt hinzu (Sie finden eines in den Quelldateien oder hierhttp://www.color.org/iccprofile.xalter)
  • Beheben Sie Probleme mit selbst definierten Befehlen (falls vorhanden).
  • Kompilieren Sie es mit pdflatex (ich habe es so gemacht)
  • Überprüfen Sie es mit veraPDFund Sie werden wahrscheinlich eine Reihe von Fehlern sehen, die unten zusammengefasst und behoben werden
  • Wenn alles in Ordnung ist, sind Sie fertig, herzlichen Glückwunsch :)

Fehler mit veraPDFundpdfx

Mir fiel auf, dass ich bei der ersten Methode ( Acrobat Pro) ein gültiges PDF/A-Ergebnis erhielt, während ich mit LaTeX und dem preflightPaket viele Prüfungen nicht bestand. Dies sagte mir jedoch, dass es einige Probleme mit dem Paket oder allgemein mit dem von LaTeX geschriebenen PDF gab.veraPDFpdfxpdfx

veraPDFIch habe bei der Überprüfung der von LaTeX generierten PDF/A-Datei mithilfe von und eine Reihe von Fehlermeldungen erhalten preflight. Zu Beginn hatte ich mehr als eine halbe Million fehlgeschlagene Prüfungen (~ 543.000). Die meisten Fehler hingen mit einem nicht enthaltenen Farbschema zusammen (Punkt 4 in der Liste oben). Dies kann leicht behoben werden, indem man das Farbschema hinzufügt und fertig.

Eine weitere Reihe von Fehlern war schwer zu finden und betraf Transparenzfiguren und andere Funktionen, die (jetzt weiß ich es) von der PDF-Version 1.4 nicht unterstützt werden. In meinem LaTeX-Projekt gibt es mehr als 50 EPS-Dateien, die mithilfe des epstopdfPakets in PDFs konvertiert werden. Hier beginnt das Problem mit pdfxeinem Problem, das durch dieses Paket verursacht wird. Ich vermute, dass es sich um einen Fehler handelt, und habe den Entwicklern bereits eine Nachricht gesendet.

  • In jedem Fall pdfxwird das Paket die von uns erstellte PDF-Version auf die Version 1.4 setzen, die für den 2005 veröffentlichten PDF/A-1-Standard korrekt ist; vgl. ISO 190005-1 (https://en.wikipedia.org/wiki/PDF/A).
  • Jede Einstellung/Option, die man für das Paket festlegt, pdfxführt jedoch zu einer PDF-Version 1.4. Selbst wenn eine Spezifikation von PDF/A-2 erfolgt. Dies sollte tatsächlich eine PDF-Version 1.7 ergeben.
  • Und hier beginnt das Problem, denn es epstopdfwerden PDFs der PDF-Version 1.5 generiert, während das LaTeX-Dokument in Version 1.4 vorliegt. Dies ist nicht kompatibel und die Grafik-PDFs der Version 1.5 haben Funktionen, die in Version 1.4 nicht unterstützt werden.
  • Diese Diskrepanz zwischen den Versionen führte zu zahlreichen Fehlern hinsichtlich veraPDFder Opazität und Transparenz der Zahlen, insbesondere bei den caWerten usw. (https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules)

Die Version einer PDF-Datei lässt sich unter Linux übrigens mit dem folgenden pdfinfo myPDF.pdfBefehl ermitteln.

Um das Problem zu beheben, muss man das pdfxPaket hacken, um die richtige Version für das PDF einzustellen. Dazu muss man den Pfad zur pdfx.styDatei mit kpsewhere pdfx.styagain finden und diese mit einem beliebigen Editor öffnen (mit sudo):

sudo vim /usr/share/texlive/texmf-dist/tex/latex/pdfx/pdfx.sty

Suche nach diesem Kommentar – Zeile 750 (in Version v1.5.84)

%% Hyperref options for PDF/A and PDF/E

Und fügen Sie nach dem hyperrefZeug die folgende Zeile hinzu, während Sie die Version entsprechend der Version ändern, die Sie für Ihr PDF haben möchten.

\thepdfminorversion=6  % Corresponds to version 1.6

Um die Situation in meinem Fall besser darzustellen, habe ich es in Zeile 815 hinzugefügt:

\ifpdfx@x
 \@ifpackageloaded{hyperref}{%
  \ifxetex
   \expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@xetex}
  \else\ifluatex
   \expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@luatex}
  \else
   \expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@pdftex}
  \fi\fi
 }{%
  \ifxetex
   \expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@xetex]{hyperref}
  \else\ifluatex
   \expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@luatex]{hyperref}
  \else
   \expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@pdftex]{hyperref}
  \fi\fi
 }%
\else
 \ifpdfx@e
  \@ifpackageloaded{hyperref}{%
   \ifxetex
    \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@xetex}
   \else\ifluatex
    \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@luatex}
   \else
    \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@pdftex}
   \fi\fi
  }{%
   \ifxetex
    \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@xetex]{hyperref}
   \else\ifluatex
    \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@luatex]{hyperref}
   \else
    \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@pdftex]{hyperref}
   \fi\fi
  }%
 \else % generating PDF/A or ...
  \@ifpackageloaded{hyperref}{%
   \ifxetex
    \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@xetex}%
   \else\ifluatex
    \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@luatex}%
   \else
    \expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@pdftex}%
   \fi\fi
  }{%
   \ifxetex
    \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@xetex]{hyperref}
   \else\ifluatex
    \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@luatex]{hyperref}
   \else
    \expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@pdftex]{hyperref}
   \fi\fi
 }%
\fi\fi
\hypersetup{pdfencoding=auto}%  unicode
\expandafter\ifx\csname KV@Hyp@psdextra\endcsname\relax\else
 \hypersetup{psdextra}
\fi
\thepdfminorversion=6  % Corresponds to version 1.6

Speichern Sie anschließend die Datei und aktualisieren Sie die TeX-Umgebung: sudo texhash. Fertig. Kompilieren Sie nun Ihr PDF neu und Sie erhalten die PDF-Version, die Sie benötigen (verwenden Sie pdfinfozum Überprüfen). Nach erneuter Überprüfung des PDF mithilfe Acrobat Pro -> preflightder PDF/A-Datei war ich zufrieden. Für das veraPDFTool erhalte ich immer noch 1 Fehler, der mit Schriftprogrammen zusammenhängt Rule 6.3.4-1(https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules#rule-634-1), aber ich habe keine Ahnung, was es mir sagt. Jeder Kommentar ist hier willkommen.

Bildbeschreibung hier eingeben


pdfxPaket

Bei meiner Untersuchung des pdfxPakets habe ich festgestellt, dass die Autoren eine Reihe möglicher Optionen haben, die nicht in der Dokumentation aufgeführt sind. Die Optionen haben jedoch (soweit ich weiß) keinerlei Einfluss; z. B. die pdf16Option, die die PDF-Version auf 1.6 ändern soll. Mir ist jedoch aufgefallen, dass der hyperrefoben angegebene Codeausschnitt der Teil ist, in dem die Variable \thepdfminorversionin jedem Fall auf 4 geändert wird. Ich habe es den Entwicklern geschrieben und hoffe auf Feedback - vielleicht ist einer von euch auch interessiert und kann mehr herausfinden (ich bin mit der LaTeX-Syntax nicht so vertraut).


veraPDF

Nur ein paar Anmerkungen zum veraPDF application.

Ich kam auf die Idee mit der PDF-Version basierend auf der Ausgabe von preflight-> falsche PDF-Version und LaTeX, in der bei meinen Bildern einige Dinge der Version 1.4 und 1.5 angegeben wurden.

Tut mir leid, dass die Antwort jetzt so lang ist, aber vielleicht kann jemand daraus neue Informationen ziehen und das Problem lösen. Wenn ich Feedback von den Erstellern bekomme, werde ich einen Kommentar hinterlassen.

Endlich: pdfxfunktioniert jetzt sehr gut für meine Doktorarbeit. Danke für die Kommentare und natürlich, wenn Sie es verwenden, lualatexkönnen Sie es vermutlich so verwenden, wie RobtAll es erklärt hat. Tolles Forum, tolle Leute! Danke, Tobi


pdfxPatch

Im Moment stehe ich in Kontakt mit Ross Moore und er hat mir einen Patch geschickt, der besser geeignet ist als mein Fix. Er ist derzeit nicht im offiziellen Repository aktualisiert, deshalb teile ich ihn hier.

https://Holzmann-cfd.com/forums/pdfx.sty

verwandte Informationen