FPDIで、既存のPDFを読み込む時に、圧縮が使われた文書はサポートしていないという警告が出る件の対策

'<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

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


The reCAPTCHA verification period has expired. Please reload the page.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください