1

私は動的テキストを使用しているため、斜体または太字のテキストはどこにでも配置できます。すべてをチャンクに分割することはできません。そのため、html パーサーを使用する必要があります。

入力文字列は

ąčęėįšųū90-žthis <i>is <b>bold ąčęėįšųū90-ž</i></b> text

文字列は iTextSharp html パーサーでフォーマットされます。

private Paragraph CreateSimpleHtmlParagraph(String text)
{
    //Our return object
    List<Chunk> c = new List<Chunk>();
    Paragraph p = new Paragraph();
    var styles = new StyleSheet();           
    using (StringReader sr = new StringReader(text))
    {
        //Parse and get a collection of elements
        List<IElement> elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, styles);
        foreach (IElement e in elements)
        {
            var chunks = e.Chunks;
            foreach (var chunk in chunks) //list of chunks
            {                        
                chunk.Font.SetFamily(""); //how to set font family here
            }
            p.Add(e);                    
        }
    }
    return p; //getting all the special chars (ąčęėįšųū90-ž...)
}

メインフォームのコード:

Paragraph pr1 = CreateSimpleHtmlParagraph("ąčęėįšųū90-žthis <i>is <b>bold ąčęėįšųū90-ž</i></b> text");
doc.Add(pr1);

しかし、PDFでは私はしか見えません

š90 -ž これ太字の š90-žテキストです

その他の文字 ( ąčęėį) はありません。フォントと関係があることは知っていますが、どこに問題があるのか​​ わかりません。フォントは、ドキュメント全体、times new roman、arial など、私の特別な文字 (cp1257、Baltic encoding) を表示できるものすべてで同じである必要があります。

通常、テキストをフォーマットする必要があるときは、チャンクと独自のフォントを使用します。

Font arial10n = PdfFontManager.GetFont("c:\\windows\\fonts\\arial.ttf", 10);

colClientTxt.AddText(new Chunk(row["name"].ToString() + "\n", arial10n));

そして PdfFontManager クラスで:

public static Font GetFont(string name, int size)
    {
        BaseFont baseFont = BaseFont.CreateFont(name, BaseFont.CP1257, BaseFont.EMBEDDED);
        Font font = new Font(baseFont, size);
        return font;
    }

では、フォントファミリーを設定する方法、またはテキストを動的にフォーマットする別の方法があるでしょうか?

4

0 に答える 0