Python ツール #5 ― PDF 操作(回転、結合)
たまたま、今回、たくさんの PDF ファイルの中身を回転させたり結合させたりする必要がありましたので、その Python スクリプトを開発してみました。1
今後の実務で複雑な PDF 操作をするかもしれないので、そのときは、今回の Python スクリプトをスニペット(断片ソースコード)として再利用しようと思います。2
ソースコードの簡単な説明
- pdf_rotater.py(Python スクリプト)。・・・ PDF 回転
pdf_rotater.py
#!/usr/bin/env python3 ・・・ # Import Libraries import os import sys import PyPDF2 from pathlib import Path # Constants IN_DIR = '.\\input_rotater' OUT_DIR = '.\\output_rotater' ROTATE_ANGLE = 270 # 90, 180, 270 # Main def main() -> None: in_file_list = list(Path(IN_DIR).glob("**/*.pdf")) for in_file_name in in_file_list: print('%s' % in_file_name) if os.path.isfile(in_file_name): in_file = open(in_file_name, 'rb') reader = PyPDF2.PdfReader(in_file) writer = PyPDF2.PdfWriter() for page in range(0, len(reader.pages)): obj = reader.pages[page] obj.rotate(ROTATE_ANGLE) writer.add_page(obj) _, out_file_name = os.path.split(in_file_name) in_file.close() out_file = open(os.path.join(OUT_DIR, out_file_name), 'wb') writer.write(out_file) out_file.close() sys.exit(0) # Goto Main if __name__ == '__main__': main()
- pdf_merger.py(Python スクリプト)。・・・ PDF 結合
pdf_merger.py
#!/usr/bin/env python3 ・・・ # Import Libraries import os import sys import PyPDF2 from pathlib import Path # Constants IN_DIR = '.\\input_merger' OUT_DIR = '.\\output_merger' OUT_NAME = 'merged.pdf' # Main def main() -> None: merger = PyPDF2.PdfMerger() in_file_list = list(Path(IN_DIR).glob("**/*.pdf")) for in_file_name in in_file_list: print('%s' % in_file_name) if os.path.isfile(in_file_name): merger.append(in_file_name) merger.write(os.path.join(OUT_DIR, OUT_NAME)) merger.close() sys.exit(0) # Goto Main if __name__ == '__main__': main()
ソースコードの置き場所
参考
PDF ライブラリ 6 選
PDFMuPDF、pyPDF2、PDFMiner
Spire.PDF
-
実家のスキャナーが A4 横書き文書を A4 縦書きにスキャンして、1 ページ 1 PDF ファイルで生成してしまうようです。Adobe Acrobat の有料版では、回転や合併ができるようですが、〇〇〇〇です。よって、Python スクリプトを開発することにしました。 ↩
-
PDF ファイルの全ページを 1 ページづつに分割して、複数の PDF ファイルを作成する Python スクリプトも開発してみました。PDF 回転のスクリプトを流用したら、数分で完成させることができました。→ GitHub リンク ↩