PDFファイルにベクターグラフィックを追加することは、レポート、請求書、インタラクティブ文書を生成する際の一般的な要件です。Conholdate.Total for Java は、サーバーサイドでの PDF 操作を簡素化する強力な SDK です。このガイドでは、PDF に矩形、楕円、線を挿入し、外観を設定し、パフォーマンス上の考慮点を扱う方法を、明確な Java コード例とともに学びます。

JavaでPDFにシェイプを追加する手順

  1. Mavenリポジトリと依存関係の追加 - Conholdate Mavenリポジトリと conholdate-total 依存関係を pom.xml に含めます。これにより、PdfDocumentShapeFactory などの SDK クラスが利用可能になります。
    <repositories>
        <repository>
            <id>conholdate-repo</id>
            <name>Conholdate Maven Repository</name>
            <url>https://repository.conholdate.com/repo/</url>
        </repository>
    </repositories>
    
  1. PDF ドキュメントの読み込み - PdfDocument のインスタンスを作成し、対象の PDF ファイルを開きます。このクラスは API リファレンス に記載されています。

    PdfDocument pdf = new PdfDocument();
    pdf.open("input.pdf");
    
  2. シェイプオブジェクトの作成 - ShapeFactory を使用して矩形、楕円、または線をインスタンス化します。位置、サイズ、視覚属性を設定します。

    // Rectangle
    Shape rect = ShapeFactory.createRectangle(100, 150, 200, 100);
    rect.setFillColor(Color.BLUE);
    rect.setStrokeColor(Color.BLACK);
    rect.setLineWidth(2);
    

// Ellipse Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100); ellipse.setFillColor(Color.GREEN); ellipse.setStrokeColor(Color.DARK_GRAY); ellipse.setLineWidth(1.5f);

// Line
   Shape line = ShapeFactory.createLine(100, 300, 500, 300);
   line.setStrokeColor(Color.RED);
   line.setLineWidth(3);
  1. ページにシェイプを追加 - ドキュメントから目的のページを取得し、各シェイプをそのグラフィックス コレクションに追加します。
Page page = pdf.getPages().get_Item(0); // first page
page.getGraphics().addShape(rect);
page.getGraphics().addShape(ellipse);
page.getGraphics().addShape(line);
  1. Save the Updated PDF - すべてのシェイプが追加された後、ドキュメントを新しいファイルに保存します。
    pdf.save("output.pdf");
    pdf.close();
    

JavaでPDFに図形を追加する - 完全なコード例

以下の例は、すべての手順を1つの実行可能なプログラムにまとめたものです。

import com.conholdate.total.pdf.*;
import com.conholdate.total.pdf.shapes.*;
import java.awt.Color;

public class AddShapesDemo { public static void main(String[] args) throws Exception { // Initialize PDF document PdfDocument pdf = new PdfDocument(); pdf.open(“input.pdf”);

// 四角形を作成 Shape rectangle = ShapeFactory.createRectangle(100, 150, 200, 100); rectangle.setFillColor(Color.BLUE); rectangle.setStrokeColor(Color.BLACK); rectangle.setLineWidth(2);

// Create ellipse Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100); ellipse.setFillColor(Color.GREEN); ellipse.setStrokeColor(Color.DARK_GRAY); ellipse.setLineWidth(1.5f);

// ラインを作成 Shape line = ShapeFactory.createLine(100, 300, 500, 300); line.setStrokeColor(Color.RED); line.setLineWidth(3);

// 最初のページにシェイプを追加
Page page = pdf.getPages().get_Item(0);
page.getGraphics().addShape(rectangle);
page.getGraphics().addShape(ellipse);
page.getGraphics().addShape(line);
// 結果を保存
pdf.save("output.pdf");
pdf.close();
}
}

注意: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパス(input.pdfoutput.pdf)を実際の場所に合わせて更新し、必要な依存関係がすべて正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメント を参照するか、サポートチーム にお問い合わせください。

Java のインストールとセットアップ

Conholdate.Total for Java の使用を開始するには、公式サイトから最新リリースをダウンロードし、前述の Maven 依存関係を追加します。SDK は Java 8+ のランタイム上で動作し、追加のネイティブライブラリは必要ありません。

キー機能と概要

Conholdate.Total を使用した Java での PDF へのシェイプ追加

Conholdate.Total for Java は、PDF コンテンツの作成と編集のための統一された API を提供します。シェイプ描画機能はベクターグラフィックスで動作し、追加された要素が任意のズームレベルでも鮮明に保たれます。基本的なプリミティブ(矩形、楕円、線)だけでなく、複雑なパスも描画できます。

Conholdate.Total のこのタスクに重要な機能

  • Cross‑platform compatibility: Windows、Linux、macOS サーバーで動作します。
  • High‑performance rendering: 形状はネイティブ PDF コンテンツを生成するのと同じエンジンでレンダリングされ、ラスタライズを回避します。
  • Full control over appearance: 塗りつぶし色、ストローク色、線幅、不透明度、そして blend モードを設定できます。
  • Layered graphics: 形状を特定のレイヤーやグループに追加して、後での操作を容易にします。

最適なレンダリングのためのシェイププロパティの設定

シェイプを追加する際は、目的のビジュアル結果を得るために以下のプロパティを検討してください。

  • Position and Size: 絶対座標(ポイント)またはページサイズに対する割合(パーセンテージ)で指定します。
  • Colors: SDK は java.awt.Color オブジェクトを受け入れます。透明度を設定するには new Color(r, g, b, alpha) を使用します。
  • Line Width: ポイント単位で測定され、1 の値は 1/72 インチに相当します。
  • Opacity and Blend Mode: setOpacity(float)setBlendMode(BlendMode) で調整します。
  • Rotation and Skew: 高度なレイアウトの場合、setRotation(double) または setSkew(double, double) を使用して変換を適用します。

高度なプロパティを設定する例:

ellipse.setOpacity(0.7f);
ellipse.setBlendMode(BlendMode.MULTIPLY);
ellipse.setRotation(45);

PDFにシェイプを追加する際のパフォーマンス考慮事項

多数のベクトルオブジェクトを追加すると、処理時間とメモリ使用量が増加する可能性があります。以下のガイドラインに従ってください:

  • Batch Drawing: ページに追加する前に、関連するシェイプを単一のグラフィックコンテナにまとめます。
  • Reuse Objects: 複数のページで同一のシェイプが必要な場合は、新しいインスタンスを作成する代わりに既存のシェイプをクローンします。
  • Avoid Over‑Scaling: 高価なラスタ変換を防ぐため、最終表示サイズでシェイプを定義します。
  • Dispose Resources: ネイティブリソースを解放するために、PdfDocument を速やかに閉じます。

結論

Conholdate.Total for Java は、Java 開発者に PDF ドキュメントに図形を追加するシンプルな方法を提供し、リッチでインタラクティブなレポートや請求書の作成を可能にします。本ガイドの手順、構成のヒント、パフォーマンスガイドラインに従うことで、安心して PDF ワークフローにベクターグラフィックスを統合できます。製品を本番環境で使用する際は適切なライセンスを取得することを忘れないでください。評価用の一時ライセンスが利用可能で、完全な価格情報は価格ページに掲載されています。

よくある質問

PDF のシェイプにカスタムフォントを追加するにはどうすればよいですか?
TrueType フォントは pdf.getFonts().addFont("MyFont.ttf") を使用して埋め込むことができ、その後 setFont(myFont) でシェイプに割り当てることができます。SDK はフォントが最終的な PDF に埋め込まれることを保証します。

既存のPDFに形状を挿入して、既存のコンテンツを失わないようにすることは可能ですか?
はい。PdfDocument.open()でPDFを開くと、すべての既存ページとオブジェクトが保持されます。ページのグラフィックスコレクションに形状を追加することは、ページを拡張するだけで、既存のコンテンツを上書きすることはありません。

シェイプを追加した後、どのファイル形式にエクスポートできますか?
Conholdate.Total for Java は PDF、PDF/A、PDF/X への保存に加えて、PNGJPEG、BMP などの画像形式にも対応しています。必要に応じて pdf.save("output.pdf") または pdf.save("output.png", ImageSaveOptions.Png) を使用してください。