web-dev-qa-db-ja.com

変換を使用して、PDFファイルから特定のページを取得しますか?

私は以前にこれをしたことがあるので、それが可能であると確信しています。 PDFの特定のページを取得するように変換に指示する方法があり、そのページの形式をPDFとして保持したいと思います。

21
ixtmixilix

ImageMagickはビットマップ画像用のツールですが、ほとんどのPDFにはありません。これを使用すると、データが rasterize になり、多くの場合望ましくありません。

Pdftk は、PDFファイルから1つ以上のページを抽出できます。

pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf

PDFLaTeXでLaTeXをインストールしている場合は、 pdfpages を使用できます。 PDFページ用のシェルラッパー pdfjam があります。

pdfjam -o pages_42_43.pdf input.pdf 42,43

別の可能性(ここではやりすぎですが、1ページよりも複雑な要件に役立ちます)は、Python with PyPdf ライブラリ)です。

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
    output.addPage(input.getPage(i))
output.write(sys.stdout)

convert(1)で添え字表記を使用して、PDFに「インデックス」を付けることができます。

$ convert source.pdf[1] dest.pdf 

インデックス値は、PDFエクスポーターがページに番号を付けた方法によって異なります。ここでのファイルのテストでは、番号はゼロから始まるように見えるため、上記の例ではドキュメント内の2番目のページページです。PDF作成者がページに "番号を付けた"ため、代わりに文字インデックスを表示する例をオンラインで見ました代わりにそのドキュメントで。

残念ながら、ImageMagickはすべてがピクセルベースであると想定しているため、これは非常に良い結果にはなりません。そのため、典型的なPDFのタイポグラフィなどのベクター画像をラスタライズします。

ジョブに適したツールは Ghostscript で、おそらくすでにインストールされています。

$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
    -sOutputFile=dest.pdf -f src.pdf

GhostscriptはPDF(PostScriptの派生物)を理解しているため、これはPDFデータを変更せずに渡します。ImageMagickよりもはるかに深いレベルです。

25
Warren Young