iTextSharp除非安装了字体,否则不会使用字体

时间:2014-03-28 16:41:43

标签: c# itextsharp

如果我的系统字体目录中安装了字体,我的PDF文件是否正确生成了中文字符。当我实际将其部署到Azure网站时,我无法安装该字体。

我将字体添加到项目中并且它已部署,应用程序找到路径,但生成PDF时iTextSharp不使用它。

当前有效的代码 -

FontFactory.Register("c:/windows/fonts/ARIALUNI.TTF");

这不起作用,但路径很好 -

string arialuniTffFont = System.IO.Path.Combine(Server.MapPath("~/bin/fonts/arialuni.ttf"));
FontFactory.Register(arialuniTffFont);

更新:

    private void CreatePDF(IList<string> HTMLData, string fileName, bool rotate)
    {
        //Create PDF document 
        Document doc = new Document(PageSize.A4, 36, 36, 36, 36);
        if (rotate)
        {
            doc.SetPageSize(iTextSharp.text.PageSize.A4.Rotate());
        }

        HTMLWorker parser = new HTMLWorker(doc);

        string fontpath = Server.MapPath("/Fonts/arialuni.ttf");
        FontFactory.Register(fontpath);

        StyleSheet styles = new StyleSheet();
        styles.LoadTagStyle(HtmlTags.TABLE, HtmlTags.SIZE, "6pt");
        styles.LoadTagStyle(HtmlTags.H3, HtmlTags.SIZE, "10pt");
        styles.LoadTagStyle(HtmlTags.H5, HtmlTags.SIZE, "6pt");
        styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FACE, "Arial Unicode MS");
        styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, BaseFont.IDENTITY_H);

        parser.SetStyleSheet(styles);

        PdfWriter.GetInstance(doc, new FileStream(fileName, FileMode.Create));
        doc.Open();

        //Try/Catch removed
        foreach (var s in HTMLData) {
            StringReader reader = new StringReader(s);
            parser.Parse(reader);
            doc.NewPage();
        }
        doc.Close();
    }

不会产生中文字符的整个例程。

1 个答案:

答案 0 :(得分:0)

我尝试使用的文件是直接从互联网上下载的文件。我没有意识到需要提取它。一旦我弄清楚了并得到了正确的文件,它就可以正常工作而无需更改任何代码。