1

オープンソースの iTextSharp の v5.2.1 を使用しています。期待どおりに動作しないコードのセクションがあります。何らかの理由で、pdf をブラウザーにストリーミングすると、フォントが異なります。

以下は、私がやろうとしていることの表現です。

Font times_roman = new Font(Font.FONTFAMILY.TIMES_ROMAN, 9f);
float indent1 = 20f;

try
{

   foreach (var item in List)  {

        Chunk c1 = new Chunk(string.format("Item: {0}\n\n" item.Name, times_roman));
        Phrase ph1 = new Phrase(c1);
        Paragraph p1 = New Paragraph(ph1);
        doc.Add(p1);

        Chunk c2 = new Chunk(string.format("(1) Item  Category{0}:\n\n" item.Category, times_roman));
        Phrase ph2 = new Phrase(c2);
        Paragraph p2 = New Paragraph(ph2);
        p2.FirstLineIndent = indent1;
        doc.Add(p2);

  }
}
catch
{
}

次に、pdf をストリーミングして、IE8 または IE9 で自動的に開くようにします。

何を試しても、c2、ph2、p2にどのフォント設定を適用しても、常に次の結果が得られます

Item: MyWidget1 (this dislays Times Roman)

(1) Item Category:  Utility Tool (this displays as Helvetica 12)

それはあたかも iTextSharp がそれを (1) の理由で ListItem と見なし、あなたが何をしても制御を引き継ぐかのようです。

最初の行のみをインデントする必要があり、itextsharp リストは複数の行をインデントして自動的に整列させるため、Lists と ListItem は使用できません。テキストが半分のページに折り返されるアイテムがたくさんあります。

iTextSharp ライブラリは (無料なので) とても気に入っていますが、この機能には頭が下がります。

4

0 に答える 0