使用itextsharp将字体嵌入到pdf中

时间:2012-05-07 17:34:58

标签: pdf fonts itextsharp itext

我正在尝试使用itextsharp 5.2.1.0嵌入字体,但是我遇到了错误。字体是KozGoPro-Light.otf,经过一些研究后是一个日本字体。我试过以下......

        Dim tblx1 As PdfPTable = New PdfPTable(1)
        Dim tblrightcell_margin2 As PdfPCell
        Dim bfR As iTextSharp.text.pdf.BaseFont

        **bfR = iTextSharp.text.pdf.BaseFont.CreateFont("KozGoPro-Light.otf", iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED)
        fntKozgoProExtra = New Font(bfR, 18)**

        tblrightcell_margin2 = New PdfPCell(New Phrase("testing....", fntKozgoProExtra))

        tblx1.AddCell(tblrightcell_margin2)

当我尝试将字体添加到短语时,它会说对象引用未设置为对象的实例。如果我将iTextSharp.text.pdf.BaseFont.IDENTITY_H更改为CP1252或任何这些编码,它将仅在pdf上显示不正确。有线索吗?

1 个答案:

答案 0 :(得分:2)

当您使用IDENTITY_H进行编码时,iTextSharp会自动启用字体子集。不幸的是,该代码中有appears to still be a bug。现在的解决方案是关闭该字体的子集:

bfR = iTextSharp.text.pdf.BaseFont.CreateFont(FontFile, iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED)
bfR.Subset = False