"예약 취소" 방법 pdf

"예약 취소" 방법 pdf

책자 형식으로 만든 PDF 파일이 있습니다. A4 용지에 가로 방향으로 인쇄하기 위한 것입니다. 이는 PDF의 2페이지이며 실제 책의 4페이지에 해당합니다.

 -------------------------------
|              |                |
|              |                |
|              |                |
|    (1)       |      (3)       |
|              |                |
|              |                |
|              |                |
 ------------------------------- 

 -------------------------------
|              |                |
|              |                |
|              |                |
|    (4)       |      (2)       |
|              |                |
|              |                |
|              |                |
 -------------------------------

괄호 안의 숫자는 개별 페이지의 순서에 해당합니다.

나는 Linux에 다양한 명령(pdfbook, pdfnup 등)이 있다는 것을 알고 있습니다(아마도 이 책자를 만드는 데 사용되었을 것입니다). 어떻게 "구독 취소"합니까? 즉, 최종 제품의 각 개별 페이지가 일반적인 방법으로 주문된 별도의 PDF 페이지인 PDF 문서를 만들고 싶습니다.

편집하다

Giles 덕분에 다음 코드를 사용할 수 있었습니다.

import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
second_half = []
for i in range(0,input.getNumPages()):
    p = input.getPage(i)
    q = copy.copy(p)

    print >> sys.stderr, 'splitting page',i
    print >> sys.stderr, '\tlowerLeft:',p.mediaBox.lowerLeft
    print >> sys.stderr, '\tupperRight:',p.mediaBox.upperRight

    p.mediaBox.upperRight = (ur[0], (bl[1]+ur[1])/2)
    p.mediaBox.lowerLeft = bl

    q.mediaBox.upperRight = ur
    q.mediaBox.lowerLeft = (bl[0], (bl[1]+ur[1])/2)

    if i % 2 == 0:
        output.addPage(p)
        qold = q
    else:
        output.addPage(q)
        output.addPage(qold)
        output.addPage(p)
output.write(sys.stdout)

답변1

이것은 다음 명령을 사용하는 작은 Python 스크립트입니다.PyPdf 라이브러리그게 다야. (에서un2up.) 라는 스크립트에 저장하고 unbook실행 가능하게 만든 다음( chmod +x unbook) 필터로 실행합니다( unbook <book.pdf >1up.pdf).

의 출력에서 ​​이 스크립트를 테스트했습니다 pdfbook --signature=N. 또 다른 접근 방식의 경우 입력 페이지를 하나씩 건너뛸 필요가 없으며 페이지 순서가 다를 수 있습니다(가로 페이지 방향에 따라). 페이지 레이아웃이 귀하의 질문과 일치하지 않습니다. 13,42는 나에게 이해가 되지 않습니다(4페이지 책에서 3은 1 바로 옆이 아니라 2 바로 옆에 있어야 합니다).

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
second_half = []
for i in range(0,input.getNumPages()):
    p = input.getPage(i)
    q = copy.copy(p)
    (w, h) = p.mediaBox.upperRight
    p.mediaBox.upperRight = (w/2, h)
    q.mediaBox.upperLeft = (w/2, h)
    if i % 2 == 0:
        p.rotateClockwise(180)
        q.rotateClockwise(180)
        output.addPage(p)
        second_half.append(q)
    else:
        output.addPage(p)
        second_half.append(q)
second_half.reverse()
for q in second_half: output.addPage(q)
output.write(sys.stdout)

더 이상 사용되지 않는 경고를 무시하십시오. PyPdf 관리자만 이에 대해 관심을 가져야 합니다.

관련 정보