开发者

Unicode symbols in iTextSharp

开发者 https://www.devze.com 2023-02-11 17:29 出处:网络
I\'m tr开发者_Go百科ying 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.E

I'm tr开发者_Go百科ying 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?


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()


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号