Python、PDF座標取得後に「コメントを入れる」を試してみた。
以前、PDFデータに出てくる文字データの座標データを取得しました。
その文字の右横に、コメントが入れれるか試してみます。
pip install pymupdf
import fitz # PyMuPDF
from PIL import Image, ImageDraw, ImageFont
def add_comment_to_pdf(pdf_path, coords, comment_text, output_path):
# PDFファイルを開く
pdf_document = fitz.open(pdf_path)
# ページ番号と座標を取得
page_number = 0 # 必要に応じてページ番号を調整
x0, y0, x1, y1 = coords
# ページを取得
page = pdf_document[page_number]
# 画像をページから取得
image = page.get_pixmap()
# 画像をPIL Imageに変換
pil_image = Image.frombytes("RGB", (image.width, image.height), image.samples)
# 描画オブジェクトを作成
draw = ImageDraw.Draw(pil_image)
# コメント用のフォントを設定
font_size = 12
font = ImageFont.load_default()
# コメントの位置を計算
comment_position = (x0, y1 + 5) # 必要に応じて位置を調整
# 画像にコメントを追加
draw.text(comment_position, comment_text, font=font, fill=(255, 0, 0)) # 赤いテキスト
# 修正された画像を保存
pil_image.save(output_path)
# PDFドキュメントを閉じる
pdf_document.close()
# 使用例
pdf_path = 'path/to/your/file.pdf'
coords = (61.20, 555.41, 265.58, 603.41) # 実際の座標に置き換えてください
comment_text = 'ここにコメントを追加してください'
output_path = 'path/to/output/file_with_comment.pdf'
add_comment_to_pdf(pdf_path, coords, comment_text, output_path)
座標がまだよくわからないので、また勉強してみます。
コメントの位置の調整してみました。
BEFORE
# コメントの位置を計算
comment_position = (x0, y1 + 5) # 必要に応じて位置を調整
AFTER
# コメントの位置を計算
comment_position = (x1 + 30, y1 - 390) # 必要に応じて位置を調整
Javascriptで動かすためのコード(未確認)
// Adobe Acrobat JavaScript code for adding a text annotation
// PDFファイルのパス
var pdfPath = "C:\\Users\\found Copy.pdf";
// ページ番号と座標
var pageNumber = 0; // 必要に応じてページ番号を調整
var x0 = 61.20, y0 = 555.41, x1 = 265.58, y1 = 603.41;
// コメントのテキスト
var commentText = "A-1";
// PDFドキュメントを開く
var pdfDocument = app.openDoc(pdfPath);
// ページを取得
var page = pdfDocument.getPage(pageNumber);
// 注釈を追加するための矩形座標
var rect = [x0, y0, x1, y1];
// 注釈を追加
var annot = page.addAnnot({
page: pageNumber,
type: "FreeText",
rect: rect,
contents: commentText,
fontSize: 12,
fillColor: color.red
});
// 注釈をPDFに反映
pdfDocument.saveFull(pdfPath, "com");
// PDFドキュメントを閉じる
pdfDocument.closeDoc(true);
ChatGPTに伺ったところ、このコードをAcrobat DCのアクションウィザードのJavascriptに入れれば動くらしいです。
また、会社で試してみます。
最後までお読みいただきありがとうございます。
♡頂けますと、励みになります。
この記事が気に入ったらサポートをしてみませんか?