如何使用itextsharp在.pdf文档中显示越南字符?

时间:2017-07-26 20:28:13

标签: vb.net pdf utf-8 fonts itext

我已经阅读了许多讨论这个问题的线程,但没有人提出解决这个问题的方法。他们中的大多数都围绕使用合适的字体。我尝试过每一个都没有成功。我知道这个字符串是UTF-8和越南语,因为如果我将它作为ASCII字符串粘贴到Notepad ++中,然后将编码更改为UTF-8就可以了。

输入字符串如下所示;

“Cósáºμndá»

输出字符串应如下所示;

“Cósẵndịchvụthôngdịchmiễnphíkhibạnyê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

1 个答案:

答案 0 :(得分:2)

您可以probably将源代码保存为UTF-8并粘贴“输出”(UTF-8)字符串,但假设源代码是​​ANSI编码,也许您可​​以将其转换为UTF- 8手动:

/**
 * Returns `true` if this string is empty or consists solely of whitespace characters.
 */
public fun CharSequence.isBlank(): Boolean = length == 0 || indices.all { this[it].isWhitespace() }


/**
 * Returns `true` if this char sequence is empty (contains no characters).
 */
@kotlin.internal.InlineOnly
public inline fun CharSequence.isEmpty(): Boolean = length == 0