在pdf中拆分頁面
我有一個掃描的 PDF 文件,其中兩個不同的真實頁面一起出現在一個虛擬頁面上。
解析度質量很好。問題是我在閱讀時必須放大並從左向右拖動。
是否有一些命令(
convert
,pdftk
, …)或腳本可以將此 pdf 文件轉換為普通頁面(書中的一頁 = pdf 文件中的一頁)?
這是一個使用舊 PyPdf 庫的小 Python 腳本,它可以巧妙地完成這項工作。將其保存在名為
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 中的每一頁?
以防萬一它有用,這是我之前的答案,它結合了兩種工具和一些手動干預:
這兩種工具都是必需的,因為據我所知 pdfpages 無法在一個流中對同一頁面應用兩種不同的轉換。在對 的呼叫中,將 42 替換為輸入文件 ( )
pdftk
中的頁數。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-recommended 並且可能(在 Ubuntu 上:texlive-fonts-recommended ),並使用以下驅動程序文件
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
只是一個補充,因為我遇到了 python 腳本(和其他幾個解決方案)的問題:對我來說
mutool
效果很好。mupdf
這是優雅閱讀器附帶的一個簡單而小的附加功能。所以你可以試試:mutool poster -y 2 input.pdf output.pdf
對於水平拆分,替換
y
為x
。當然,您可以將兩者結合起來以獲得更複雜的解決方案。真的很高興找到這個(經過多年的 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