한 페이지(오른쪽 페이지)를 공백으로 두고 한 면에 여러 페이지를 인쇄하는 방법은 무엇입니까?

한 페이지(오른쪽 페이지)를 공백으로 두고 한 면에 여러 페이지를 인쇄하는 방법은 무엇입니까?

입력 파일은 PDF 문서입니다. 메모를 작성할 수 있는 오른쪽 공간을 원합니다.

출력 .pdf는 다음과 같습니다.

여기에 이미지 설명을 입력하세요.!

답변1

이를 위해 다음을 결합할 수 있습니다.pdftk그리고pdfnup:

먼저 이름이 비어 있는 빈 페이지(LibreOffice/OpenOffice, inkscape, (La)TeX, scribus 등 사용)가 있는 PDF를 만듭니다.

그런 다음 셸에서 또는 셸 스크립트를 통해 호출합니다.

INPUTPDF=input.pdf
NUMPAGES=$(pdftk "$INPUTPDF" dump_data | grep NumberOfPages | egrep -o '[0-9]*')
pdftk "A=$INPUTPDF" B=empty.pdf cat $(for i in $(seq $NUMPAGES) ; do echo A$i B1 ; done) output output.pdf
pdfnup output.pdf
mv output-nup.pdf output.pdf

명령 pdftk줄은 다음으로 확장됩니다.

 pdftk A=input.pdf B=empty.pdf cat A1 B1 A2 B1 [...]

답변2

Jofer의 답변 외에도

pdfjam옵션을 창의적으로 사용한다면 직접 이 작업을 수행할 수도 있습니다.

pdfjam --landscape --offset '-8cm 0cm' document.pdf

기본적으로 옵션을 --landscape추가하지 않으면 nup페이지가 중앙에 배치됩니다. 음수 오프셋을 사용하면 원하는 대로 페이지를 왼쪽으로 이동할 수 있습니다(가장 좋은 값은 입력에 따라 다름).

답변3

이것PyPdf 라이브러리Python은 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())]:
    p.rotateClockwise(270)
    (w, h) = p.mediaBox.upperRight
    p.mediaBox.upperRight = (w/2, h/2)
    output.addPage(p)
output.write(sys.stdout)

관련 정보