0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonによるPDF添付ファイルの抽出、バッチ抽出、バッチ追加

Posted at

PDF添付ファイルとは、PDFドキュメントに埋め込まれた画像、テーブル、音声、ビデオ、または他のドキュメントなどの別のファイルのことを指します。これらの添付ファイルは、PDFドキュメントと一緒に保存、転送、共有することができ、文書により豊かなコンテンツと機能を提供します。添付ファイルを追加することにより、関連するファイルや情報をまとめて管理および共有することができます。さらに、PDF添付ファイルは、文書内で外部リソースを参照するために使用され、より包括的な参考資料やサポート資料を提供します。ただし、大量のPDF添付ファイルを処理することは手間と時間がかかる場合があります。Pythonプログラムを活用することで、これらの添付ファイルを簡単に一括処理し、作業効率を大幅に向上させることができます。本記事では、Pythonを使用してPDF添付ファイルを簡単に一括抽出および保存PDFに添付ファイルを挿入、およびPDFファイルから添付ファイルを削除する方法について紹介します。

本記事で紹介する方法には、Spire.PDF for Pythonが必要です。公式ウェブサイトからダウンロードするか、PyPIを介してインストールすることができます:

pip install Spire.PDF

Pythonを使用したPDF添付ファイルの一括抽出

PDFドキュメントから添付ファイルを抽出するには、PdfDocument.Attachmentsプロパティと**PdfAttachment.Data.Save()**メソッドが主要な役割を果たします。PdfDocument.Attachmentsプロパティは、PDFドキュメント内のすべての添付ファイルを取得し、添付ファイルのコレクションを返します。一方、PdfAttachment.Data.Save()メソッドは指定された添付ファイルを指定されたフォルダに保存することができます。詳細な手順は以下の通りです:

  1. 入力フォルダと出力フォルダのパスを指定します。
  2. ".pdf"で終わるPDFファイルのリストを入力フォルダから取得します。
pdfFiles = [f for f in os.listdir(inputFolder) if f.endswith(".pdf")]
  1. 各PDFファイルをループします。
  2. PdfDocumentクラスのオブジェクトを作成し、PdfDocument.LoadFromFile()を使用してPDFファイルを読み込みます。
document = PdfDocument()
document.LoadFromFile(filePath)
  1. PDFファイルの添付ファイルリストを取得します。
attachments = document.Attachments
  1. 添付ファイルリストが空であるかどうかを判断し、添付ファイルを保存するフォルダを作成します。
  2. 添付ファイルリストをループし、添付ファイルオブジェクトを取得し、指定されたパスに添付ファイルを保存します。
attachment = attachments.get_Item(i)
attachmentPath = os.path.join(outputFolderPath, attachment.FileName)
attachment.Data.Save(attachmentPath)
  1. PDFファイルを閉じます。

完全なコード例:

import os
from spire.pdf import *
from spire.pdf.common import *

# 指定入力フォルダと出力フォルダのパス
inputFolder = "文書/PDF"
outputFolder = "文書/添付ファイル"

# 入力フォルダ内の拡張子が".pdf"であるPDFファイルのリストを取得
pdfFiles = [f for f in os.listdir(inputFolder) if f.endswith(".pdf")]

# 各PDFファイルに対して処理を行う
for fileName in pdfFiles:
    # PDFファイルの完全パスを構築
    filePath = os.path.join(inputFolder, fileName)
    
    # PdfDocumentオブジェクトを作成し、PDFファイルを読み込む
    document = PdfDocument()
    document.LoadFromFile(filePath)
    
    # PDFファイルの添付ファイルリストを取得
    attachments = document.Attachments
    
    # 添付ファイルが存在する場合
    if attachments:
        # PDFファイル名(拡張子を除く)を取得
        fileNameWithoutExt = os.path.splitext(fileName)[0]
        # 出力フォルダのパスを構築
        outputFolderPath = os.path.join(outputFolder, fileNameWithoutExt)
        # 出力フォルダを作成
        os.makedirs(outputFolderPath, exist_ok=True)
        
        # 添付ファイルリストを処理する
        for i in range(attachments.Count):
            # 添付ファイルオブジェクトを取得
            attachment = attachments.get_Item(i)
            # 添付ファイルの保存パスを構築
            attachmentPath = os.path.join(outputFolderPath, attachment.FileName)
            # 指定されたパスに添付ファイルを保存する
            attachment.Data.Save(attachmentPath)
            
    # PDFドキュメントを閉じる
    document.Close()

添付ファイルを抽出するためのPDFファイル:

PythonでPDF添付ファイルを抽出

抽出結果:
PythonでPDF添付ファイルを抽出

Pythonを使用したPDFへの簡単な添付ファイルの挿入

PdfAttachmentクラスのインスタンスを作成することで、PDF添付ファイルを作成し、説明や変更日などの関連情報を設定することができます。添付ファイルを作成した後は、PdfDocument.Attachments.Add() メソッドを使用して添付ファイルをPDFファイルに追加することができます。添付ファイルはPDF注釈と組み合わせることもでき、ページから指定の添付ファイルにジャンプすることができます。以下は添付ファイルを追加する簡単な手順の例です:

  1. PdfDocumentクラスのオブジェクトを作成し、PDFドキュメントを読み込みます。
document = PdfDocument()
document.LoadFromFile(pdfPath)
  1. PdfAttachmentクラスのオブジェクトを作成し、添付ファイルの説明や変更日を設定します。
attachment = PdfAttachment(attachmentPath)
attachment.Description = "参加者名簿"
attachment.ModificationDate = DateTime.get_Now()
  1. 添付ファイルをPDFファイルに追加します。
document.Attachments.Add(attachment)
  1. PDFファイルを保存して閉じます。
document.SaveToFile("output/添付ファイルの追加.pdf")
document.Close()

完全なコード例:

from spire.pdf import *
from spire.pdf.common import *

# PDFファイルのパスと添付ファイルのパスを定義
pdfPath = "文書/例5.pdf"
attachmentPath = "示例/名簿.txt"

# PdfDocumentオブジェクトを作成し、PDFファイルを読み込む
document = PdfDocument()
document.LoadFromFile(pdfPath)

# PdfAttachmentオブジェクトを作成
attachment = PdfAttachment(attachmentPath)

# 添付ファイルの説明と変更日付を設定
attachment.Description = "参加者名簿"
attachment.ModificationDate = DateTime.get_Now()

# PDF文書に添付ファイルを追加
document.Attachments.Add(attachment)

# PDF文書を指定のパスに保存
document.SaveToFile("output/添付ファイルの追加.pdf")

# PDF文書を閉じる
document.Close()

追加効果:
PythonでPDFファイルに添付ファイルを追加

Pythonを使用したPDF添付ファイルの一括削除

PDFファイルから添付ファイルを削除する場合、PdfDocument.Attachmentsプロパティを使用してPDFファイル内の添付ファイルのコレクションを取得し、指定された添付ファイルまたはすべての添付ファイルを削除します。以下は操作手順です:

  1. PdfDocumentクラスのオブジェクトを作成し、PDFドキュメントを読み込みます。
document = PdfDocument()
document.LoadFromFile(pdfPath)
  1. PDFファイルから添付ファイルのコレクションを取得します。
document.Attachments
  1. 指定された添付ファイルを削除します。
attachments.RemoveAt(0)
  1. または、すべての添付ファイルを削除します。
attachments.Clear()
  1. PDFファイルを保存して閉じます。
document.SaveToFile("output/删除附件.pdf")
document.Close()

完全なコード例:

from spire.pdf import *
from spire.pdf.common import *

# PDFファイルのパスを定義
pdfPath = "文書/例5.pdf"

# PdfDocumentオブジェクトを作成し、PDFファイルを読み込む
document = PdfDocument()
document.LoadFromFile(pdfPath)

# PDFファイルの添付ファイルコレクションを取得
attachments = document.Attachments

# 指定された添付ファイルを削除
attachments.RemoveAt(0)

# すべての添付ファイルを削除
attachments.Clear()

# PDFファイルを保存して閉じる
document.SaveToFile("output/添付ファイル削除済み.pdf")
document.Close()

上記は、Pythonを使用してPDFファイルに添付ファイルを追加、抽出、および削除する方法についての説明です。Spire.PDF for Pythonは、さまざまな他の機能もサポートしていますので、詳細はSpire.PDF for Pythonチュートリアルをご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?