使用itextsharp将字体嵌入pdf

使用itextsharp将字体嵌入pdf,pdf,fonts,itextsharp,itext,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 = iTextSh

我试图使用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上错误显示。有什么线索吗?

当您使用
IDENTITY\u H
进行编码时,iTextSharp会自动打开字体子集设置。不幸的是,代码中没有。目前的解决方案是关闭该字体的子集设置:

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

使用itextsharp 5.2.1.0我看到您显示的错误链接是2011年6月的,但我刚刚下载了最新的iText版本,似乎这个错误仍然存在(!)。我不知道是否有公开的bug数据库,但你可以在他们的邮件列表上询问(确保先阅读规则)