Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Given a PDF of random origin, how do I, on Linux:

  • confirm whether it is in PDF/A format already?
  • if it is not in PDF/A format, convert it to PDF/A with a minimum loss of fidelity?

I am aware that the conversion may cause loss of exotic elements of the document, but let's assume that the ability to open the document at all in a relatively far future is more important than such spiffy features (which might not be available/readable at such a time anyway). I would rather be able to visually confirm the accuracy of the conversion when I can trivially view the documents side by side than risk not being able to open the original file.

share|improve this question
add comment

2 Answers

Identification

I found this tool which looks to be what you can use to identify PDF/A files. It's called DROID (Digital Record and Object Identification). It's Java based and can be run from a GUI or the command-line.

excerpt

DROID is a software tool developed by The National Archives to perform automated batch identification of file formats. Developed by its Digital Preservation Department as part of its broader digital preservation activities, DROID is designed to meet the fundamental requirement of any digital repository to be able to identify the precise format of all stored digital objects, and to link that identification to a central registry of technical information about that format and its dependencies.

Given it's sponsored by the National Archives I would assume it's the right tool for doing this, given the intended purpose of the PDF/A format. Also the project is open source and the code is available on Github as well as packaged in binary form from the National Archives website.

Validation & Conversion

If you're looking for a tool to perform validation & conversion I believe PDFBox can do this. PDFBox lists PDF/A validation right on the front page of their website. It's another Java application 8-).

excerpt from website

PDF/A Validation
Validate PDFs against the PDF/A ISO standard.

Under the command line tools section on the left of their main page the show the following usage for the tool:

$ java -jar pdfbox-app-x.y.z.jar org.apache.pdfbox.ConvertColorspace [OPTIONS] <inputfile> <outputfile>

Conversion

For just doing conversion I found this method from a blog post titled: Free way to convert an existing PDF to PDF/A, that uses the following tools:

  • Ghostscript 8.64 Only.
  • PDFBox 0.7.3
  • pdfmarks ( file to supply additional meta data)
  • PDFA_def.ps
  • USWebCoatedSWOP.icc

With the above in place you use the following command:

$ gs -sDEVICE=pdfwrite -q -dNOPAUSE -dBATCH -dNOSAFER     \
-dPDFA -dUseCIEColor -sProcessColorModel=DeviceCMYK       \
-sOutputFile=Out_PDFA.pdf PDFA_def.ps pdfmarks IN_PDF.pdf

It isn't without it's warts. The article discusses one of them, fixing the print flags on hyperlinks being one of them. The article provides a Java application that you can use to fix these:

$ java FixPrintFlag Out_PDFA.pdf New_verifiablePDFA.pdf

It's not pretty but appears to be workable. See the article for more details.

References

share|improve this answer
    
I'll have to give this a try - it looks awfully promising. With a little fiddling it might even be possible to integrate this into the CUPS-PDF printer; there are settings in /etc/cups/cups-pdf.conf that look promising for that purpose. Thanks for taking the time! Not really up to testing it right now but I'll get back to this (hopefully tomorrow). –  Michael Kjörling Jun 15 '13 at 20:34
    
@MichaelKjörling - thanks for the question. I'd never heard of the PDF/A format before and we have a need for this exact thing at work. So you helped me look like a genius for knowing about this stuff now 8-). –  slm Jun 15 '13 at 21:27
add comment

For file identification, the command file is often helpful. It'll look your file for magic numbers, file identifiers, encoding information, etc. to give any helpful information it can.

In the particular case of PDF files, the utilitary pdfinfo is specially useful. In my case, a Gentoo distribution, it's packaged with poppler, a PDF rendering library.

share|improve this answer
    
pdfinfo -meta and looking at xmpmeta/RDF/Description/conformance seems to say whether the PDF is PDF/A (that node is A) or not (the node doesn't exist or has some other value). It's a start! –  Michael Kjörling Jun 15 '13 at 20:37
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.