やりたいこと。
kritaファイル名 [ヘッドネーム]数字連番.kra で保存されたファイルをoutフォルダにpngとpdfを作成すること。
・手順
kraファイルからpngファイル出力
pngファイルから結合してpdf化
kraファイルからpngファイル出力
ソースのカスタマイズ3か所
以下のkritaの作業場所フォルダと、出力先フォルダおよび、ヘッダー名を変更して下さい。
folder_path = "G:\work\漫画\45_202409_y" # kritaの作成フォルダ
output_folder = "G:\work\漫画\45_202409_y\out" # png出力フォルダ
pagehead = "page_" # ヘッドネーム page_00100.kra であれば page_としてください
import os
import re
from krita import *
# Kritaアプリケーションを取得
application = Krita.instance()
# 変換対象のフォルダを指定(Windows用にパスを修正)
folder_path = "G:\\work\\漫画\\45_202409_y" # kritaの作成フォルダ
output_folder = "G:\\work\\漫画\\45_202409_y\\out" # png出力フォルダ
# ヘッドネーム neko_00100.kra であれば neko_としてください
pagehead = "page_"
# 出力フォルダが存在しない場合は作成
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# .kraファイル名のパターンにマッチする正規表現
kra_pattern = re.compile(rf"{pagehead}(\d+)\.kra")
# 指定フォルダ内の .kra ファイルを取得し、番号でソート
kra_files = []
for file_name in os.listdir(folder_path):
match = kra_pattern.match(file_name)
if match:
page_number = int(match.group(1)) # pageの番号を取得
kra_files.append((page_number, os.path.join(folder_path, file_name)))
# ページ番号でソート
kra_files.sort(key=lambda x: x[0])
# 各ファイルを開いてPNGとしてエクスポート
for page_number, kra_file_path in kra_files:
# .kra ファイルを開く
doc = application.openDocument(kra_file_path)
if doc:
# 出力するPNGファイルのパス
output_file_path = os.path.join(output_folder, f"{pagehead}{page_number}.png")
# エクスポート処理
doc.exportImage(output_file_path, InfoObject())
print(f"Exported: {output_file_path}")
# ドキュメントを閉じる
doc.close()
else:
print(f"Failed to open: {kra_file_path}")
ファイル名
ここではpythonで実行するために、krita作成のファイル名を [ヘッドネーム]数字.kra で保存してください。
例えば[ヘッドネーム]がpage_のとき
page_00100.kra
page_00200.kra
例えば[ヘッドネーム]がneko_のとき
neko_10.kra
neko_20.kra
実行方法
ツール>スクリプト>スクリプター>コードを張り付けて 実行 ▽マーク
pngファイルから結合してpdf化
python3をインストールしてなければ、インストールして下さい。
kritaで動かそうとしましたが上手くいかなかったので。
pdf化するライブラリ等、適時スクリプト実行にエラーが発生しましたらインストールして下さい。
pip install Pillow
以下のスクリプトがoutフォルダ配下のpngを連結するスクリプト
ソースのカスタマイズ箇所2か所
以下のpng出力先フォルダと、pdf出力先を変更してください。
output_folder = r"G:\work\漫画\45_202409_y\out" # png出力フォルダ
output_pdf = r"G:\work\漫画\45_202409_y\out\put.pdf" # pdf出力先
from PIL import Image
import os
# 変換対象のフォルダを指定(Windows用にパスを修正)
output_folder = r"G:\work\漫画\45_202409_y\out" # png出力フォルダ
output_pdf = r"G:\work\漫画\45_202409_y\out\put.pdf" # pdf出力先
# PNGファイルを取得してソート
png_files = sorted([os.path.join(output_folder, f) for f in os.listdir(output_folder) if f.endswith('.png')])
if png_files:
images = [Image.open(png).convert('RGB') for png in png_files]
# 最初の画像を基にしてPDFを生成し、残りの画像を追加
images[0].save(output_pdf, save_all=True, append_images=images[1:])
print(f"PDF successfully saved as: {output_pdf}")
else:
print("No PNG files found for conversion.")
以上をDOSコマンドで実行
Windowsキー+R でファイル名を指定して実行を表示させて、cmdを入力してOK
コマンドプロンプトが起動されるので、先ほどのauto_page_to_output_pdf.py を実行する。
G:\work\漫画\45_202409_y>py auto_page_to_output_pdf.py
PDF successfully saved as: G:\work\漫画\45_202409_y\out\put.pdf
すると、out.pdfが出力される。
以上。