2

iText を使用してプログラムで PDF ファイルを作成するには、次の 2 つの方法があります。

  1. ParagraphChunkなどの高レベル オブジェクトの使用
  2. 低レベルの機能を使用しています。PdfContentByteこれはクラスを使用してドームです。

2 番目の方法では、各新しいデータ挿入の前後に and を使用beginTextendTextます。

最初もそれをする必要がありますか?と を使用beginTextendTextますか?

私は最初の方法を使用していますが、バランスの取れていない begin end テキスト演算子の例外が発生しています。

どうしてですか?

4

2 に答える 2

2

分析

iText API を調べると、次のようになります。

PdfContentByteは、ユーザーが配置したページのテキストおよびグラフィック コンテンツを含むオブジェクトです。適切なフォントエンコーディングを適用する方法を知っています。

チャンクは、ドキュメントに追加できるテキストの最小の重要な部分です。ほとんどの要素は、1 つ以上のチャンクに分割できます。チャンクは、特定のフォントを持つ文字列です。他のすべてのレイアウト パラメータは、このテキストのチャンクが追加されるオブジェクトで定義する必要があります。

PdfContentByte と Chunk (要素) は、別の目的で作成されます。それらには、共通点もインターフェイスもスーパークラスもありません (Object ofc を除く)。

質疑応答

最初の理由もそうですか?

begin を使用してテキストの書き込みを開始し、 end を使用してテキストの書き込みを終了し、現在のフォントを無効にします。

beginText と endText を使用していますか?

いいえ、Chunk や Paragraph などの要素は begin と end を使用しません。StringBuffer を使用してテキスト値を保持します。

「不均衡な開始終了テキスト演算子」例外が発生するのはなぜですか?

PdfContentByteの beginText() および endText() ソースを見ると、テキストがまだ終了していないときにテキストを開始しようとしたり、まだ開始されていないときにテキストを終了しようとすると、この例外が発生することがわかります。


要素を追加する前に document.open() を呼び出し、ドキュメントを終了するときに document.close() を呼び出したことを確認してください。

于 2012-06-12T11:11:32.153 に答える
0

beginText()iText で高レベルのオブジェクトを使用する場合、およびendText()メソッドについて心配する必要はありません。この Hello World のを見てください。

于 2012-06-12T11:05:28.457 に答える