I use Mac OS X Snow Leopard. I have a PDF with form fields, annotations, and stamps on it. I would like to freeze (or "flatten") that PDF so that the form fields can't be changed and the annotations/stamps are no longer editable. Since I actually have many of these PDFs, I want to do this automatically on the command line.

Some things I've tried/considered, with their degree of success:

  • Open in Preview and Print to File. This creates a totally flat PDF without changing the file size. The only way to automate seems to be to write a kludgy UI-based AppleScript, though, which I've been trying to avoid.
  • Open in Acrobat Pro and use a JavaScript function to flatten. Again, not sure how to automate this on the command line.
  • Use pdftk with the flatten option. But this only flattens form fields, not stamps and other annotations.
  • Use cupsfilter which can create PDF from many file formats. Like pdftk this flattened only the form fields.
  • Use cups-pdf to hook into the Mac's printserver and save a PDF file instead of print. I used the macports version. The resulting file is flat but huge. I tried this on an 8MB file; the flattened PDF was 358MB! Perhaps this can be combined with a ghostscript call as in Ubuntu Tip:Howto reduce PDF file size from command line.

Any other suggestions would be appreciated.

link|improve this question
1  
Automator.app has some built-in pdf processing options. Perhaps one of them can help directly or combined with one of the actions above . – Kassym Dorsel Dec 7 '11 at 16:26
Can you provide a PDF sample document that contains these elements? – Daniel Beck Jan 25 at 13:48
I think so. Right now all my samples are student quizzes so I have to mock up something. – Matthew Leingang Feb 2 at 18:01
feedback

migrated from stackoverflow.com Dec 21 '11 at 19:46

This question came from our site for professional and enthusiast programmers.

2 Answers

It might be sub-optional, but have you considered chaining cups-pdf with pdftk or cupsfilter? Like you mentioned, cups-pdf will produce a flat pdf file and then pass it through pdftk or cupsfilter to get it down to an acceptable size?

Alternatively take a look at /System/Library/Printers/Libraries/convert You should be able to do something like

/System/Library/Printers/Libraries/convert -f input_file.pdf -o output_file.pdf -j "application/pdf"
link|improve this answer
feedback

Applescript is probably the best/quickest way to the command line. Once it works you can save it as an application and make an alias in your command shell to run it. Thereafter, you just type your alias at the command line.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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