From Wiki
Revision as of 16:26, 14 August 2021 by Roman (talk | contribs) (→‎Compatibility Matrix)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Generating a valid PDF/A document with LaTeX is quiet a journey. The success depends on your distribution (TexLive, MikTeX, ...) and your compiler (pdflatex, lualatex, xelatex). Here are some notes to make your live a bit easier.


Before generating a PDF/A, you'll need an ICC-Profile:

Get the file AdobeRGB1998.icc, put it into your folder and rename it to srgb.icc.

Possibility 1: Ghostscript

The easiest way is to compile your LaTeX document normally and than rework it with Ghostscript. Let's say you have a file called thesis.pdf and you want to convert it into a PDF/A conform file thesis-a.pdf with metadata (like author). First create a file called pdfmarks.txt, which includes the metadata:

[ /Title (document title)
  /Author (author name)
  /Subject (subject description)
  /Keywords (keyword1, keyword2, keywordX)
  /ModDate (D:20210814112233)
  /CreationDate (D:20210814112233)
  /Creator (application name or creator note)
  /Producer (PDF producer name or note)
  /DOCINFO pdfmark

Now it is time to convert your file, this example is executed on a Windows system using PowerShell:

    -sColorConversionStrategy=RGB `
    -sProcessColorModel=DeviceRGB `
    -sDEVICE=pdfwrite `
    -dPDFACompatibilityPolicy=1 `
    -sOutputFile="thesis-a.pdf" "PDFA_def.ps" "thesis.pdf" "pdfmarks.txt"

The file PDFA_def.ps comes with Ghostscript. There might be some errors because Ghostscript has to remove some things, but the result should be a valid PDF/A-3B document.

Possibility 2: pdfx

A simple example (pdfx.tex):



\title{Creating valid PDF/A files with \LaTeX}


You may build the document with:

  • pdflatex pdfx.tex
  • xelatex -shell-escape pdfx.tex

Possibility 3: hyperref & hyperxmp

Now an example using the hyperref and hyperxmp packages:




\immediate\pdfobj stream attr{/N 3} file{srgb.icc}
	/OutputIntents [
	/Type /OutputIntent
	/DestOutputProfile \the\pdflastobj\space 0 R
	/OutputConditionIdentifier (sRGB)
	/Info (sRGB)

\title{Creating valid PDF/A files with \LaTeX}


Build it with:

  • pdflatex test.tex
  • lualatex test.tex

Compatibility Matrix

TexLive ran on Ubuntu Focal, MikTeX on Windows 10.

Compatibility Matrix (2021-08-14)
Distribution Compiler pdfx hyperref
TexLive pdflatex X X
TexLive lualatex - X
TexLive xelatex X -
MikTeX pdflatex F F
MikTeX lualatex F X
MikTeX xelatex F -


  • X: compiled and validation successful
  • -: did not compile
  • F: did compile but failed validation (for pdfx this hack was used, otherwise it won't compile)