Command-Line

在pdf中拆分頁面

  • March 18, 2021

我有一個掃描的 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 中的每一頁?


以防萬一它有用,這是我之前的答案,它結合了兩種工具和一些手動干預:

  • Pdfjam(至少 2.0 版),基於pdfpages LaTeX 包,用於裁剪頁面;
  • Pdftk,將左右兩半重新組合在一起。

這兩種工具都是必需的,因為據我所知 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 安裝 texlive-latex-recommended並且可能(在 Ubuntu 上:texlive-fonts-recommended 安裝 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

對於水平拆分,替換yx。當然,您可以將兩者結合起來以獲得更複雜的解決方案。

真的很高興找到這個(經過多年的 mupdf 日常使用 :)


安裝mupdfmutool從原始碼

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 上,包含的軟體包mutoolmupdf-tools

apt-get install mupdf-tools

引用自:https://unix.stackexchange.com/questions/12482