다음은 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가 한 스트림에서 동일한 페이지에 두 가지 다른 변환을 적용 할 수 없기 때문에 두 도구가 모두 필요합니다. 에 대한 호출에서 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를 설치하면 충분합니다 (우분투 : texlive -latex 권장 및 아마도 (우분투 : 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