Help us understand the problem. What is going on with this article?

PyPDF2?いやPyMuPDFでしょ

PyPDF2だと読み書きのときにエラーをはかれる。

ことがある。うちの扱ってるPDFだと結構あるので問題になった。

 (<class 'PyPDF2.utils.PdfReadError'>, PdfReadError('Illeagal character in Name Object',) <traceback object at 0x0123456789ABCDEF

PyMuPDFなら大丈夫!問題ない!

日本語だとPyPDF2の資料がそこそこあるんですが、PyMuPDFは英語ばっかり。
なので自分が使ったメソッドとか書いていきます。
Wand+ImageMagickも使えそうなのですが、インストールに躓きました。

PyPDF2での実装

PyPDF2での実装
    import PyPDF2

    # 一部のページのみ抜き出す処理の例
    # pdf_pathはpathlibのPath形式を想定しています。
    reader = PdfFileReader(str(pdf_path))
    writer = PdfFileWriter()
    page = 1234567890
    writer.addPage(reader.getPage(page))

    save_path = hogepiyo.pdf
        with open(save_path, 'wb') as f:
            writer.write(f)

    # ページ数を取得する例
    with open(pdf_path, mode='rb') as f:
        reader = PdfFileReader(f, strict=True)
        _pages = reader.getNumPages()

PyMuPDFでの実装

まずは召喚獣と契約するための呪文

pip install –upgrade pymupdf

PyMuPDFでの実装
    # 召喚呪文は"fitz"。名前はPyMuPDFであるが歴史ある故にこのように呼び出す。
    import fitz

    # 一部のページのみ抜き出す処理の例
    # pdf_pathはpathlibのPath形式を想定しています。
    reader = fitz.open(str(pdf_path)
    writer = fitz.open()
    page = 1234567890
    writer.insertPDF(reader, from_page=page, to_page=page)

    save_path = hogepiyo.pdf
    writer.save(str(save_path))

    # ページ数を取得する例
    _pages = fitz.open(pdf_path).pageCount

他、参考になりそうなところ

http://hk29.hatenablog.jp/entry/2020/02/08/235809
https://cloud.tencent.com/developer/article/1483545

shin1007
言語:Python3、VBA、C#、MQLなど。 資格:AP、PM、SC、TOEIC920、英検準1、小中高教員一種(英語)、車(MT)。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away