使用西里尔字符的IText PdfAction

时间:2016-05-26 14:36:58

标签: java itext

我尝试将PdfAction与PdfOutline结合使用,以创建指向存储在中央网络位置的文档的链接。这样可以正常工作,但是当在网址中使用西里尔字符时,系统无法找到该文档。调查了解到,在Pdf打开的链接中,所有的西里尔字符都消失了?!。

我的代码:

//Create the index tree

PdfOutline index = new PdfOutline(writer.getDirectContent().getRootOutline(), new PdfDestination(PdfDestination.FITH), "Detailed Info");

//Add entry to index

PdfAction act = new PdfAction("file://CENTRALSERVER/Конвертинг/MyFile.xls");
new PdfOutline(index, act, "My File");

我做错了什么?

1 个答案:

答案 0 :(得分:1)

看起来你有一些字符串编码问题。该函数可能需要 UTF-8字符串,因为它检测到“非法”字符,它们会被剥离。您可以尝试对字符串进行编码,以便它可以通过该函数而不会被删除坏字符:

public static String encodeFilename(String s)
{
    try
    {
        return java.net.URLEncoder.encode(s, "UTF-8");
    }
    catch (java.io.UnsupportedEncodingException e)
    {
        throw new RuntimeException("UTF-8 is an unknown encoding!?");
    }
}

还可以尝试查看此question以获取有关字符串编码的更多信息

最后,您的代码可能如下所示:

PdfAction act = new PdfAction(encodeFilename("file://CENTRALSERVER/Конвертинг/MyFile.xls"));