0

私は iTextSharp 5.4.4 を使用しており、アンカーの順序付きリストを作成しようとしています。私は2つの問題に直面しています:

  1. アンカーを ListItem のコンストラクターに直接渡すと、レンダリングされた出力でチャンクとして扱われ、アンカー機能が失われます。回避策: 空のコンストラクターを使用して ListItem を初期化し、ListItem.Add を使用してアンカーを追加します。

2.上記の回避策を使用して、リスト記号のフォントを調整して、アイテムのフォントと一致させようとします

ListItem.AdjustListSymbolFont();

それは機能しません-itextには、リスト項目にフォントを取得するチャンクがないためだと思います。だから私がしたことは次のとおりです

var listItem = new iTextSharp.text.ListItem(clickAnchor); // clickAnchor is treated as a Chunk
listItem.Add(clickAnchor); // i add the anchor again
listItem.AdjustListSymbolFont();
listItem.Remove(listItem.Chunks[0]); // after the font is adjusted, i remove the first Chunk

したがって、基本的には、チャンクとして扱われることがわかっている要素を与えて、フォントを取得する要素を取得し、同じ要素を ListeItem に追加してフォントを調整します。次に、最初のチャンクを削除します。このチャンクは、コードの最初の行で要素から処理および追加されます。これは非常に醜い回避策ですが、機能したのはこれだけです。

上記を行うためのより良い方法はありますか?ありがとう

4

1 に答える 1

0

あなたの質問を正しく理解できれば、clickAnchorは 型のオブジェクトですAnchor。これを にListItemパラメーターとして渡すと、 として扱われ、Phraseすべての対話性が失われます。

これを避けるには、Anchor. 代わりにChunk、メソッドを使用してインタラクティブにする必要がありますSetAnchor()。このようにして、 で使用するときにアンカーが保持されますListItem

更新: kfc のコメントのコード スニペットからコピー/貼り付け:

var clickAnchor = new Chunk(pub.Title, anchorFont);
clickAnchor.SetLocalGoTo(i.ToString());
var listItem = new iTextSharp.text.ListItem(clickAnchor);
listItem.AdjustListSymbolFont();
于 2013-09-21T08:19:53.777 に答える