2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GIMPでPDFファイルをPNGファイルに変換する

Last updated at Posted at 2020-05-03

COVID-19関連で省庁から提供される情報はpdfファイルが多く情報共有する際大量のページを可視化するために画像に変換する処理を手動で行うことが困難なためプラグインを作成しました。
20220717更新

以下に情報を共有します。

1.GIMPについて

GIMPとはフリー&オープンソースの画像編集ソフトです。
https://www.gimp.org/

2.GIMPでPDFをPNGに変換するには

〇手動でpdfからpngに変換する場合
(1)GIMPを起動します。
image.png

(2)pdfファイルをドラッグアンドドロップするとダイアログが表示されるので[インポート]をクリックします。([ファイル]-[開く/インポート]で開いてもいいです)
image.png

pdfが画像として読み込まれます。各ページはレイヤーとして読み込まれています。
image.png

(3)[ファイル]-[名前を付けてエクスポート...]から拡張子をpngにしてエクスポートします。
ここでエクスポートされるのはレイヤーの一番上にある画像のみです。
これを毎回レイヤーを非表示にしながら繰り返します。


〇自動でpdfからpngに変換する場合
(1)まずpythonプラグインが利用できるか確認します。
https://docs.gimp.org/2.10/ja/gimp-filters-python-fu.html
こちらも参考まで。https://www.ibm.com/developerworks/jp/opensource/library/os-autogimp/index.html

[フィルター]に[Python-Fu]があれば利用できます。
ない場合はがんばっていれてください。(ごめんなさい。たぶんインストール時に何かするか。私は勝手に入っていました。)

(2)コードを書いてプラグインフォルダーに保存します。

export_pdf2png.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#

from gimpfu import *
import os

def export_pdf2png(img, drw, path):
    img = img.duplicate()
    for layer in img.layers:
        layer.visible = False

    path = path.decode('shift-jis', "replace").encode() # 20220717追加:日本語ファイル名を文字化けしないようにする、カレントディレクトリのパスに日本語があった場合の対応
    for idx, layer in enumerate(img.layers):
        layer.visible = True
        
        filename = '{0}{1:0=3}.png'.format('PDF2PNG', idx) # 20220717変更:3桁の0付き数値に変更(ファイルソート用)
        fullpath = os.path.join(path, filename)

        layer_img = img.duplicate()
        layer_img.flatten()
        
        pdb.file_png_save(img, img.layers[idx], fullpath, filename, 0, 9, 0, 0, 0, 0, 0)

register(
    "python-fu-export-pdf2png",
    "Export PDF to PNG",
    "Exports pdf to png file",
    "J",
    "",
    "",
    "PDFからPNGに変換...",
    "*",
    [
        (PF_IMAGE, "img", "Input image", None),
        (PF_DRAWABLE, "drw", "Input drawable", None),
        (PF_DIRNAME, "path", "Output directory", os.getcwd())
    ],
    [],
    export_pdf2png,
    menu="<Image>/File/"
    )

main()

プラグインフォルダーは[編集]-[設定]-[フォルダー]-[プラグイン]に設定されています。
image.png

(3)GIMPを再起動して[ファイル]メニューに登録されているのを確認します。
image.png

手動の時の要領でpdfファイルをGIMPでインポートします。

[ファイル]メニューから[PDFからPNGに変換...]を選択して出力先フォルダーを指定して実行します。
image.png

こんな感じでページ分出力されます。
image.png

出力された画像(1ページ目)です。
image.png

環境などで動作しない場合もあると思いますのでその場合はごめんなさい。
困っている方の参考になれば幸いです。

参考:ヘルプからプロシージャーブラウザーを起動するとプロシージャーの情報が表示されます。
image.png

追記:

20220717一部修正
1.pngファイル出力用のディレクトリ指定でカレントディレクトリ(ダイアログボックスには(None)と表示される状態)までのパスに日本語があった場合文字化けしてしまう問題に対応。
path = path.decode('shift-jis', "replace").encode()
2.出力ファイルのソート用に3桁の0付き数値に変更
filename = '{0}{1:0=3}.png'.format('PDF2PNG', idx)

おまけ:

20220717追加
出力したpngファイルを一覧できるようにmp4に変換するにはffmpegを利用する。

>  ffmpeg -r 1 -i PDF2PNG%03d.png -vcodec libx264 -pix_fmt yuv420p -r 3 -y -vf scale=5760:-1 out.mp4

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?