python で PDF を読み書きできる ライブラリ「borb」(入門編)

便利ツール

 PDFを扱っていて、PDFをそのまま編集できたらいいのにな~と思うときありませんか?本来であれば、PDFに出力前の形式に戻って編集をしなければいけませんが、それでは手間がかかる!
 そんなときに、おすすめなのが今回紹介する borbというライブラリです。PDFに書かれていることを読み取ることもできるのでPDFからテキストデータに変換して、自然言語処理などをすることもできますね!!
今回は、その入門編として、borbでできることから 簡単な読み書きのhello worldまでをまとめていきます!

 

borbの公式ホームページ

borb | Read, write, and edit PDF files with borb, a pure python library
The pure python library borb is excellent at handling PDF documents. It makes reading, creating, and changing PDF files easier, faster, and more user friendly.

スポンサーリンク

borbとは?

borb は pythonで PDF内を操作したり、読み書きをすることができるライブラリです!
(ちなみに、一人で開発しているらしいです。)

また、具体的にできることに関しては、以下の通りです。
かなり広範囲に渡って、PDFを編集することができますね!

  • PDF の読み込み + メタ情報の抽出
  • メタ情報の変更
  • PDFからのテキスト, 画像抽出
  • PDF内の画像の変更
  • PDF への アノテーションの追加
  • PDF に表, テキスト, リスト の追加
  • ページレイアウトの管理

スポンサーリンク

実際に使ってみよう!

インストール

pip install からインストール可能なので、インストールは簡単です!

pip install borb

PDF の 書き出し (Hello world)

 まず、 PDFに "Hello World!" と出力する方法を学んでいきましょう!
作成する流れとしては以下の通りです!

PDF に 書き出しをする流れ
  1. 空のドキュメント・ページを生成
  2. ページのレイアウトを決める
  3. パラグラフごとに文字データなどを追加
  4. PDF として出力・保存

 この流れで、書いていくと下のコードのように実装できます!
このままコピペをして実行してもらえると、 "Hello World!" と書かれた output.pdfが出力できると思うので確認してみてくださいね!

from borb.pdf.canvas.layout.text.paragraph import Paragraph
from borb.pdf.document import Document
from borb.pdf.page.page import Page
from borb.pdf.canvas.layout.page_layout.multi_column_layout import SingleColumnLayout
from borb.pdf.canvas.layout.page_layout.page_layout import PageLayout
from borb.pdf.pdf import PDF

def main():
    # 空のドキュメントを生成
    doc: Document = Document()
    # 空のページを生成して加える
    page: Page = Page()
    doc.append_page(page)
    # ページのレイアウトを決める (今回は SingleColumnLayout:1ページ1列)
    layout: PageLayout = SingleColumnLayout(page)
    # パラグラフを追加 (Hello World)
    layout.add(Paragraph("Hello World!"))

    # PDFを保存・書き出し
    with open("output.pdf", "wb") as out_file_handle:
        PDF.dumps(out_file_handle, doc)

if __name__ == "__main__":
    main()

PDF の 読み込み (Hello world)

ここでは、SimpleTextExtractionを使って、PDF文書の読み込みを行っています。
実際に上のPDFの書き出しの際に生成した output.pdfを下記のコードで読み込んでみると、" Hello World! "と表示されますよ!

import typing  
from borb.pdf.document import Document  
from borb.pdf.pdf import PDF  
from borb.toolkit.text.simple_text_extraction import SimpleTextExtraction  

def main():  
    doc: typing.Optional[Document] = None  
    l: SimpleTextExtraction = SimpleTextExtraction()  
    with open("output.pdf", "rb") as in_file_handle:  
        doc = PDF.loads(in_file_handle, [l])  

    assert doc is not None  
    print(l.get_text_for_page(0))  

if __name__ == "__main__":  
    main()

コメント

タイトルとURLをコピーしました