チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Java»Spire.PDF for Java»文書操作»Java:タグ付き PDF ドキュメントの作成方法
2023-11-17

Java:タグ付き PDF ドキュメントの作成方法

タグ付き PDF は、HTML コードによく似たタグを含む PDF ドキュメントです。タグは、PDF のコンテンツが支援技術によってどのように表示されるかを管理する論理構造を提供します。各タグは、見出しレベル1 <H1>、段落 <P>、画像 <Figure>、表 <Table> など、関連するコンテンツ要素を識別します。この記事では、Spire.PDF for Java を使って Java プログラムでタグ付き PDF ドキュメントを作成する方法を説明します。

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>9.9.6</version>
    </dependency>
</dependencies>

Java によるタグ付きPDFの作成

タグ付き PDF 文書に構造要素を追加するには、まず PdfTaggedContent クラスのオブジェクトを作成する必要があります。次に、PdfTaggedContent.getStructureTreeRoot().appendChildElement() メソッドを使用して、要素をルートに追加します。以下は、Spire.PDF for Java を使ってタグ付き PDF に「見出し」要素を追加する詳細な手順です。

  • PdfDocument のオブジェクトを作成し、PdfDocument.getPages().add() メソッドを使ってそれにページを追加します。
  • PdfTaggedContent クラスのオブジェクトを作成します。
  • PdfTaggedContent.setPdfUA1Identification() メソッドを使用して、ドキュメントを PDF/UA 識別に準拠させます。
  • PdfTaggedContent.getStructureTreeRoot().appendChildElement() メソッドを使用して、ドキュメントのルートに「ドキュメント」要素を追加します。
  • PdfStructureElement.appendChildElement() メソッドを使用して、「ドキュメント」要素の下に「見出し」要素を追加します。
  • PdfStructureElement.beginMarkedContent() メソッドを使用して開始タグを追加し、見出し要素の開始を示します。
  • PdfPageBase.getCanvas().drawString() メソッドを使用してページに見出しテキストを描画します。
  • PdfStructureElement.beginMarkedContent() メソッドを使用して終了タグを追加します。
  • PdfDocument.saveToFile() メソッドを使用してドキュメントを PDF ファイルに保存します。

次のコード例は、Java でタグ付き PDF ドキュメントのドキュメント、見出し、段落、図、表などのさまざまな要素を作成する方法を示しています。

  • 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 com.spire.pdf.tables.PdfTable;

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;

public class createTaggedPDF {

    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("Javaによるタグ付きPDFドキュメントの作成");

        //PDF/UA1の識別情報を設定します
        taggedContent.setPdfUA1Identification();

        //フォントとブラシを作成します
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Mincho",Font.PLAIN,14), true);
        PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));

        //"ドキュメント"要素を追加します
        PdfStructureElement document = taggedContent.getStructureTreeRoot().appendChildElement(PdfStandardStructTypes.Document);

        // "見出し"要素を追加します
        PdfStructureElement heading1 = document.appendChildElement(PdfStandardStructTypes.HeadingLevel1);
        heading1.beginMarkedContent(page);
        String headingText = "タグ付きPDFとは何ですか?";
        page.getCanvas().drawString(headingText, font, brush, new Point2D.Float(0, 30));
        heading1.endMarkedContent(page);

        // "段落"要素を追加します
        PdfStructureElement paragraph = document.appendChildElement(PdfStandardStructTypes.Paragraph);
        paragraph.beginMarkedContent(page);
        String paragraphText = "タグ付きPDFは、人生を変えるような用語ではないように思えます。しかし、一部の人にとっては重要なものです。視覚障害を持つ人や低視力の人々は、情報にアクセスするために補助技術(画面読み上げや接続された点字表示など)を使用していますが、タグのないPDFでは文書に含まれる情報を見逃してしまいます。補助技術はタグのないPDFを「読む」ことができないためです。デジタルアクセシビリティは、かつて視覚障害を持つ人に閉ざされていた情報への道を多く開いていますが、PDFはしばしばその方程式から外れてしまいます。";
        Rectangle2D.Float rect = new Rectangle2D.Float(0, 60, (float) page.getCanvas().getClientSize().getWidth(), (float) page.getCanvas().getClientSize().getHeight());
        page.getCanvas().drawString(paragraphText, font, brush, rect);
        paragraph.endMarkedContent(page);

        // "図"要素を追加します
        PdfStructureElement figure = document.appendChildElement(PdfStandardStructTypes.Figure);
        figure.beginMarkedContent(page);
        PdfImage image = PdfImage.fromFile("PDF.png");
        page.getCanvas().drawImage(image, new Point2D.Float(0, 220));
        figure.endMarkedContent(page);

        // "表"要素を追加します
        PdfStructureElement table = document.appendChildElement(PdfStandardStructTypes.Table);
        table.beginMarkedContent(page);
        PdfTable pdfTable = new PdfTable();
        pdfTable.getStyle().getDefaultStyle().setFont(font);
        String[] data = {"名前;年齢;性別",
                "ジョン;22;男性",
                "ケイティ;25;女性"
        };
        String[][] dataSource = new String[data.length][];
        for (int i = 0; i < data.length; i++) {
            dataSource[i] = data[i].split("[;]", -1);
        }
        pdfTable.setDataSource(dataSource);
        pdfTable.getStyle().setShowHeader(true);
        pdfTable.draw(page.getCanvas(), new Point2D.Float(0, 310), 300f);
        table.endMarkedContent(page);

        // ドキュメントをファイルに保存します
        doc.saveToFile("PDFUAの作成.pdf");
    }
}

Java:タグ付き PDF ドキュメントの作成方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 391 times