
PDFファイルのページを並べ替えるためにブックマーク/概要を使用していますが、出力ファイルの元のファイルpdftk
のブックマークが失われます。
私の注文はですpdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf
。
ページの順序を変更するときにブックマークを維持する方法を知りたいです。
答え1
これが可能な解決策です。ただし、ニーズに合わせて調整する必要があります。
この例では、PDFの最初のページを削除してから正しい場所を指すようにブックマークを更新する必要がありました。
in.pdfから1ページを削除します。
pdftk A=in.pdf cat A2-end output temp.pdf
in.pdfからin.infoファイルを作成します。
pdftk in.pdf dump_data > in.info
私の場合はページを削除する予定なので、in.infoを修正する必要があります。
したがって、ブックマークが正しいページを指すようにするには、BookmarkPageNumberを1ずつ減らす必要があります。
PHPコード:
$file = "in.info"; $data = file_get_contents($file); foreach (explode("\n", $data) as $row) { $tmp = explode(": ", $row); if ($tmp[0] == "BookmarkPageNumber") { if ($tmp[1] != "1") $tmp[1]--; echo $tmp[0].": ".$tmp[1]."\n"; } else { echo $row."\n"; } }
最終的なout.pdfを作成します。
pdftk temp.pdf update_info in2.info output out.pdf
pdftk 2.01を使用してDebianでテストされました。
答え2
答え3
pdftk in.pdf dump_data > in.info
これを実行してからupdate_info
作成するときにパラメータを追加する必要がありますout.pdf
。引用元man pdftk
:
update_info <info data filename | - | PROMPT>
単一のPDF情報辞書に保存されているメタデータを入力データファイルと一致するように変更します。入力データファイルは dump_data の出力と同じ構文を使用します。非ASCII文字はXML数値エンティティでエンコードする必要があります。 PDFのXMPストリームに保存されているメタデータは変更されません(存在する場合)。たとえば、
pdftk in.pdf update_info in.info output out.pdf
update_info_utf8 <info data filename | - | PROMPT>
入力エンコーディングがUTF-8であることを除いて、update_infoと同じです。
答え4
qpdfは少なくともcygwinでは魅力のように動作します。次のオプションを使用しない限り、リンク--empty
は維持されます。
qpdf input.pdf --pages input.pdf 1,4,5,7-r8,2,3,r7-z -- output.qpdf.pdf
(rNは最後からインデックスが作成されたページ、zは最後のページ)