How to use ghostscript to convert PDF to PDF/A or PDF/X?

前端 未结 5 1347
灰色年华
灰色年华 2020-12-02 08:07

Is there a way to use ghostscript to convert PDF to PDF/A or PDF/X? I know it can be used to convert PDF to images, but I don\'t know if it can be used to convert PDF/A. Wha

5条回答
  •  北荒
    北荒 (楼主)
    2020-12-02 08:51

    Hope this answer helps others coming from Google with the same problem:

    To convert from PDF to PDFA-1b or PDFA-2b, you can use Ghostscript. I suggest you use the latest version (9.19 today).

    Install it

    In Mac OS, you may prefer to use Homebrew:

    brew install ghostscript
    

    In Linux, some distros bring a much older version (rhel7 sports 9.07). To download a fully independent modern one-file-only ghostscript, download it directly from the site:

    wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs919/ghostscript-9.19-linux-x86_64.tgz
    

    If the link above is broken when you try it 20 years from now, please refer to ghostscript.com and search for download section. Download the binary version, don't go for the source, unless you know what you are doing.

    In Windows, I cannot help you, but if you manage to install it, the following commands will also work, if you substitute the location of files and gs executable.

    Command line

    gs-919-linux_x86_64 -dPDFA=1 -dNOOUTERSAVE -sProcessColorModel=DeviceRGB -sDEVICE=pdfwrite -o output_file.pdf /path/to/PDFA_def.ps -dPDFACompatibilityPolicy=1 input_file.pdf
    

    In Mac gs-919-linux_x86_64 will be simply gs.

    Please note that output_file.pdf and input_file.pdf must be changed to the names of the output file (the converted file) and the input file (the file to be converted). /path/to/PDFA_def.ps is your copy of the file PDFA_def.ps.

    -dPDFA=1 is for PDFA-1b.

    -dPDFA=2 if you want PDFA-2b.

    What is PDFA_def.ps?

    PDFA_def.ps is some sort of template ghostscript uses to create a PDFA file. The tricky part is that, for some reason, ghostcript comes with a non-working file.

    You'll need to edit PDFA_def.ps and include the path to a valid ICC (color profile) file. Download a good color profile from Adobe:

    wget http://tutankhamon.acc.umu.se/mirror/archive/ftp.sunet.se/pub/vendor/adobe/adobe/iccprofiles/win/

    Inside that zip, find a file called AdobeRGB1998.icc, put it somewhere and put the path to that file INSIDE you PDFA_def.ps file.

    Here is a version of PDFA_def.ps, change PATH_TO_YOUR_ICC_FILE to the path of you AdobeRGB1998.icc.

    https://gist.githubusercontent.com/weltonrodrigo/19df77833f023fbe1572168982e4b515/raw/ea86e87379d14120d7ff26f6f235ac7eeb5f5dd5/PDFA_def.ps

提交回复
热议问题