pdftk가 필요 없이 명령줄에서 PDF 페이지의 내용을 병합합니다.

pdftk가 필요 없이 명령줄에서 PDF 페이지의 내용을 병합합니다.

두 개의 PDF 파일이 있는데 각 파일의 페이지 수가 동일합니다. 페이지 수가 동일한 PDF 파일을 원하며 각 페이지는 두 소스 파일의 페이지 수가 동일한 페이지의 오버레이입니다. 예를 들어 페이지 1 파일 1 + 페이지 1 파일 2 = 결과 페이지 1 등입니다.

pdftk를 사용하면 간단한 방법으로 이 작업을 수행할 수 있습니다.

pdftk file1.pdf 다중 배경 file2.pdf 출력 file3.pdf

그러나 이제 Fedora 시스템에서 이 작업을 수행해야 하는데 Fedora에는 pdftk가 없습니다. libgcj abd gcc-java도 존재하지 않기 때문에 빌드할 수 없습니다.

OpenSUSE에는 pdftk가 있으므로 최후의 수단으로 OpenSUSE VM을 만들 수 있습니다. 하지만 Fedora에서도 동일한 작업을 수행하는 도구가 있을까요?

(CoherentPDF를 찾았지만 "상업적 용도로 사용할 수 없음" 라이선스가 부여되어 있어 지금은 사용할 수 없습니다.)

답변1

순수한 명령줄 솔루션이 있는지는 모르겠지만 PyPDF2는 그것을 할 수 있습니다! 방금 하나 적응했어내가 찾은 핵심 포인트Python 프로그래밍을 처음 접하는 경우 필요에 맞게.

다음 코드는 다음과 같이 사용할 수도 있습니다.Github 필수.

sudo dnf install python3-PyPDF2파일 이름을 실행하고 변경하는 것을 잊지 마십시오 .

#!/bin/python3


from PyPDF2 import PdfFileReader, PdfFileWriter
from PyPDF2.pdf import PageObject

# Theses files are just for testing, no point in merging these
reader = PdfFileReader(open("Nextcloud Manual.pdf",'rb'))

# this defines the output page format (relevant if not the same)
sup_reader = PdfFileReader(open("Cplusplus.pdf",'rb'))

writer = PdfFileWriter()

for pageNo in range(min(reader.getNumPages(), sup_reader.getNumPages())):
    print("Merging page:", pageNo)
    invoice_page = reader.getPage(pageNo)
    sup_page = sup_reader.getPage(pageNo)
    translated_page = PageObject.createBlankPage(None, sup_page.mediaBox.getWidth(), sup_page.mediaBox.getHeight())
    translated_page.mergeScaledTranslatedPage(sup_page, 1, 0, 0)

    translated_page.mergePage(invoice_page)

    writer.addPage(translated_page)

with open('out.pdf', 'wb') as f:
    writer.write(f)

편집: 페이지가 더 많은 PDF의 초과 페이지는 자동으로 무시됩니다. 필요한 경우 더 나은 솔루션을 제공할 수 있습니다.

관련 정보