PDF は、ページ上に文字と図形を表示することができ、また保存容器としても機能する多機能なファイル形式です。PDF にファイルを添付し、後で取り出すことも可能です。また、PDFに関連資料を添付することで、資料の一元管理と送信を容易にすることができます。
Spire.PDF for Java では、2つの方法でファイルを添付することができます。
- ドキュメントレベルの添付ファイル:文書レベルで PDF に添付されたファイルは、ページには表示されませんが、PDF リーダーの「添付ファイル」パネルで見ることができます。
- 注釈としての添付ファイル:ページの特定の位置に追加されるファイルです。注釈としての添付ファイルは、ページ上にクリップのアイコンとして表示され、読者はそのアイコンをダブルクリックしてファイルを開くことができます。
この記事では、Spire.PDF for Java を使用して、Java でPDF ドキュメントにこれらの2つのタイプの添付ファイルを追加または削除する方法を示します。
Spire.PDF for Java をインストールします
まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>8.8.3</version>
</dependency>
</dependencies>
PDF に添付ファイルを追加する
PdfDocument.getAttachments().add() メソッドを使用すると、「添付ファイル」パネルに添付ファイルを簡単に追加することができます。以下は、その詳細な手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
- 外部ファイルに基づいて PdfAttachment クラスのオブジェクトを作成します。
- PdfDocument.getAttachments().add() メソッドを使用して、PDF に添付ファイルを追加します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.attachments.PdfAttachment;
public class addAttachmentsToPdf {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.loadFromFile("年次総会.pdf");
//外部ファイルを元にPdfAttachmentクラスのオブジェクトを作成する
PdfAttachment attachment = new PdfAttachment("出席者の一覧.xlsx");
//PDFに添付ファイルを追加する
doc.getAttachments().add(attachment);
//PDFファイルを保存する
doc.saveToFile("添付ファイル.pdf");
}
}
PDF に注釈の添付ファイルを追加する
注釈の添付は、特定のページだけでなく「添付ファイル」パネルでも見つけることができます。以下は、Spire.PDF for Java を使用して PDF に注釈の添付ファイルを追加する手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを用いて PDF ドキュメントを読み込みます。
- PdfDocument.getPages().get() メソッドを使用して、注釈を追加する特定のページを取得します。
- PdfPageBase.findText() メソッドを使用して、注釈を付けるテキストを検索します。
- 外部ファイルに基づいて PdfAttachmentAnnotation クラスのオブジェクトを作成します。
- PdfPageBase.getAnnotationsWidget().add() メソッドを使用して、ページに注釈の添付ファイルを追加します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
- Java
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.annotations.*;
import com.spire.pdf.general.find.PdfTextFind;
import com.spire.pdf.general.find.PdfTextFindCollection;
import com.spire.pdf.graphics.*;
import com.spire.pdf.PdfDocument;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Rectangle2D;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class addAnnotationAttachment {
public static void main(String[] args) throws IOException {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.loadFromFile("年次総会.pdf");
//指定のページを取得する
PdfPageBase page = doc.getPages().get(0);
//注釈を付けるテキストを探す
PdfTextFindCollection results = page.findText("出席者の一覧", true, false);
PdfTextFind[] findCollection = results.getFinds();
String find = findCollection[0].toString();
//注釈としてファイルを添付する
String filePath = "出席者の一覧.xlsx";
double x = findCollection[0].getPosition().getX();
double y = doc.getPages().get(0).getActualSize().getHeight() - 592;
byte[] data = toByteArray(filePath);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Meiryo UI", Font.PLAIN, 13));
Dimension2D size = font.measureString(find);
Rectangle2D bound = new Rectangle2D.Float((float) (x + size.getWidth()/4), (float) y, 10, 15);
PdfAttachmentAnnotation annotation = new PdfAttachmentAnnotation(bound, filePath, data);
annotation.setColor(new PdfRGBColor(new Color(0, 128, 128)));
annotation.setFlags(PdfAnnotationFlags.Default);
annotation.setIcon(PdfAttachmentIcon.Graph);
annotation.setText("ファイルを開くには、こちらをクリックしてください。");
page.getAnnotationsWidget().add(annotation);
//PDFファイルを保存する
doc.saveToFile("注釈としての添付ファイル.pdf");
}
//ファイルをバイト配列に変換する
public static byte[] toByteArray(String filePath) throws IOException {
File file = new File(filePath);
long fileSize = file.length();
if (fileSize > Integer.MAX_VALUE) {
System.out.println("ファイルサイズが大きすぎる。");
return null;
}
FileInputStream fi = new FileInputStream(file);
byte[] buffer = new byte[(int) fileSize];
int offset = 0;
int numRead = 0;
while (offset < buffer.length
&& (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) {
offset += numRead;
}
if (offset != buffer.length) {
throw new IOException("ファイルを完全に読み取ることができませんでした。"
+ file.getName());
}
fi.close();
return buffer;
}
}
PDF から添付ファイルを削除する
PDF 文書の添付ファイルは、PdfDocument.getAttachments() メソッドでアクセスでき、PdfAttachmentCollection クラスのオブジェクト下の removeAt() メソッドまたは clear() メソッドを使用して削除することが可能です。詳細な手順は以下の通りです。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
- PdfDocument.getAttachments() メソッドを使用して、ドキュメントから添付ファイルのコレクションを取得します。
- PdfAttachmentCollection.removeAt() メソッドを使用して、特定の添付ファイルを削除します。すべての添付ファイルを一度に削除するには、PdfAttachmentCollection.clear() メソッドを使用します。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.attachments.PdfAttachmentCollection;
public class removeAttachments {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.loadFromFile("添付ファイル.pdf");
//注釈の添付ファイルを含まない添付ファイルコレクションを取得する
PdfAttachmentCollection attachments = doc.getAttachments();
//すべての添付ファイルを削除する
attachments.clear();
//指定した添付ファイルを削除する
//attachments.removeAt(0);
//PDFファイルを保存する
doc.saveToFile("添付ファイルの削除.pdf");
doc.close();
}
}
PDF から注釈の添付ファイルを削除する
注釈は、ページを基準にした要素です。文書からすべての注釈を取得するには、ページをたどり、各ページから注釈を取得する必要があります。次に、ある注釈が注釈添付であるかどうかを判断します。最後に、remove() メソッドを使用して、注釈コレクションから注釈としての添付ファイルを削除します。 以下はその詳細な手順です。
- PdfDocument クラスのオブジェクトを作成します。
- PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
- ドキュメント内のページをループし、PdfPageBase.getAnnotationsWidget() メソッドを使用して特定のページから注釈コレクションを取得します。
- 注釈が PdfAttachmentAnnotationWidget クラスのインスタンスであるかどうかを判断します。はいの場合、PdfAnnotationCollection.remove() メソッドを使用して、注釈添付ファイルを削除します。
- PdfDocument.saveToFile() メソッドでドキュメントを保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.annotations.PdfAnnotation;
import com.spire.pdf.annotations.PdfAnnotationCollection;
import com.spire.pdf.annotations.PdfAttachmentAnnotationWidget;
public class removeAnnotationAttachments {
public static void main(String[] args) {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//PDFファイルを読み込む
doc.loadFromFile("注釈としての添付ファイル.pdf");
//ページをループする
for (int i = 0; i < doc.getPages().getCount(); i++) {
//注釈コレクションを取得する
PdfAnnotationCollection annotationCollection = doc.getPages().get(i).getAnnotationsWidget();
//注釈をループする
for (Object annotation: annotationCollection) {
//注釈がPdfAttachmentAnnotationWidgetクラスのインスタンスであるかどうかを判定する
if (annotation instanceof PdfAttachmentAnnotationWidget){
//添付ファイルの注釈を削除する
annotationCollection.remove((PdfAnnotation) annotation);
}
}
}
//PDFファイルを保存する
doc.saveToFile("注釈としての添付ファイルの削除.pdf");
doc.close();
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。