FPDIで、既存のPDFを読み込む時に、圧縮が使われた文書はサポートしていないという警告が出る件の対策
2020/02/13
2020/02/26
'<b>FPDF error:</b> This document (/xxx/xxx/xxxx.pdf) probably uses a compression technique which is not supported by the free parser shipped with FPDI.' |
FPDIで既存のPDFをテンプレートとして読み込んで、文字列を表示追加して出力する処理があり、テンプレートのPDFが圧縮されているとフリーのパーサでサポートされていないというようなエラーが発生します。
以前にこの現象自体が発生した時は、テンプレートPDFを、acrobat proで圧縮してない形式に変換して使用するようにしました。
しかし、今回は、動的に差し替えが可能なPDFをテンプレートPDFとして使用する必要があったため、調べていたところマルチプラットフォーム対応しているqpdfというPDF変換コマンドがあることがわかり、このコマンドを使って前処理を行なったところ、上記のエラーが回避できました。
$ qpdf --stream-data=uncompress --force-version=1.4 template.pdf uncompressed.pdf |
- –stream-data=uncompress で可能であれば圧縮を解く
- –force-version=1.4 でバージョン指定(これも必要でした)
追記 2020-02-26
今日試したところ、–force-version=1.4 だけで、FPDI で読み込めるようになりました。もしかしたらPDFによっては、–stream-data=uncompress が必要になる場合もあるかもしれません。
$ qpdf --force-version=1.4 template.pdf uncompressed.pdf |