1

PDFページからxy座標で指定された領域を抽出したい。抽出された領域は、新しい pdf ドキュメントのページとして保存される場合があります。これは数回行う必要があるため、プロセスをスクリプト化する必要があります。これを行うのに役立つツール/ライブラリはありますか?

4

3 に答える 3

2

iText (Java 用) または iText(Sharp) (.Net 用) が受け入れ可能なライブラリである場合、それらを使用して、PDF から既存のページをインポートし、そのセクションを別の PDF に表示することができます。

iText in Action — 2nd Edition第 6 章のTilingHero.java / TilingHero.csの例を見てください。中心的なコードは次のとおりです。

PdfImportedPage page = writer.getImportedPage(reader, 1);
// adding the same page 16 times with a different offset
float x, y;
for (int i = 0; i < 16; i++) {
    x = -pagesize.getWidth() * (i % 4);
    y = pagesize.getHeight() * (i / 4 - 3);
    content.addTemplate(page, 4, 0, 0, 4, x, y);
    document.newPage();
}

ご覧のとおり、元のページが 1 回インポートされ、そのさまざまなセクションがさまざまなページに表示されます。

(iText と iTextSharp は、無料で --- AGPL に従って --- または商用で利用できます)

于 2013-03-31T23:27:49.250 に答える
1

を使用するghostscriptと、次の方法で pdf をトリミングできます。

gs -f original.pdf -o final.pdf -sDEVICE=pdfwrite \
    -c "[/CropBox [x-left y-bottom x-right y-top] /PAGES pdfmark"

x-lefty-bottomなど、座標は必要な座標に置き換えることができます。gsの場合、座標(0, 0)はページの左下にあることに注意してください。

これは簡単にスクリプト化できます。

于 2013-03-31T18:02:40.933 に答える
1

このタスクを実行するには、「pdftoppm」を使用できます。

pdftoppm -f <first page> -l <last page> -jpeg -x <start x> -y <start y> -W <width> -H <height> -jpeg <in file> > <out file>

たとえば、トリミング領域の左上隅である点 (x,y) = (100,200) から最初の PDF ページの領域を、幅 50、高さ 80 でトリミングし、JPEG に保存します。ファイルは次を使用して行われます。

pdftoppm -f 1 -l 1 -jpeg -x 100 -y 200 -W 50 -H 80 'my.pdf' > 'crop.jpg'

ドキュメントの解像度に問題がある場合は、'pdftoppm' の '-r' オプションを使用できます (詳細については、'pdftoppm' のマニュアル ページを参照してください)。

確かに、必要に応じて JPEG ファイルを PDF に簡単に変換できます。

于 2013-03-30T13:21:50.703 に答える