2017-07-26 235 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

相关问题