作ったもの
プログラムで指定したディレクトリに存在するpdfファイル毎にフォルダを作成し、連番画像ファイルとして出力するプログラム。
なお、以下のページを参考に作成した(※)ので、詳細な説明は下記を参照。
gammasoft.jp/blog/convert-pdf-to-image-by-python/
(ほとんどそのままだが、複数のpdfファイルに対応させるよう修正した。)
作成した背景
pdfファイルにロゴを追加せよ、という指令が下った。その際に、以下の制約条件があった。
- 画質はそこまでうるさく言わない
- 元ファイル(word)が入手できない(探すのに時間がかかるため)
そこでpdfファイルを一旦画像ファイル化して、ロゴを挿入した後画像をpdfに固めることとした。
本プログラムは作ったもので説明した通り、pdfファイルを画像化するプログラムである。
使い方
①以下のページの手順を参考に、各種ライブラリのインストールおよびpopplerフォルダを作成する。
(下記参考ページのプロジェクトフォルダ構成までの手順を実施する。)
gammasoft.jp/blog/convert-pdf-to-image-by-python/
②以下のディレクトリ構成となるよう「png」「poppler」フォルダを作成し、「pdf2img.py」や処理対象となるpdfファイルを配置したうえで「pdf2img.py」を実行する。
- ルートディレクトリ
- pdf2img.py
- poppler
- png
- ○○.pdf(処理対象となるpdfファイル)
③プログラムの処理が終了すると、pngフォルダ内にpdfファイルの「.pdf」を除いた部分の文字列のフォルダが生成され、そのフォルダ内に画像が出力される。
ソースコード(pdf2img.py)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from pathlib import Path#要インストール
from pdf2image import convert_from_path#要インストール
import glob
# poppler/binを環境変数PATHに追加する
poppler_dir = Path(__file__).parent.absolute() / "poppler/bin"
os.environ["PATH"] += os.pathsep + str(poppler_dir)
files=glob.glob("*.pdf")
print(files)
for i in files:
# PDFファイルのパス
pdf_path = i
# PDF -> Image に変換(150dpi)
pages = convert_from_path(Path(pdf_path), 300)
new_path = "png/"+os.path.basename(pdf_path).split(".pdf")[0]
if not os.path.exists(new_path):#ディレクトリがなかったら
os.mkdir(new_path)#作成したいフォルダ名を作成
# 画像ファイルを1ページずつ保存
init_flag=0
for j, page in enumerate(pages):
file_name = new_path + "/{:02d}".format(j + 1) + ".png"
page.save(file_name, "PNG")
コメント