1ページあたり2辺のPDFを1ページあたり1辺に変換するにはどうすればよいですか?
1ページあたり2辺のPDFを1ページあたり1辺に変換するにはどうすればよいですか?
回答:
OK、Acrobat(Readerではなくフルバージョン)の助けを借りて、問題はすでに解決されています。しかし、Acrobatにアクセスできない場合はどうすればよいでしょうか?これはGhostscriptとpdftkでも実行できますか?
...そしてその楽しみのために、「ダブルアップ」ページではなく「トレブルアップ」で入力ファイルを使用しましょう。実際、私は今日、そのようなPDFをメールで受け取りました。それは、レポレロのスキームで折り畳まれたチラシでした。シートサイズはA4ランドスケープ(842pt x 595pt)で、次のように折りたたまれて配置されました。
Front side to be printed, page 1 of PDF
+--------+--------+--------+ ^
| | | | |
| 5 | 6 | 1 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
^ ^
fold fold
v v
+--------+--------+--------+ ^
| | | | |
| 2 | 3 | 4 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->
6ページのPDFを1つ作成します。各ページのサイズは280.67pt x 595 ptです。
最初に、各入力ページから左側のセクションを抽出しましょう。
gswin32c.exe ^
-o left-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [0 0]>> setpagedevice" ^
-f myflyer.pdf
これらのパラメーターは何をしましたか?
-o ...............:
出力ファイルに名前を付けます。暗黙的にも使用し-dBATCH -dNOPAUSE -dSAFER
ます。-sDEVICE=pdfwrite :
出力形式としてPDFが必要です。-g................:
出力メディアのサイズをピクセル単位で設定します。pdfwriteのデフォルトの解像度は720 dpiです。したがって、PageOffsetに一致するように10を掛けます。-c "..............:
Ghostscriptに、指定されたPostScriptコードスニペットをメイン入力ファイルの直前に処理するように要求します(これはに従う必要があります-f
)。<</PageOffset ....:
メディア上のページ画像のシフトを設定します。(もちろん、左ページの場合、シフトby [0 0]
は実際の効果はありません。)-f ...............:
この入力ファイルを処理します。最後のコマンドはどの結果を達成しましたか?
これです:
Output file: left-sections.pdf, page 1
+--------+ ^
| | |
| 5 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: left-sections.pdf, page 2
+--------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
次に、中央のセクションに対して同様のことを行います。
gswin32c.exe ^
-o center-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [280.67 0]>> setpagedevice" ^
-f myflyer.pdf
結果:
Output file: center-sections.pdf, page 1
+--------+ ^
| | |
| 6 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: center-sections.pdf, page 2
+--------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
最後に、適切なセクション:
gswin32c.exe ^
-o right-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [561.34 0]>> setpagedevice" ^
-f myflyer.pdf
結果:
Output file: right-sections.pdf, page 1
+--------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-sections.pdf, page 2
+--------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
次に、ページを1つのファイルに結合します。
pdftk.exe ^
A=right-sections.pdf ^
B=center-sections.pdf ^
C=left-sections.pdf ^
cat A1 B2 C2 A2 B1 C1 ^
output single-files-input.pdf
verbose
できた これが望ましい結果です。サイズが280.67x595の6つの異なるページ。
結果:
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ ^
| | | | | | | | | | | | |
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | |
| | | | | | | | | | | | 595 pt
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ v
< 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt >
f = open("order.dat","w")
for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i))
f.close()
これにより、「A1 B1 A2 B2 ... A63 B63」のファイルorder.datが作成されます。その後、それをにコピーして貼り付けることができますpdftk
。
@peims、ありがとう。メソッドの段階的なバージョンは次のとおりです。Kindle DX用に変換したいファイルで試してみましたが、完全に機能します。
次に、pdftk.exe(http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/から)を使用して、結果を単一のファイルにインターリーブします。「pdftk.exe」、「left.pdf」、および「right.pdf」を「D:\」にコピーして実行します。
注:ファイルを「C:\」にコピーすると、セキュリティ権限が原因でWin 7では機能しません。D:\がない場合は、ディレクトリ「C:\ x」を作成して操作を完了します。
通常、これらの結果は十分に良好です。ただし、出力を改善するには、さらに2つのオプションの手順があります。
ちょうど同じ問題がありました。pdfページを分離して切り取るためのオープンソースのJava GUIツールであるbrissを見つけました。
http://sourceforge.net/projects/briss/
Linuxでは、ユーザーインターフェースが完全に簡単ではない場合でも、非常にうまく機能しました。いくつかの異なるサイズのページを含むPDFでも機能しました!
ドキュメントを複製し、ページをトリミングして、1つのファイルに偶数ページ番号のみが表示され、他のファイルには奇数ページ番号のみが表示されるようにすることができます。次に、ファイルを単一のページに分割し、再結合して、ページの片面に1つのドキュメントを作成します...
これは、次のようないくつかの方法を使用して実行できます。
次のスクリプトを使用して、スキャンされた書籍をMacおよびLinuxで処理します。これは非常に多くのメモリを消費します。
#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder".
#
# The second step is to take each page of the PDF and split this into two two pages,
# because each page of the scanned document actually contains two pages of the book.
#
#
FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf
echo "Making a temporary copy of the input file."
cp $1 $FILE
#
# Start cropping
#
echo "Cropping the PDF"
# The first regex removes all boxes but CropBox. The second regex renames the CropBox as MediaBox
perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE
echo "Validating the PDF"
#Run PDFTK to ensure that the file is OK
cat $FILE | pdftk - output $FILE2
#
# Done cropping, start splitting the pages
#
echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"
convert -density 200 $FILE2 -crop 50%x0 +repage $FILE3
#
# Done spliting, copy the result in a new file
#
mv $FILE3 $1.pages.pdf
素晴らしいリファレンスをありがとう。私は同様の問題に直面していましたが、私のために働いたものを共有したかったです。
左側のみに縦向きのテキストを含む横向きのタブロイドPDFがありました。本質的に2ページのタブロイド紙には、ページの右側にコンテンツがありません。同様の開始点ですが、タブロイドは792×1224(縦)、1124 x 792(横)であり、必要な1/2タブロイドのポイント定義は612 x 792ポイントでした。
"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"
必要なコンテンツを8.5 x 11のポートレートに入れて、もっと読みやすくしました。
Krop(Python)とPDFscissors(Java)についてはまだ言及されていません。適切なプレゼンテーションPDFに逆戻りしたいpdfnup-ped講義ノートがある場合は、それらをチェックしてください。