2つの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の余分なページは自動的に無視されます。必要に応じてより良いソリューションを提供できます。