PDFファイルのページのミキシングとは
少し驚きましたが、pythonを使って異なるのpdfファイルのページ同士をミキシングすることができます。実際にどうなるかは手持ちのPDFファイルでやっていただきたいです。ここからは少しコードが複雑になってきますが、ポイントはオブジェクトの形を見失わないことです。今回新たに登場するメソッドは、
mergePage()メソッドです
ポイントとしては、オブジェクトの形を見失わないことです。オブジェクトとしては、
- PdfFileReaderオブジェクト
- Pageオブジェクト
- PdfFileWriterオブジェクト
若干結果論じみたはなしにはなりますが、オブジェクトを意識していれば理解しやすいかと思います。残念ながらオブジェクトは可視化することはできません。ただspyderには変数エクスプローラーがありますから、ある程度は可視化できます。
この画像の型と書かれている欄がオブジェクトのことです。コードを見てみましょう。
import PyPDF2, os minutes_file = open('meetingminutes.pdf', 'rb') pdf_reader = PyPDF2.PdfFileReader(minutes_file) minutes_first_page = pdf_reader.getPage(0) pdf_watermark_reader = PyPDF2.PdfFileReader(open('watermark.pdf', 'rb')) minutes_first_page.mergePage(pdf_watermark_reader.getPage(0)) pdf_writer = PyPDF2.PdfFileWriter() pdf_writer.addPage(minutes_first_page) for page_num in range(1, pdf_reader.numPages): page_obj = pdf_reader.getPage(page_num) pdf_writer.addPage(page_obj) result_pdf_file = open('watermarkedCover.pdf', 'wb') pdf_writer.write(result_pdf_file) minutes_file.close() result_pdf_file.close()
今回は細かい序盤の動作をはぶきたいと思います。オブジェクトの流れについては、
あたりをみていただければと思います。
さて問題は7行目にあります。page.mergePage(pdf_watermark_reder.getPage(0))としています。mergePage()関数で、異なるPDFファイルのページを元のPDFに重ねることができるのです(ミックス)。
10行目ではミックスしたページをPdfFileWriterオブジェクトに追加しています。その後残りのページをforループで回し、前述のオブジェクトに追加しています。こうすることによって、1ページ目だけミックスされたものになります。
手持ちのPDFファイルで試していただきたいです。
ミックスの精度に関しては、あまりかんばしくはないです。でもpythonで手軽にミックスできるのはちょっと面白いかもしれないです。
次は最終回「PDFファイルをpythonで扱いたい【最終:複数のファイルを結合する】」です。