PyPDF4を使用すると、Pythonを使用してPDFにハイライトとコメントを追加することができます。
本記事では、PyPDF4を使用した、PDFにハイライトとコメントを追加する方法について、詳しくご説明します。
PyPDF4とは
PyPDF4は、Pythonを使用してPDFを操作するための外部ライブラリの1つです。
PDF操作用ライブラリは他にも、PDFMinerやReportLabなどいくつか存在します。
それぞれのライブラリの用途は、以下の通りです。
ライブラリ | 用途 |
---|---|
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にハイライトとコメントを追加してみます。
#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)
黄色のハイライトとコメント(作成者名:NO NAME、コメント:OPTIONAL)を追加することができました。
「x1」、「y1」、「x2」、「y2」の値を変更することで、任意位置に挿入することができます。
まとめ
この記事では、PyPDF4を使用した、PDFにハイライトとコメントを追加する方法について、ご説明しました。
本記事を参考に、ぜひ試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
統計学基礎を学びたい方向け
Pythonの統計解析を学びたい方向け
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!