Unicode symbols in iTextSharp

对着背影说爱祢 提交于 2019-11-28 09:09:10

问题


I'm trying to use a Unicode symbol in my PDF file with iTextSharp.

Dim base As BaseFont = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\WINGDING.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)

Dim wd As Font = New Font(base, 12, Font.NORMAL, BaseColor.BLACK)
phrase = New Phrase("q", wd)

It's the Q.Key in Wingding. But in the PDF file it's not working. It just prints nothing where the Char should be.

Where is the error?


回答1:


I just did the following and it worked exactly as it should. The Wingdings font appears in between the two words as a square box with a bottom-right drop shadow. The only thing is that I can't actually get the Wingdings font to actually embed itself and I believe that its an iTextSharp implicit rule because its assumed to be everywhere. I tried with WINGDNG2.TTF and that embedded correctly.

Are you maybe not adding the Phrase correctly? Or are you opening this on a machine without Wingdings maybe?

    ''//Create a new document
    Dim Doc As New iTextSharp.text.Document(PageSize.LETTER, 20, 20, 20, 20)
    ''//Store the document on the desktop
    Dim writer = PdfWriter.GetInstance(Doc, New FileStream(Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "Output.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read))

    ''//Open the PDF for writing
    Doc.Open()

    ''//Insert a page
    Doc.NewPage()

    ''//Add a regular text block using the default font
    Dim Phrase = New Phrase("Hello")
    Doc.Add(Phrase)


    ''//Create our base font
    Dim base As BaseFont = BaseFont.CreateFont("C:\Windows\Fonts\wingding.ttf", BaseFont.CP1252, BaseFont.EMBEDDED)
    ''//Create our usable font
    Dim wd As Font = New Font(base, 12, iTextSharp.text.Font.NORMAL, BaseColor.BLACK)

    ''//Add a text block using Wingdings
    Phrase = New Phrase("q", wd)
    Doc.Add(Phrase)

    ''//Add a trailing text block using the default font again
    Phrase = New Phrase("Bye")
    Doc.Add(Phrase)

    ''//Close the PDF
    Doc.Close()



回答2:


The code appears to be a Visual Basic port of a C# project, since the string that holds the path to the font file has escaped backslashes in it -meaning "C:\WINDOWS\FONTS\WINGDING.TTF".

This is an error in VB, which is probably trying to find a file located at "C:\\WINDOWS\\FONTS\\WINGDING.TTF".

Chris' code, which apparently works, also points in that direction; since the escaped backslashes are one of its few differences.



来源:https://stackoverflow.com/questions/5042988/unicode-symbols-in-itextsharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!