2011-02-18 3 views
3

iTextSharp과 함께 PDF 파일에 유니 코드 기호를 사용하려고합니다.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) 

Wingding의 Q.Key입니다. 그러나 PDF 파일에서는 작동하지 않습니다. Char가 있어야하는 곳을 출력하지 않습니다.

어디서 오류가 있습니까?

+0

특히'base' ...'getFontFamilyName()'과'getPostscriptFontName()'을 검사하는 것이 좋습니다. 'getEncoding()'도 해롭지 않습니다. 당신이 요구하는 글꼴을 가져 왔는지 확인하십시오. –

+0

또한 iTextSharp의 어떤 버전을 사용하고 있습니까? 크리스의 기본적으로 똑같은 코드가 잘 작동했는데 ... 설정 문제가 의심 스럽습니다. 버전, 글꼴 경로 등. –

답변

3

방금 ​​다음과 같이 했으므로 정확하게 작동했습니다. Wingdings 글꼴은 두 단어 사이에 오른쪽 아래 그림자가있는 사각형 상자로 나타납니다. 유일한 것은 실제로 Wingdings 글꼴을 실제로 자체적으로 포함 할 수 없다는 것입니다. iTextSharp 암시 적 규칙은 어디 에나 있다고 가정하기 때문에 믿을 수 있습니다. 나는 WINGDNG2.TTF로 시도하고 올바르게 삽입했다.

어구를 제대로 추가하지 않았습니까? 아니면 Wingdings가없는 머신에서 이것을 여실 까? \ WINDOWS \ FONTS \ WINGDING.TTF :

''//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() 
+0

"ZapfDingbats"및 "Symbol"은 PDF의 "Base 14 Fonts"의 두 상징 글꼴입니다. 윙윙 거리는 것이 좋을 것입니다. –

+0

@Mark Storer, 이것은 OP와 더 이상 관련이 없지만 실제로 Wingdings를 임베드 할 수 있습니까? 아니면 Acrobat 문제가 생길 수도 있습니다. 위의 코드를 실행하고 상자를 선택하려고하면 원래 글꼴을 찾을 수 없다는 경고 메시지가 나타납니다. WINGDNG2.TTF로 변경하면 경고하지 않습니다. –

+0

나에게 당황 스럽네요. 테스트 단계입니다. 문구를 추가하기 위해 코드를 제거해야합니다 ... 모든 것이 완벽하게 작동합니다 ... 나는이 바보 같은 "버그"로 당신을 짜증나게해서 죄송합니다. ... 내 잘못! 솔루션을 시도해 주신 모든 분들께 감사드립니다 ... 저는 지하실에 있습니다 ... 징징이. –

2

코드는 글꼴 파일의 경로를 보유하고있는 문자열 C는 "-meaning에 백 슬래시 탈출 때문에, C# 프로젝트의 Visual Basic의 포트로 나타납니다 ".

VB에서 "C : \ WINDOWS \\ FONTS \\ WINGDING.TTF"에있는 파일을 찾으려고하면이 오류가 발생합니다.

분명히 효과가있는 Chris '코드는 그 방향을 가리 킵니다. 이스케이프 된 백 슬래시는 몇 가지 차이점 중 하나이기 때문입니다.

관련 문제