web-dev-qa-db-ja.com

ページの半分をPDFファイルに印刷するにはどうすればよいですか?

1ページPDFファイルです。このドキュメントの上半分のみを誰かに送信する必要があります。新しいPDFドキュメントを生成するにはどうすればよいですか?詳細を失うことなく、元のページの上半分のみで?

6
Grzenio

PDFファイルの選択した部分を印刷する方法

ネイティブのAdobe Acrobat Readerを使用する

  1. ツールバーの空白の領域を右クリックして、基本ツールバーが表示されていることを確認します。有効になっていない場合は、基本の横にチェックマークを付けます。

  2. 基本ツールバーで「スナップショットツール」を見つけて選択します。

  3. 印刷する領域の周りにボックスをドラッグします。選択がクリップボードにコピーされたことを通知するメッセージが表示されます。 [OK]をクリックすると、選択した領域の周りに破線が表示されます。

  4. 印刷をクリックします。

  5. 印刷ダイアログで、印刷範囲を「選択したグラフィック」に設定します。

  6. 選択範囲を目的のサイズで印刷する場合は、ページの拡大縮小を「なし」に設定します。

  7. 選択範囲が用紙に収まるようにする場合は、ページスケーリングを「用紙に合わせる」に設定します。用紙を最大限に活用するには、[自動回転と中央揃え]チェックボックスをオンにする必要がある場合があります。

  8. プレビューが完了したら、[OK]をクリックしてドキュメントを印刷します。

参考文献

4
slm

これを1回だけ行う必要がある場合は、GIMPでPDFを開き、上半分をコピーします。

gimp 150264785-test-pdf.pdf

インポートするページを選択するように求める画面が表示されます。

enter image description here

最初のページをインポートしてから、GIMPを使用して関心のある領域を選択して切り取り、新しい画像として貼り付けて、PDFに再度エクスポートします。

3
terdon

un2up (モジュロa回転)。したがって、Pythonおよびその pyPdfライブラリ

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
    (w, h) = p.mediaBox.upperLeft
    p.mediaBox.lowerLeft = (w, h/2)
    output.addPage(p)
output.write(sys.stdout)

PyPdfが廃止されたため、公式に推奨されているPyPDF2フォークを使用するように更新しました

このページは更新されなくなりました。私はpyPdfの保守をやめました。Phaseitという名前の会社がプロジェクトを分岐し、開発と保守をpyPdf2( http://knowah.github.com/PyPDF2/ )として祝福しました。

さらに、それをシェルスクリプトでラップしたかったので、コマンドライン引数を使用しました。

#!env python
import copy, sys
from PyPDF2 import PdfFileWriter, PdfFileReader
input = PdfFileReader(open(sys.argv[1], 'rb'))
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0, input.getNumPages())]:
    (w, h) = p.mediaBox.upperLeft
    p.mediaBox.lowerLeft = (w, h/2)
    output.addPage(p)
output.write(open(sys.argv[2], 'wb'))
0
user3433551

PyPdf 1.13の使用

#!/usr/bin/env python
import copy, sys from pyPdf import PdfFileWriter, PdfFileReader input = PdfFileReader(sys.stdin) output = PdfFileWriter() for p in [input.getPage(i) for i in range(0,input.getNumPages())]: q = copy.copy(p) (w, h) = p.mediaBox.upperRight p.mediaBox.upperRight = (w, h/2) q.mediaBox.lowerRight = (w, h/2) output.addPage(p) output.addPage(q) output.write(sys.stdout)

0
user95781