2017-07-26 125 views
1

我已經閱讀了許多討論這個問題的主題,但都沒有提出解決這個問題的方法。他們大多圍繞使用合適的字體。我嘗試過其中的每一個都沒有成功。我知道這個字符串是UTF-8和越南語,因爲如果我將它作爲ASCII字符串粘貼到Notepad ++中,然後將編碼更改爲UTF-8,它就可以工作。如何使用itextsharp在.pdf文檔中顯示越南文字符?

輸入字符串看起來像這樣;

「Cósáºñndá»

輸出字符串應該像這樣;

「Cósẵndịchvụthôngdịchmiễnphíkhibêêyêucầu。」

我的代碼只是產生第一個字符串。 任何幫助,不勝感激。我在這裏撕掉我的頭髮 這是我的代碼;

Imports iTextSharp.text 
Imports iTextSharp.text.pdf 
Imports System.IO 
Imports System.Text 
Imports System.Collections.Generic 

Module TextToPdf 
    Dim pdfWrite As PdfWriter 
    Dim pdfDoc As Document 
    Dim pdfFont As Font 
    Sub Main() 

     pdfDoc = New Document(PageSize.LETTER) 

     pdfFont = New Font(BaseFont.CreateFont(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "vuArial.ttf"), BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 15) 

     pdfWrite = PdfWriter.GetInstance(pdfDoc, New FileStream("../tmp/vietnamese.pdf", FileMode.Create)) 
     pdfDoc.Open() 
     pdfDoc.Add(New Paragraph("Có sẵn dịch vụ thông dịch miễn phí khi bạn yêu cầu.", pdfFont)) 
     pdfDoc.Close() 

    End Sub 

End Module 
+2

*我知道這個字符串是UTF-8和越南,因爲如果我把它粘貼到記事本++爲ASCII字符串,然後更改編碼設置爲UTF-8它的工作原理* - 無。該字符串包含字符,而不是utf-8。你在記事本中做的是使用一種編碼將一個奇怪的字符串轉換爲字節,並將它們轉換回發出不同字符的字符。你可以在java中做同樣的事情,但這樣做會無能爲力。而是使用適當的編碼爲您的java文件並將其告訴您的java編譯器。或者使用** \ uXXXX **轉義。 – mkl

回答

2

你可以probably只是你的源代碼保存爲UTF-8,然後在「輸出」粘貼(UTF-8)的字符串,但假設源代碼是​​ANSI編碼,也許你可以將它轉換爲UTF- 8手動:

Dim ansi = Encoding.Default.GetBytes("Có sẵn dịch vụ thông dịch miễn phí khi bạn yêu cầu.") 
Dim utf8 = Encoding.UTF8.GetString(ansi) 
pdfDoc.Add(New Paragraph(utf8, pdfFont)) 
+0

非常棒!非常感謝。我曾嘗試過,但我必須實施它不正確。 – blink

相關問題