【Python】ハイライトとコメントを追加する|PyPDF4基礎

ハイライトとコメントを追加する|PyPDF4基礎_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

PyPDF4を使用すると、Pythonを使用してPDFにハイライトとコメントを追加することができます。

本記事では、PyPDF4を使用した、PDFにハイライトとコメントを追加する方法について、詳しくご説明します。

こんな人に読んでほしい
  • Pythonを使用したPDFの操作方法を知りたい人
  • PDFにハイライトとコメントを追加する方法を知りたい人
levtech-ad

PyPDF4とは

PyPDF4は、Pythonを使用してPDFを操作するための外部ライブラリの1つです。

PDF操作用ライブラリは他にも、PDFMinerReportLabなどいくつか存在します。

それぞれのライブラリの用途は、以下の通りです。

ライブラリ用途
PyPDF4・画像の抽出
・PDFファイルの結合や分割
・しおり(目次)の追加
PDFMiner・テキストの抽出
ReportLab・PDFの新規作成

本記事では、PyPDF4による、PDFにハイライトとコメントを追加する方法をご紹介します。

PyPDF4のインストール

「PyPDF4」は、以下コマンドを入力することで、インストールすることができます。

コマンドの入力は、コマンドプロンプトあるいはターミナルから行います。

pip install PyPDF4

動作確認として、試しに以下を入力します。

from PyPDF4 import PdfFileReader

上記を入力してもエラーが発生しなければ、正常にインストールされています。

PDFにハイライトとコメントを追加する

以下の実装関数「Highlight_insert」と「Highlight_add」を使用すると、PDFの任意位置にハイライトとコメントを追加することができます。

#input
from PyPDF4.generic import (
    DictionaryObject,
    NumberObject,
    FloatObject,
    NameObject,
    TextStringObject,
    ArrayObject
)

# x1, y1 starts in bottom left corner
def Highlight_insert(x1, y1, x2, y2, meta, color = [255, 255, 0]):
    Highlight = DictionaryObject()

    Highlight.update({
        NameObject("/F"): NumberObject(4),
        NameObject("/Type"): NameObject("/Annot"),
        NameObject("/Subtype"): NameObject("/Highlight"),

        NameObject("/T"): TextStringObject(meta["author"]),
        NameObject("/Contents"): TextStringObject(meta["contents"]),

        NameObject("/C"): ArrayObject([FloatObject(c) for c in color]),
        NameObject("/Rect"): ArrayObject([
            FloatObject(x1),
            FloatObject(y1),
            FloatObject(x2),
            FloatObject(y2)
        ]),
        NameObject("/QuadPoints"): ArrayObject([
            FloatObject(x1),
            FloatObject(y2),
            FloatObject(x2),
            FloatObject(y2),
            FloatObject(x1),
            FloatObject(y1),
            FloatObject(x2),
            FloatObject(y1)
        ]),
    })

    return Highlight

def Highlight_add(highlight, page, output):
    highlight_ref = output._add_object(highlight);

    if "/Annots" in page:
        page[NameObject("/Annots")].append(highlight_ref)
    else:
        page[NameObject("/Annots")] = ArrayObject([highlight_ref])

上記で実装した関数を使用して、以下PDFにハイライトとコメントを追加してみます。

テキスト抽出用PDF
#input
from PyPDF4 import PdfFileWriter, PdfFileReader

from PyPDF4Highlight import Highlight_insert, Highlight_add

pdfInput = PdfFileReader(open("input.pdf", "rb"))
pdfOutput = PdfFileWriter()

page1 = pdfInput.getPage(0)

x1 = 80
y1 = 200
x2 = 250
y2 = 210

highlight = Highlight_insert(x1, y1, x2, y2, {
    "author": "NO NAME",
    "contents": "OPTIONAL"
})

Highlight_add(highlight, page1, pdfOutput)

pdfOutput.addPage(page1)

outputStream = open("output.pdf", "wb")
pdfOutput.write(outputStream)
ハイライトとコメントを追加したPDF

黄色のハイライトとコメント(作成者名:NO NAME、コメント:OPTIONAL)を追加することができました。

「x1」、「y1」、「x2」、「y2」の値を変更することで、任意位置に挿入することができます。

まとめ

この記事では、PyPDF4を使用した、PDFにハイライトとコメントを追加する方法について、ご説明しました。

本記事を参考に、ぜひ試してみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました