LoginSignup
0
0

【PHP】PDFから任意のページを切り出す

Last updated at Posted at 2021-11-11

PDFから任意のページを切り出して、単一ファイルとしてユーザーに保存させたいときに。
Laravelで実行する場合は、最初のrequire_once()が不要。

環境

  • Windows 10
  • PHP 7.3

FPDIのインストール

composer.jsonに以下を追記して、composer updateを実行。

composer.json
{
    "require": {
        "setasign/fpdf": "1.8.*",
        "setasign/fpdi": "^2.3"
    }
}

FPDI公式サイト

プログラム

PDFから1ページ目と2ページ目だけを切り出して、1つのファイルとしてダウンロードする。

Pdf.php
require_once('vendor/autoload.php');

use setasign\Fpdi\Fpdi;

$pdf = new Fpdi();
$pdf->setSourceFile('target.pdf');

$pdf->AddPage();
$tplId = $pdf->importPage(1);
$pdf->useTemplate($tplId);

$pdf->AddPage();
$tplId = $pdf->importPage(2);
$pdf->useTemplate($tplId, 0, 0, null, null, true);

$pdf->Output('D', 'result.pdf', true);

useTemplate()の6つ目の引数でページサイズ調整に対応。
Output()の3つ目の引数で日本語のファイル名に対応。

PDFのバージョン1.5以上のときにエラーが起きる対策

バージョン1.5以上のPDFはエラーが起きるので、QPDFを使って、対象のPDFを事前に変換しておく。
WindowsにQPDFをダウンロードして、コマンドプロンプトでbinフォルダに移動。

PDFのバージョンを1.4に変更。

qpdf --force-version=1.4 input.pdf output.pdf

もし上記コマンドで変換したPDFでエラーが出たら、バージョン1.4に変更+圧縮を解く。

qpdf --stream-data=uncompress --force-version=1.4 input.pdf output.pdf

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0