前提
PythonでPDFのファイルをJPEGに変換するプログラムを作っています。
PDF → JPEG 変換には pdf2image ライブラリを使用しており、これは問題なく実行できます。
パスワードロックのかかったPDFファイルのセキュリティ解除には pikePDF ライブラリを使用しており、これも問題なくセキュリティ解除できます。
ところがセキュリティを解除したPDF文書は、JPEGに変換すると日本語の文字が消えてしまいます。
日本語も含めて正しくJPEG化する方法を教えてください。よろしくお願いします。
実現したいこと
pikePDF でセキュリティ解除した PDF文書を正しく JPEG に変換したい
発生している問題・エラーメッセージ
pikePDF でのセキュリティ解除は正常に行われており、文書のプロパティを見るとセキュリティが解除されていることがわかります。
【解除前】
セキュリティ設定: パスワードセキュリティ
暗号化レベル: 40ビット RCA
セキュリティ設定の詳細: ドキュメントの変更: 許可されていません
ドキュメントアセンブリ: 許可されていません
テンプレートページの作成: 許可されていません
(その他: 許可されています)
【解除後】
セキュリティ設定: なし
暗号化レベル: なし
セキュリティ設定の詳細: (すべての項目で”許可されています”)
このセキュリティ解除された PDF文書はPC画面上では正しく表示され、印刷も問題なくできます。
ところが、これを pdf2image ライブラリを使って JPEGに変換すると、日本語が消えてしまい、枠線だけが表示されています。
もともとパスワードロックのかかっていない PDF文書は、pdf2imageで問題なくJPEG変換できています。
PDFのセキュリティが解除され、このファイルのプロパティにもセキュリティが解除されて通常の PDF文書と同じ状態なのに、JPEG化すると日本語が消えてしまう原因がわかりません。
該当のソースコード
Python
1import os 2from pathlib import Path 3from pdf2image import convert_from_path 4import glob 5from pikepdf import Pdf 6 7# PDFファイル抽出、アンロック 8pdf_file = 'ファイルパス\pdf_file\\' 9pdf_unlocked = 'ファイルパス\pdf_unlocked\\' 10 11for count, filename in enumerate(os.listdir(pdf_file)): 12 if ".pdf" in filename: 13 oldfilename = pdf_file + filename 14 newfilename = pdf_unlocked + filename 15 16 pdf = Pdf.open(oldfilename) 17 newPdf = Pdf.new() 18 newPdf.pages.extend(pdf.pages) 19 newPdf.save(newfilename) 20 21# PDFファイルパスの取得 22for x in glob.glob("ファイルパス\pdf_unlocked\*.pdf"): 23 pdf_path = Path(x) 24 25 # pdfから画像に変換 26 pages = convert_from_path(pdf_path, poppler_path = r"propplerパス\proppler\bin", dpi=200) 27 28 # 画像ファイルを保存 29 image_dir = Path("ファイルパス/image_file") 30 31 for i, page in enumerate(pages): 32 # ファイルネーム 33 file_name = f'{pdf_path.stem}_{i + 1:02}.jpeg' 34 image_path = f'{image_dir}/{file_name}' 35 # JPEGで保存 36 page.save(image_path, "JPEG")
試したこと
パスワードロックのかかったPDF文書を、プリンターアプリを使って再度PDFとして出力するとセキュリティが解除されるので、これを pdf2image でJPEG化すると問題なく日本語が表示されることがわかっています。このPDFファイルのプロパティはpikePDFでセキュリティ解除したPDFファイルと同じです。
補足情報(FW/ツールのバージョンなど)
Python 3.10.4
pdf2image 1.16.0
pikepdf 6.2.0
pikePDF と pdf2image を使う方法以外でも構いません。Python でパスワードロックのかかったPDFファイルをJPEG化する方法がありましたら教えてください。
(自分だけが使うプログラムではないのでプリンターアプリを使う方法は利用できません)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。