1つの仮想ページに2つの異なる物理ページが一緒に表示されるスキャンしたPDFファイルがあります。
解像度の品質は良いです。問題は、読みながらズームして左から右にドラッグする必要があるということです。このpdfファイルを通常のページ(書籍の1ページ= pdfファイルの1ページ)に変換できるコマンド(、、、...)またはスクリプトは
ありますか?convert
pdftk
答え1
Pythonスクリプト(および他のいくつかの解決策)に問題があるので、追加しましょう:mutool
私にとってはうまくいきます。これはエレガントなリーダーが付属するシンプルで小さなアドオンですmupdf
。したがって、次のことを試すことができます。
mutool poster -y 2 input.pdf output.pdf
水平分割の場合y
に置き換えてくださいx
。もちろん、より複雑なソリューションのために2つを組み合わせることもできます。
(何年も毎日mupdfを使った後)これを見つけて本当に嬉しいです:)
ソースからのインストールmupdf
とmutool
起動
(mutool
バージョン1.4以降、mupdfで利用可能:http://www.mupdf.com/news)
wget http://www.mupdf.com/downloads/mupdf-1.8-source.tar.gz
tar -xvf mupdf-1.8-source.tar.gz
cd mupdf-1.8-source
sudo make prefix=/usr/local install
または次に行くダウンロードページ最新バージョンを探してください。
mutool
Linuxディストリビューションパッケージからインストール
Debianに含まれるパッケージはmutool
次のとおりです。mupdf-tools
:
apt-get install mupdf-tools
答え2
これは、次のコマンドを使用する小さなPythonスクリプトです。古いPyPdfライブラリこれにより、操作は非常にうまく完了します。 (または必要に応じて)というスクリプトに保存してun2up
実行可能にし、(chmod +x un2up
)フィルタで実行します(un2up <2up.pdf >1up.pdf
)。
#!/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/2, h)
q.mediaBox.upperLeft = (w/2, h)
output.addPage(p)
output.addPage(q)
output.write(sys.stdout)
廃止予定の警告を無視してください。 PyPdf管理者だけがこれに興味を持っている必要があります。
入力方向が異常な方向の場合は、ページをトリミングするときに別の座標を使用する必要があります。バラよりコードがスキャンしたPDFの各ページを正しく分割しないのはなぜですか?
役に立つ場合に備えて、2つのツールといくつかの手動介入を一緒に使用する以前の答えは次のとおりです。
私が知っている限り、pdfpagesは1つのストリームで同じページに2つの異なる変換を適用できないため、両方のツールが必要です。呼び出しでpdftk
42を入力文書のページ数()に置き換えます2up.pdf
。
pdfjam -o odd.pdf --trim '0cm 0cm 14.85cm 0cm' --scale 1.141 2up.pdf
pdfjam -o even.pdf --trim '14.85cm 0cm 0cm 0cm' --scale 1.141 2up.pdf
pdftk O=odd.pdf E=even.pdf cat $(i=1; while [ $i -le 42 ]; do echo O$i E$i; i=$(($i+1)); done) output all.pdf
pdfjam 2.0がない場合は、pdfpagesパッケージを使用してPDFLaTeXをインストールするだけで十分です(Ubuntuでは次のものが必要です)。texlive-latex-推奨 たぶん(Ubuntuでは:texliveフォントのおすすめ )、次のドライバファイルを使用してくださいdriver.tex
。
\batchmode
\documentclass{minimal}
\usepackage{pdfpages}
\begin{document}
\includepdfmerge[trim=0cm 0cm 14.85cm 0cm,scale=1.141]{2up.pdf,-}
\includepdfmerge[trim=14.85cm 0cm 0cm 0cm,scale=1.141]{2up.pdf,-}
\end{document}
次に、次のコマンドを実行して、42を入力ファイルのページ数(呼び出す必要がある2up.pdf
)に置き換えます。
pdflatex driver
pdftk driver.pdf cat $(i=1; pages=42; while [ $i -le $pages ]; do echo $i $(($pages+$i)); i=$(($i+1)); done) output 1up.pdf
答え3
Imagemagickは1段階で完了できます。
$ convert in.pdf -crop 50%x0 +repage out.pdf
答え4
ImageMagickの変換コマンドを使用すると、ファイルを2つに分割するのに役立ちます。バラよりhttp://www.imagemagick.org/Usage/crop/
私があなたなら、次のような(シェル)スクリプトを作成します。
- ファイル分割pdfsam:1ページ=ディスクに1つのファイル(形式は関係ありません。ImageMagickが知っている形式を選択してください。PSまたはPDFのみ)。
ページごとに、前の切り抜き${PageNumber}Aというファイルに入れてください。
後半を切り取り、${PageNumber}Bというファイルに入れます。
1A.pdf、1B.pdf、2A.pdf、2B.pdfなどを入手できます。
- さて、それを新しいPDFにまとめてみてください。 これを行う方法はいくつかあります。