見出し画像

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)


え?HELLOと入りました。
すごいです。


座標がまだよくわからないので、また勉強してみます。


コメントの位置の調整してみました。

  • 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に入れれば動くらしいです。
また、会社で試してみます。



最後までお読みいただきありがとうございます。
♡頂けますと、励みになります。

この記事が気に入ったらサポートをしてみませんか?