使用ITextRenderer从HTML生成泰卢固语PDF不能获得确切的字符?

时间:2017-05-09 07:35:15

标签: java pdf pdf-generation flying-saucer xhtmlrenderer

使用ITextRenderer从HTML生成Telugu PDF无法获得确切的字符?在PDF格式中获得破碎的字符(预期的字符串,以及其他字符串)。附加屏幕截图。enter image description here

我们使用以下代码生成带字体

的UTF-8 pdf

1)body * {font-family:“Vani”,Georgia,Serif;}

2)文档doc = builder.parse(new ByteArrayInputStream(content.toString()。getBytes(“UTF-8”)));

3)renderer.getFontResolver()addFont(的contextPath + “字体/ VANI.TTF”,BaseFont.IDENTITY_H,BaseFont.EMBEDDED); 4)jars itext 4.2和core-render.jar

请帮助获取PDF中的例外输出。

1 个答案:

答案 0 :(得分:3)

您正在使用ITextRenderer导致相信您正在使用Flying Saucer。 Flying Saucer不是iText。 Flying Saucer是使用旧版iText的第三方产品,并未得到iText Group的认可。

旧版iText不支持泰卢固语。支持编写Devenagari,泰米尔语,泰卢固语等系统......需要pdfCalligraph add-on。此附加组件仅适用于iText 7.我们已就此主题撰写了全面的white paper

如果您想将带有泰卢固语的HTML转换为PDF,则无法通过Flying Saucer实现此目的。据我所知,允许您执行此操作的唯一工具是iText 7,Telugy支持的pdfCalligraph add-on和将HTML转换为PDF的pdfHTML add-on的组合。 / p>

<强>更新

如果要使用pdfCalligraph,则需要添加以下依赖项:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>typography</artifactId>
    <version>[1.0,)</version>
    <scope>compile</scope>
</dependency>

由于pdfCalligraph是一个封闭的源代码插件,您还需要将我们的封闭源代码库添加到您的存储库列表中:

<repositories>
    <repository>
        <id>central</id>
        <name>iText Repository-releases</name>
        <url>https://repo.itextsupport.com/releases</url>
    </repository>
</repositories>

最后,您需要引入许可证密钥机制(否则pdfCalligraph会抛出com.itextpdf.licensekey.LicenseKeyExceptionjava.io.FileNotFoundException:itextkey.xml):

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-licensekey</artifactId>
    <version>[2.0,)</version>
    <scope>compile</scope>
</dependency>

您需要许可证密钥(KEY),并且需要加载该密钥:

LicenseKey.loadLicenseFile(new FileInputStream(KEY));

KEY包含XML文件的路径。此XML文件是您的许可证密钥。您可以在此处获取此类XML文件:free trial