PDFのレイヤ構造を利用したく、Aspose.PDFの購入を検討しております。
以下URLのmevenよりライブラリを取得し、動作検証を行っております。
以下のようなソースコードを記述し、PDFファイルにレイヤ構造の画像を追加することはできました。
=====
// PDF作成
Document doc = new Document();
// ページ追加
Page page = doc.getPages().add();
page.setPageSize(500, 500);
// 画像読み込み
FileInputStream stream = new FileInputStream(“/temp/test.png”);
// レイヤ作成
Layer layer = new Layer(“1”, “testlayer”);
// リソース追加
String imageName = page.getResources().getImages().add(stream);
// レイヤイメージ追加
layer.getContents().add(new GSave());
layer.getContents().add(new ConcatenateMatrix(500, 0, 0, 500, 0, 0));
layer.getContents().add(new Do(imageName));
layer.getContents().add(new GRestore());
// layer.lock(); // エラーとなる
page.getLayers().add(layer);
// PDF保存
doc.save(“/temp/test.pdf”);
=====
このレイヤについて、以下のような操作を行いたいのですが、どのように実装すればよいでしょうか。
- レイヤの初期表示状態を非表示にする
- レイヤの表示切替を不可能にする
2については、Layerクラスにlock()メソッドが存在するのですが、実行するとエラーとなります。
よろしくお願いいたします。
@KenichiFukita
PDFのレイヤに関して、以下の操作を実装する方法について説明します。
1. レイヤの初期表示状態を非表示にする
レイヤの初期表示状態を非表示にするには、レイヤを作成する際に、Layer
クラスのコンストラクタにオプションで表示状態を指定することができます。具体的には、レイヤを作成する際に、Layer
のプロパティを設定して非表示にすることが可能です。
Layer layer = new Layer("1", "testlayer");
layer.setVisible(false); // レイヤを非表示に設定
2. レイヤの表示切替を不可能にする
レイヤの表示切替を不可能にするためには、lock()
メソッドを使用します。ただし、lock()
メソッドを使用する際にエラーが発生する場合は、レイヤが正しく追加されているか、または他の条件が満たされているかを確認する必要があります。以下のように、レイヤを追加した後にロックを試みてください。
page.getLayers().add(layer);
layer.lock(); // レイヤをロック
もしlock()
メソッドがエラーを引き起こす場合、Aspose.PDFのバージョンやAPIの変更が影響している可能性がありますので、最新のドキュメントを確認することをお勧めします。
これらの手順を実行することで、PDFのレイヤの初期表示状態を非表示にし、表示切替を不可能にすることができます。詳細な情報やサンプルコードについては、Asposeの公式ドキュメントを参照してください。
Sources:
[1]: Work with PDF layers using C# - Aspose Documentation
@KenichiFukita
Mavenで利用可能なバージョンは、宣伝されているものと同じです。しかし、お客様がダウンロードされたのは古いバージョンであり、APIの最新バージョンで提供されている機能や修正が一部欠けている可能性があります。それでもなお、お客様の要件を確認し、それらに基づいて実現可能かどうかを確認する必要があります。
PDFJAVA-45059 というチケットが分析のために問題追跡システムに記録されており、詳細を調査中です。チケットが解決次第、お知らせいたします。今しばらくお待ちください。
ご不便をおかけして申し訳ございません。
ご確認いただきありがとうございます。
報告お待ちしております。