変換を使用してPDFファイルの特定のページをインポートしますか?

変換を使用してPDFファイルの特定のページをインポートしますか?

以前にこれを行ったことがあるので、可能であると確信していますが、方法を忘れていました。 PDF形式を保持したいPDFの特定のページをインポートするようにConvertに指示する方法はありますか?

答え1

convert(1)下付きの表記を使用してPDFに「インデックス」を割り当てることができます。

$ convert source.pdf[1] dest.pdf 

インデックス値は、PDFエクスポートでページ番号を付ける方法によって異なります。ここでファイルをテストすると、数字は0から始まるように見えるので、上記の例では次のようになります。第二ドキュメントのページです。 PDFの作成者が文書のページにそのように「番号を付けた」ので、アルファベット順のインデックスを示すいくつかの例をオンラインで見たことがあります。

残念ながら、ImageMagickはすべてがピクセルベースであると仮定し、通常のPDFのレイアウトなどのベクトル画像をラスタライズするため、これは良い結果を提供しません。

作業のためのより良いツールは次のとおりです。ゴーストスクリプト、以下をインストールした可能性があります。

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

GhostscriptはImageMagickよりもPostScript派生(PDF)をよりよく理解しているので、PDFデータを変更せずに渡します。

答え2

ImageMagickはビットマップイメージ用のツールですが、ほとんどのPDFはそうではありません。使ってみるとそうです。ラスター化通常は望ましくないデータです。

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

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

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

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

もう1つの可能性(ここでは少し過剰ですが、1ページよりも複雑なニーズに役立ちます)はPythonです。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)

答え3

2011年のQ&Aです。 2021年現在、この目的のための最も安定した、よく維持されているオプションはqpdfだと思います。

qpdf input.pdf - ページ。 12 - 出力.pdf

ページ番号は1から始まるようですが、pdfファイルにページ番号メタデータがある場合、これがどのように機能するかを確認していません。

私は何年もpdftkを使ってきましたが、pdftkは正しく設計されておらず、古いライブラリのバージョンに頼っていました。

関連情報