From Wiki
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