문제

.PDF 파일로 프로그래밍 방식으로 작업 한 경험이 있는지 궁금합니다. .pdf 파일이 있고 모든 페이지를 특정 크기로 자르고 있어야합니다.

빠른 Google 검색 후 Python 용 PYPDF 라이브러리를 찾았지만 실험에 실패했습니다. 페이지 객체에서 Cropbox 및 Trimbox 속성을 변경했을 때 결과는 내가 기대했던 것이 아니며 상당히 무작위로 나타났습니다.

이것에 대한 경험이있는 사람이 있습니까? 코드 예제는 바람직하게는 파이썬에서 잘 이해 될 것입니다.

도움이 되었습니까?

해결책

PYPDF는이 분야에서 내가 기대하는 것을 수행합니다. 다음 스크립트 사용 :

#!/usr/bin/python
#

from pyPdf import PdfFileWriter, PdfFileReader

with open("in.pdf", "rb") as in_f:
    input1 = PdfFileReader(in_f)
    output = PdfFileWriter()

    numPages = input1.getNumPages()
    print "document has %s pages." % numPages

    for i in range(numPages):
        page = input1.getPage(i)
        print page.mediaBox.getUpperRight_x(), page.mediaBox.getUpperRight_y()
        page.trimBox.lowerLeft = (25, 25)
        page.trimBox.upperRight = (225, 225)
        page.cropBox.lowerLeft = (50, 50)
        page.cropBox.upperRight = (200, 200)
        output.addPage(page)

    with open("out.pdf", "wb") as out_f:
        output.write(out_f)

결과 문서에는 200x200 포인트 인 트림 박스가 있으며 미디어 박스 내부에서 25,25 포인트에서 시작합니다. 작물 상자는 트림 박스 내부의 25 점입니다.

위의 코드로 처리 한 후 Acrobat Professional에서 샘플 문서가 보이는 방법은 다음과 같습니다.crop pages screenshot

이 문서는 Acrobat Reader에로드되면 공백으로 나타납니다.

다른 팁

이것을 사용하여 PDF의 차원을 얻으십시오

from PyPDF2 import PdfFileWriter,PdfFileReader,PdfFileMerger

pdf_file = PdfFileReader(open("/Users/user.name/Downloads/sample.pdf","rb"))
page = pdf_file.getPage(0)
print(page.cropBox.getLowerLeft())
print(page.cropBox.getLowerRight())
print(page.cropBox.getUpperLeft())
print(page.cropBox.getUpperRight())

이 후 페이지 참조를 얻은 다음 Crop 명령을 적용합니다.

page.mediaBox.lowerRight = (lower_right_new_x_coordinate, lower_right_new_y_coordinate)
page.mediaBox.lowerLeft = (lower_left_new_x_coordinate, lower_left_new_y_coordinate)
page.mediaBox.upperRight = (upper_right_new_x_coordinate, upper_right_new_y_coordinate)
page.mediaBox.upperLeft = (upper_left_new_x_coordinate, upper_left_new_y_coordinate)

#for example :- my custom coordinates 
#page.mediaBox.lowerRight = (611, 500)
#page.mediaBox.lowerLeft = (0, 500)
#page.mediaBox.upperRight = (611, 700)
#page.mediaBox.upperLeft = (0, 700)

당신은 아마도 무료 솔루션을 찾고있을 것입니다. 그러나 돈을 쓸 돈이 있다면 pdflib 멋진 도서관입니다. 그것은 결코 나를 실망시키지 않았다.

PDF를 PostScript (PSTOPDF 또는 PS2PDF)로 변환하고 PostScript 파일에서 텍스트 처리를 사용하는 것보다 PDF를 변환 할 수 있습니다. 그 후 출력을 PDF로 다시 변환 할 수 있습니다.

처리하려는 PDF가 모두 동일한 응용 프로그램에 의해 생성되고 다소 유사한 경우에도 잘 작동합니다. 그들이 다른 소스에서 나오면 일반적으로 PostScript 파일을 처리하기가 어렵습니다. 구조는 크게 다릅니다. 그러나 당신보다 MIGT는 몇 가지 정규 표현식으로 페이지 크기 등을 고칠 수 있습니다.

Acrobat JavaScript API에는 SetPageBoxes 메소드가 있지만 Adobe는 Python 코드 샘플을 제공하지 않습니다. C ++, C# 및 VB 만.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top