タグ付きPDFファイルは、構造要素を持つPDFファイルです。これらは、補助技術に依存するユーザがコンテンツにアクセスできるようにするために使用されます。Spire.PDF for Javaは、Javaアプリケーションでタグ付きPDFを作成することをサポートしています。この記事では、テキスト、画像、図形、表などのPDF要素にタグを追加する方法について説明します。
【依存関係の追加】
この方法は、Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。
1. Maven
Maven を使用している場合、プロジェクトの pom.xml ファイルに以下のコードを追加することで、簡単にアプリケーションに JAR ファイルをインポートすることができます。
<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.12.6</version>
</dependency>
</dependencies>
2. 公式サイトよりJarファイルをダウンロード
まず、Spire.PDF for Javaの公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Pdf.jarファイルを依存関係としてプロジェクトにインポートしてください。
テキストにタグを追加する
無料のSpire.PDF for Javaは、タグ付きテキストを含むPDFを作成するPdfTaggedContentクラスを提供しています。以下は、その詳細な手順です。
- PdfDocumentクラスオブジェクトを作成します。
- 作成したPDF文書に PdfDocument.getPages.add() メソッドでページを追加しています。
- PdfPageBase.setTabOrder(TabOrder.Structure) メソッドを用いて、タブオーダーをStructureに設定する。
- PdfTaggedContentクラスのオブジェクトを作成します。
- PdfTaggedContent.getStructureTreeRoot().appendChildElement() メソッドでドキュメントのルートに "document" 要素を追加し、Structure 要素を作成する。
- PdfStructureElement.appendChildElement() メソッドを使用して、"document" 要素の下に "paragraph" 要素を追加します。
- PdfStructureElement.beginMarkedContent() メソッドを使用して、見出し要素の開始を示す開始タグを追加します。
- PdfPageBase.getCanvas.drawString() メソッドを使用して、ページに段落テキストを描画します。
- PdfStructureElement.endMarkedContent() メソッドを使用して終了タグを追加し、段落要素がここで終了することを意味するようにします。
- PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。
Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.interchange.taggedpdf.PdfStandardStructTypes;
import com.spire.pdf.interchange.taggedpdf.PdfStructureElement;
import com.spire.pdf.interchange.taggedpdf.PdfTaggedContent;
import java.awt.*;
public class createTaggedPDF {
public static void main(String[] args) throws Exception {
//PDFドキュメントを作成する
PdfDocument doc = new PdfDocument();
//ページを追加する
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, new PdfMargins(20));
//タブオーダーを設定する
page.setTabOrder(TabOrder.Structure);
//PdfTaggedContentクラスのインスタンスを作成する
PdfTaggedContent taggedContent = new PdfTaggedContent(doc);
//ドキュメントのタイトルと言語を設定する
taggedContent.setLanguage("ja-JP");
taggedContent.setTitle("タグ付きPDF");
//フォントを設定する
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI",Font.PLAIN,12), true);
PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.black));
//Structure要素を作成する
PdfStructureElement article = taggedContent.getStructureTreeRoot().appendChildElement(PdfStandardStructTypes.Document);
PdfStructureElement paragraph1 = article.appendChildElement(PdfStandardStructTypes.Paragraph);
PdfStructureElement span1 = paragraph1.appendChildElement(PdfStandardStructTypes.Span);
article.setTitle("テキストのタグ");
//タグ付き段落を追加する
span1.beginMarkedContent(doc.getPages().get(0));
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify);
page.getCanvas().drawString("PDFドキュメントの1段落目", font, brush, new Rectangle(40, 80, 480, 80), format);
paragraph1.setTitle("1つ目のテキストのタグ");
span1.endMarkedContent(doc.getPages().get(0));
//タグ付き段落をもう一つ追加する
PdfStructureElement paragraph2 = article.appendChildElement(PdfStandardStructTypes.Paragraph);
paragraph2.beginMarkedContent(doc.getPages().get(0));
page.getCanvas().drawString("PDFドキュメントの2段落目",font, brush, new Rectangle(40, 160, 480, 60), format);
paragraph2.endMarkedContent(doc.getPages().get(0));
paragraph2.setTitle("2つ目のテキストのタグ");
//ドキュメントを保存する
String result = "タグ付きPDF.pdf";
doc.saveToFile(result);
doc.close();
}
}
画像にタグを追加する
Spire.PDF for javaが提供するPdfTaggedContentインスタンスを使用することで、PDF文書内の画像にタグを追加することができます。
- PdfDocumentクラスのオブジェクトを作成します。
- 作成したPDF文書に PdfDocument.getPages.add() メソッドでページを追加しています。
- PdfPageBase.setTabOrder(TabOrder.Structure) メソッドを使用して、タブオーダーをStructureに設定します。
- PdfTaggedContentインスタンスのオブジェクトを作成します。
- PdfTaggedContent.getStructureTreeRoot().appendChildElement() メソッドを使用して、ドキュメントのルートに "document" 要素を追加し、Structure 要素を作成します。
- PdfStructureElement.appendChildElement() メソッドを用いて、"document" 要素の下に "figure" 要素を追加する。
- PdfStructureElement.beginMarkedContent() メソッドを使用して、見出し要素の開始を示す開始タグを追加する。
- PdfPageBase.getCanvas.drawImage() メソッドを使用して、ページ上に画像を描画します。
- PdfStructureElement.endMarkedContent() メソッドで終了タグを追加し、画像要素がここで終了することを意味するようにします。
- PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
Java
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.interchange.taggedpdf.PdfStandardStructTypes;
import com.spire.pdf.interchange.taggedpdf.PdfStructureElement;
import com.spire.pdf.interchange.taggedpdf.PdfTaggedContent;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
public class createTaggedPDFImage {
public static void main(String[] args) throws Exception {
//PdfDocumentクラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//ページを追加する
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, new PdfMargins(20));
//タブオーダーを設定する
page.setTabOrder(TabOrder.Structure);
//PdfTaggedContentクラスのインスタンスを作成する
PdfTaggedContent taggedContent = new PdfTaggedContent(doc);
//ドキュメントのタイトルと言語を設定する
taggedContent.setLanguage("ja-JP");
taggedContent.setTitle("タグ付きPDF");
//Structure要素を作成する
PdfStructureElement article = taggedContent.getStructureTreeRoot().appendChildElement(PdfStandardStructTypes.Document);
PdfStructureElement figure = article.appendChildElement(PdfStandardStructTypes.Figure);
article.setTitle("画像のタグ");
//タグ付き画像の追加
figure.setAlt("代替テキスト");
figure.beginMarkedContent(doc.getPages().get(0), null);
PdfImage image = PdfImage.fromFile("Computer.png");
Dimension2D dimension2D = new Dimension();
dimension2D.setSize( 200,200);
page.getCanvas().drawImage(image, new Point2D.Float(40, 80),dimension2D);
figure.endMarkedContent(doc.getPages().get(0));
figure.setTitle("画像にタグを付ける");
//ドキュメントを保存する
String result = "タグ付きPDF.pdf";
doc.saveToFile(result);
doc.close();
}
}
表にタグを追加する
Spire.PDF for javaは、PDFファイル内のテーブルにタグを追加することもサポートしています。ここで詳細な手順は次のとおりです。
- PdfDocumentクラスオブジェクトを作成します。
- PdfDocument.getPages.add() メソッドを使用して作成されたPDF文書にページを追加します。
- PdfPageBase.setTabOrder(TabOrder.Structure) メソッドを使用して、タブオーダーをStructureに設定します。
- PdfTaggedContentクラスのオブジェクトを作成します。
- PdfTaggedContent.getStructureTreeRoot().appendChildElement() メソッドを使用して、ドキュメントのルートに "document" 要素を追加して構造体要素を作成します。
- PdfStructureElement.appendChildElement() メソッドを用いて、"document" 要素の下に "table" 要素を追加します。
- PdfStructureElement.beginMarkedContent() メソッドを使用して、見出し要素の先頭を示す開始タグを追加します。
- PdfTable.draw(page, new Point2D.Float(x, y)) メソッドを用いて、PDFページに表を描画します。
- PdfStructureElement.endMarkedContent() メソッドを使用して終了タグを追加し、表要素がここで終了することを意味するようにします。
- PdfDocument.saveToFile() メソッドでドキュメントを保存します。
Java
import com.spire.pdf.*;
import com.spire.pdf.bookmarks.PdfTextStyle;
import com.spire.pdf.graphics.*;
import com.spire.pdf.interchange.taggedpdf.PdfStandardStructTypes;
import com.spire.pdf.interchange.taggedpdf.PdfStructureElement;
import com.spire.pdf.interchange.taggedpdf.PdfTaggedContent;
import com.spire.pdf.tables.PdfColumn;
import com.spire.pdf.tables.PdfHeaderSource;
import com.spire.pdf.tables.PdfTable;
import java.awt.*;
import java.awt.geom.Point2D;
public class createTaggedPDFTable {
public static void main(String[] args) throws Exception {
//PdfDocument クラスのオブジェクトを作成する
PdfDocument doc = new PdfDocument();
//ページを追加する
PdfPageBase page = doc.getPages().add(PdfPageSize.A4, new PdfMargins(20));
//タブオーダーを設定する
doc.getPages().get(0).setTabOrder(TabOrder.Structure);
//PdfTaggedContent クラスのオブジェクトを作成する
PdfTaggedContent taggedContent = new PdfTaggedContent(doc);
//ドキュメントのタイトルと言語を設定する
taggedContent.setLanguage("ja-JP");
taggedContent.setTitle("タグ付きPDF");
//フォントとブラシを作成する
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Gothic UI",Font.PLAIN,14), true);
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Yu Mincho",Font.PLAIN,12), true);
PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.black));
//Structure要素を作成する
PdfStructureElement article = taggedContent.getStructureTreeRoot().appendChildElement(PdfStandardStructTypes.Document);
PdfStructureElement figure = article.appendChildElement(PdfStandardStructTypes.Table);
figure.setTitle("表にタグを追加する");
//表にタグを追加する
figure.beginMarkedContent(doc.getPages().get(0), null);
//PDFページに表を追加し、そのデータを設定する
PdfTable table = new PdfTable();
table.getStyle().setBorderPen(new PdfPen(brush, 0.5f));
table.getStyle().getHeaderStyle().setStringFormat(new PdfStringFormat(PdfTextAlignment.Center));
table.getStyle().setHeaderSource(PdfHeaderSource.Rows);
table.getStyle().setHeaderRowCount(1);
table.getStyle().setShowHeader(true);
table.getStyle().setCellPadding(2);
table.getStyle().setHeaderSource(PdfHeaderSource.Rows);
table.getStyle().setHeaderRowCount(1);
table.getStyle().setShowHeader(true);
table.getStyle().getDefaultStyle().setFont(font1);
table.getStyle().getHeaderStyle().setFont(font);
String[] data = {"名前;年齢;役職名;メモ",
"John;23;プログラマー; ",
"Katty;21;財務担当者; ",
"Coco;25;プログラマー;インターン",
"Kyle;27;プログラマー; "
};
String[][] dataSource = new String[data.length][];
for (int i = 0; i < data.length; i++) {
dataSource[i] = data[i].split("[;]", -1);
}
table.setDataSource(dataSource);
for(int i = 0; i < table.getColumns().getCount();i++)
{
PdfColumn column= table.getColumns().get(i);
column.setStringFormat(new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle));
}
//ページに表を描画する
table.draw(page, new Point2D.Float(0, 150));
figure.endMarkedContent(page);
//ドキュメントを保存する
String result = "タグ付きPDF.pdf";
doc.saveToFile(result);
doc.close();
}
}
この記事では、タグを使ったPDFファイルの作成方法について紹介します。また、Spire.PDF for JavaでPDFドキュメントを操作するための多くの機能があります。あなたはこのツールに関する任意の質問がある場合は、ヘルプのためのSpire.PDF Forumに移動することができます。