두 개의 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의 초과 페이지는 자동으로 무시됩니다. 필요한 경우 더 나은 솔루션을 제공할 수 있습니다.