pdfx bzw PDF/A oder PDF/X

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


ellocco
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 67
Registriert: Fr 30. Apr 2010, 14:09
Wohnort: Ulm
Kontaktdaten:

pdfx bzw PDF/A oder PDF/X

Beitrag von ellocco »

Hallo allerseits,

es gibt die Möglichkeit weitgehend PDF/A konforme Dokumente mit
PDFLATEX zu erzeugen (PDF/A Dokumente sollen alles enthalten
um sie später noch auf einem anderen Betriebssystem öffnen zu können,
d.h. u.a. alle Schriften sollen eingebettet sein).
Dazu gibt es auch ein Paket, das heißt "pdfx".
Eine andere Variante ist möglicherweise die neue Option "pdfa"
von hyperref (zu finden im README.pdf von hyperref).

Nun habe ich leider ein Problem mit dem Paket "pdfx",
sobald ich für das Paket "hyperref" zu viele bzw. unpassende
Optionen benutze stürzt pdflatex ab.

Anbei mein Beispiel, hat jemand eine Idee wodran es liegt?

Grüße

ellocco
\RequirePackage{fix-cm}
\listfiles
\errorcontextlines=\maxdimen  
\documentclass[a4paper,pdftex]{article}       
\usepackage{cmap}          % The cmap package is intended to make the PDF files
                           % generated by pdflatex both searchable and copyable
                           % in acrobat reader and other compliant PDF viewers.

\usepackage[a-1b]{pdfx}    % PDFA-Type A: "a-1b" include all necessary information into the PDF-file

%% works
\usepackage[pdftex,pdfa]{hyperref}   % hypertext in PDF-files
%% does not work
%\usepackage[pdfauthor={Stefan Pofahl},pdftex]{hyperref}   
          
\begin{document}               
\verb|\usepackage[pdfauthor={Stefan Pofahl},pdftex]{hyperref}|  
does not work!
\end{document}                 


Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Optionen, mit textuellen Werten sollten - wie schon mehrfach im Forum erwähnt wurde - bei hyperref nicht beim Laden, sondern per \hypersetup gesetzt werden. Ursache ist, dass hyperref hier das Encoding ändern muss und das geht zuverlässig nur, wenn das Argument noch nicht gelesen ist, was bei \usepackage aber bereits der Fall ist:
\RequirePackage{fix-cm}
\listfiles
\errorcontextlines=\maxdimen  
\documentclass[a4paper,pdftex]{article}      
\usepackage{cmap}          % The cmap package is intended to make the PDF files
                           % generated by pdflatex both searchable and copyable
                           % in acrobat reader and other compliant PDF viewers.

\usepackage[a-1b]{pdfx}    % PDFA-Type A: "a-1b" include all necessary information into the PDF-file

\usepackage[pdfa]{hyperref}
\hypersetup{pdfauthor={Stefan Pofahl}}
         
\begin{document}              
Use \verb|\hypersetup{pdfauthor={Stefan Pofahl}}|!
\end{document}
Übrigens stürzt pdflatex bei mir - wie nicht anders zu erwarten war - auch nicht ab, sondern meldet schlicht einen Fehler. Teil einer vollständigen Problembeschreibung wäre gewesen, diesen anzugeben. Wenn pdflatex bei Dir doch abstürzt, wäre Teil einer vollständigen Fehlerbeschreibung, die Meldung anzugeben, die pdflatex oder das Betriebssystem beim Absturz ausgibt.

Außerdem ist das Thema falsch eingeordnet, da es bei der Frage nicht um irgendwelche Werkzeuge rund um LaTeX, sondern schlicht um die korrekte Anwendung eines Pakets oder meinetwegen auch zweier Pakete geht.

ellocco
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 67
Registriert: Fr 30. Apr 2010, 14:09
Wohnort: Ulm
Kontaktdaten:

Beitrag von ellocco »

KOMA hat geschrieben:Optionen, mit textuellen Werten sollten - wie schon mehrfach im Forum erwähnt wurde - bei hyperref nicht beim Laden, sondern per \hypersetup gesetzt werden. Ursache ist, dass hyperref hier das Encoding ändern muss und das geht zuverlässig nur, wenn das Argument noch nicht gelesen ist, was bei \usepackage aber bereits der Fall ist:
Ich habe beide alternativen Varianten probiert:
\hypersetup{pdfcreator={pdflatex}}
\hypersetup{
  pdfinfo={
    Title={Sample LaTeX input file} 
  % ...
  }
}
Ich kann auch festellen, daß es nun durchläuft.
Schade ist nur, daß Einträge in den Dokumenteneigenschaften
bei mir ausbleiben.

Interessant ist nun, ob das Paket "pdfx" noch eine Berechtigung
hat, oder ob evtl. die neue Option "pdfa" von "hyperref" ausreicht,
um ein akzeptables Erbebnis zu erziehlen.

Grüße

ellocco

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Bei Verwendung von pdfx und hyperref gibt es vermutlich so etwas wie ein Wettrennen darum, wer die entsprechenden Informationen setzen darf. Also dürfte es sinnvoll sein, die entsprechenden Informationen nicht nur mit hyperref-Mitteln, sondern auch den in der pdfx-Anleitung dokumentierten Anweisungen zu setzen, also beispielsweise
\Author{Max Strickmuster}
Ansonsten macht Option pdfa lediglich hyperref selbst PDF/A-konform. Es macht noch lange nicht das gesamte Dokument PDF/A-konform. In der hyperref-Anleitung (konkret im Teil README.pdf) heißt es dazu:
The new option ‘pdfa’ tries to avoid violations of PDF/A in code
generated by hyperref. However, the result is usually not in PDF/A,
because many features aren’t controlled by hyperref (XMP metadata,
fonts, colors, driver dependend low level stuff, ...).
Demnach braucht man das Paket pdfx also durchaus noch, wenn man ein PDF/A-konformes Dokument erzeugen will.

ellocco
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 67
Registriert: Fr 30. Apr 2010, 14:09
Wohnort: Ulm
Kontaktdaten:

Beitrag von ellocco »

KOMA hat geschrieben:Bei Verwendung von pdfx und hyperref gibt es vermutlich so etwas wie ein Wettrennen darum, wer die entsprechenden Informationen setzen darf. Also dürfte es sinnvoll sein, die entsprechenden Informationen nicht nur mit hyperref-Mitteln, sondern auch den in der pdfx-Anleitung dokumentierten Anweisungen zu setzen, also beispielsweise
\Author{Max Strickmuster}
...
Gute Idee, aber irgenwie habe ich Pech, ich habe folgendes kombiniert:
\def\Title{An Example Document}
\def\Author{Some Name}
\def\Subject{An Example Document}
\def\Keywords{LaTeX,Example,Document}
\usepackage{hyperref}   % hypertext in PDF-files
\hypersetup{pdfa}
\hypersetup{pdfusetitle}
Aber im ersten Schritt habe ich alles schön nach Anleitung gemacht
und die Informationen in ein eigenes File eingetragen, "testpdfx.xmpdata",
aber die Metaangaben sind stecken gebleiben.

Weitere Informationen zu dem Thema PDF/A habe ich auf folgender
Seite gefunden:
Generating PDF/A compliant PDFs from pdftex

Evtl. gibt die Seite ja Hinweise die ich nicht recht zu deuten vermag.
Ich bin erstmal mit meinem Latein am Ende.
Anbei mein unvollständige Anleitung, wie das Paket unter MiKTeX
verwendet werden kann.

Grüße

ellocco
Dateianhänge
test_pdfx.zip
(3.8 KiB) 745-mal heruntergeladen

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Dir ist schon klar, dass das von mir vorgeschlagene
\Author{...}
nicht dasselbe ist, wie das von Dir praktizierte
\def\Author{...}
...

Jedenfalls, wenn ich es genau so mache, wie in der pdfx-Anleitung angegeben:
\begin{filecontents*}{\jobname.xmpdata}
\Keywords{pdfTeX\sep PDF/X-1a\sep PDF/A-b}
\Title{Sample LaTeX input file}
\Author{Das war KOMA}
\Org{goLaTeX}
\end{filecontents*}
\RequirePackage{fix-cm}
\listfiles
\errorcontextlines=\maxdimen  
\documentclass[a4paper]{article}      
\usepackage[a-1b]{pdfx}
         
\begin{document}              
Does it work?
\end{document}
dann funktioniert das auch. AcroRead gibt dann nicht nur an, dass es sich um ein PDF/A-Dokument handelt, es werden auch Titel, Autor und Schlüsselwörter korrekt in den Eigenschaften angezeigt.

Übrigens kümmert sich pdfx dabei auch selbst um das korrekte Laden von hyperref und deaktiviert die Optionen von hyperref, die stattdessen über Befehle in der xmpdata-Datei gesetzt werden. Ob es auch funktioniert, wenn man statt eine externe Datei zu verwenden, die Anweisungen direkt ins Dokument schreibt, habe ich nicht mehr getestet. Ggf. kann man ja auch das filecontents-Paket verwenden, um die Datei bei jedem LaTeX-Lauf neu schreiben zu können.

ellocco
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 67
Registriert: Fr 30. Apr 2010, 14:09
Wohnort: Ulm
Kontaktdaten:

Beitrag von ellocco »

KOMA hat geschrieben:Dir ist schon klar, dass das von mir vorgeschlagene
\Author{...}
nicht dasselbe ist, wie das von Dir praktizierte
\def\Author{...}
...
Leider nein, "\def\Author{...}" habe ich benutzt, weil ich es auf
der Seite von river-valley.com so gesehen habe.
Was hast Du denn gemeint? Die Befehle in dem extra File *.xmpdata?

KOMA hat geschrieben:
\begin{filecontents*}{\jobname.xmpdata}
\Keywords{pdfTeX\sep PDF/X-1a\sep PDF/A-b}
\Title{Sample LaTeX input file}
\Author{Das war KOMA}
\Org{goLaTeX}
\end{filecontents*}
Prima, der Trick gefällt mir, danke!
Genau danach habe ich gesucht!

Anbei mein *.log File ich konnte Dein Minimalbeispiel nicht correkt
übersetzen :-(
Ich hoffe Du wirst aus denAngaben schlau. Ich habe übrigens
extra vor 20 min einen MiKTeX Update vorgenommen.

Grüße

ellocco
Dateianhänge
neuer_test_pdfx.zip
(20.41 KiB) 761-mal heruntergeladen

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

:?: neu.log enthält keine einzige Fehlermeldung und bei neu.pdf werden genau die Eigenschaften angezeigt, die eingestellt wurden. Inwiefern soll das nicht korrekt sein?

Und was hat die angegebene Seite mit pdfx.sty zu tun? Das Paket wird dort überhaupt nicht verwendet, Ich würde vorschlagen, dass Du stattdessen einfach mal die Anleitung des Pakets liest und Dich daran hältst, was dort steht ...

Irgendwie verstehe ich wohl nur noch Bahnhof. Deshalb mache ich jetzt lieber Schluss für heute.

ellocco
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 67
Registriert: Fr 30. Apr 2010, 14:09
Wohnort: Ulm
Kontaktdaten:

Beitrag von ellocco »

koma hat geschrieben:Und was hat die angegebene Seite mit pdfx.sty zu tun? Das Paket wird dort überhaupt nicht verwendet, Ich würde vorschlagen, dass Du stattdessen einfach mal die Anleitung des Pakets liest und Dich daran hältst, was dort steht ...
Hallo Koma,

ich empfinde Deinen Ton als leicht überheblich.
Wenn ich der Crack wäre, würde ich hier vermutlich
im Forum nicht fragen, sondern antworten.
Du hast ja die Anleitung gelesen und Dein Beispiel
müßte dann ja Anleitungskonform sein.
Aber es funktioniert bei mir nicht.
Mit welcher LaTeX-Distribution arbeitest Du denn?
Ich erwarte einfach, daß Dinge wie Titel und Verfasser
in den Metanagaben auftauchen.
Anbei die Angaben, die Ghostview und AcroRed
bei mir anzeigen.

Grüße

ellocco
Dateianhänge
metaangabenfehlen.pdf
(52.34 KiB) 847-mal heruntergeladen

ellocco
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 67
Registriert: Fr 30. Apr 2010, 14:09
Wohnort: Ulm
Kontaktdaten:

Beitrag von ellocco »

Ich mache auch Schluß für heute. Die Dokumentangaben sind jetzt im
PDF/A Dokument zu sehen.
Hier mein Code, erkommt ohne das Erzeugen einer externen Datei
aus:
\listfiles
\errorcontextlines=\maxdimen  
\documentclass[a4paper]{article}
%****************
% define medatata
%________________
\def\Title{An Example Document}
\def\Author{Some Name}
\def\Subject{An Example Document}
\def\Keywords{LaTeX,Example,Document}
%***************************************************************************
% \convertDate converts D:20080419103507+02'00' to 2008-04-19T10:35:07+02:00
% found on: http://support.river-valley.com/wiki/index.php?title=Generating_PDF/A_compliant_PDFs_from_pdftex
%___________________________________________________________________________
\def\convertDate{%
    \getYear
} 
{\catcode`\D=12
 \gdef\getYear D:#1#2#3#4{\edef\xYear{#1#2#3#4}\getMonth}
}
\def\getMonth#1#2{\edef\xMonth{#1#2}\getDay}
\def\getDay#1#2{\edef\xDay{#1#2}\getHour}
\def\getHour#1#2{\edef\xHour{#1#2}\getMin}
\def\getMin#1#2{\edef\xMin{#1#2}\getSec}
\def\getSec#1#2{\edef\xSec{#1#2}\getTZh}
\def\getTZh +#1#2{\edef\xTZh{#1#2}\getTZm}
\def\getTZm '#1#2'{%
    \edef\xTZm{#1#2}%
    \edef\convDate{\xYear-\xMonth-\xDay T\xHour:\xMin:\xSec+\xTZh:\xTZm}%
}
 
\expandafter\convertDate\pdfcreationdate 

\pdfinfo{%
    /Title    (\Title)
    /Author   (\Author)
    /Subject  (\Subject)
    /Keywords (\Keywords)
    /ModDate  (\pdfcreationdate)
    /Trapped  /False
}

\usepackage[a-1b]{pdfx}
\usepackage{hyperref}
         
\begin{document}              
Does it work? Yes!
\end{document}

Antworten