6

複数ページの .tif または .pdf ファイルを個々の .png 画像に変換したいと考えています。コマンドラインから (ImageMagick を使用)、次のようにします。

convert multi_page.pdf file_out.png

そして、すべてのページを個別の画像 (file_out-0.png、file_out-1.png、...) として取得します。

このファイル変換を Python 内で処理したいのですが、残念ながら PIL は .pdf ファイルを読み取れないため、PythonMagick を使用したいと考えています。私は試した:

import PythonMagick
im = PythonMagick.Image('multi_page.pdf')
im.write("file_out%d.png")

あるいは単に

im.write("file_out.png")

しかし、pngに変換されたページは1つだけです。もちろん、各ページを個別に読み込んで、1 つずつ変換することもできます。しかし、それらすべてを一度に行う方法があるに違いありませんか?

4

3 に答える 3

7

ImageMagick はメモリ効率が悪いため、100 ページ程度の大きな PDF を読み込もうとすると、大量のメモリが必要になり、システムがクラッシュしたり、システムが大幅に遅くなったりする可能性があります。したがって、PythonMagick を使用してすべてのページを一度に読み取ることは、安全ではなく、悪い考えです。したがって、pdfの場合、ページごとに実行することになりましたが、そのためには、最初にpyPdfを使用してページ数を取得する必要があり、かなり高速です:

pdf_im = pyPdf.PdfFileReader(file('multi_page.pdf', "rb"))
npage = pdf_im.getNumPages()
for p in npage:
    im = PythonMagick.Image('multi_page.pdf['+ str(p) +']')
    im.write('file_out-' + str(p)+ '.png')
于 2012-08-02T22:46:52.753 に答える
1

私は同じ問題を抱えていましたが、回避策として ImageMagick を使用しました。

import subprocess
params = ['convert', 'src.pdf', 'out.png']
subprocess.check_call(params)
于 2012-08-01T05:49:32.203 に答える