com.itextpdf.commons.exceptions.UnknownProductException:产品pd



我有一个应用程序,使用Itext 7.1.17排版2.0.9生成阿拉伯语pdf文件我有两个xml许可证文件如下:

1-itext核心许可证.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<license date="*******" issuer="iText Group NV" library="3">
<licensee expire="*******">
<name>*******</name>
<email>*******</email>
<company>*******</company>
<version>7.1</version>
<key>*******</key>
<licensetype>commercial</licensetype>
<signature>*******</signature>
</licensee>
</license>

2-pdfCalligraph license.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<license date="*********" issuer="iText Group NV" library="3">
<licensee expire="*********">
<name>*********</name>
<email>*********</email>
<company>*********</company>
<version>7.1</version>
<key>*********</key>
<licensetype>commercial</licensetype>
<signature>*********</signature>
</licensee>
<product deploymenttype="" expire="*********" licensetype="commercial" major="2" name="pdfCalligraph" platform="java">
<signature>*********</signature>
</product>
</license>

在我的java代码中,在处理pdf之前,我按照如下方式加载许可证文件:

LicenseKey.loadLicenseFile(licensePath + itextkeyCoreFile);
LicenseKey.loadLicenseFile(licensePath + itextkeyPdfCalligraphFile);

上面的代码在7.1.17版本上运行良好,但当升级到itext 7.2.4排版3.0.1时,我得到以下异常:

com.itextpdf.commons.exceptions.UnknownProductException: Product pdfCalligraph is unknown. Probably you have to register it.
at com.itextpdf.commons.actions.ProductEventHandler.tryProcessEvent(ProductEventHandler.java:147) ~[commons-7.2.4.jar:?]
at com.itextpdf.commons.actions.ProductEventHandler.onAcceptedEvent(ProductEventHandler.java:72) ~[commons-7.2.4.jar:?]
at com.itextpdf.commons.actions.AbstractContextBasedEventHandler.onEvent(AbstractContextBasedEventHandler.java:70) ~[commons-7.2.4.jar:?]
at com.itextpdf.commons.actions.EventManager.onEvent(EventManager.java:74) ~[commons-7.2.4.jar:?]
at com.itextpdf.typography.shaping.Shaper.applyOtfScript(Shaper.java:198) ~[typography-3.0.1.jar:?]
at com.itextpdf.typography.shaping.TypographyApplier.applyOtfScript(TypographyApplier.java:51) ~[typography-3.0.1.jar:?]
at com.itextpdf.layout.renderer.TypographyUtils.applyOtfScript(TypographyUtils.java:122) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.TextRenderer.applyOtf(TextRenderer.java:815) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.LineRenderer.applyOtf(LineRenderer.java:1314) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.LineRenderer.layout(LineRenderer.java:176) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.ParagraphRenderer.directLayout(ParagraphRenderer.java:237) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.ParagraphRenderer.layout(ParagraphRenderer.java:108) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.BlockRenderer.layout(BlockRenderer.java:251) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.TableRenderer.layout(TableRenderer.java:592) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.TableRenderer.layout(TableRenderer.java:423) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.renderer.RootRenderer.addChild(RootRenderer.java:141) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.RootElement.createAndAddRendererSubTree(RootElement.java:367) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.RootElement.addElement(RootElement.java:376) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.RootElement.add(RootElement.java:105) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.Document.add(Document.java:140) ~[layout-7.2.4.jar:?]
at com.itextpdf.layout.element.Table.flush(Table.java:764) ~[layout-7.2.4.jar:?]

更新:查看以下链接

https://kb.itextpdf.com/home/it7kb/installation-guidelines/installing-the-itext-license-key-and-license-key-library-for-java-and-net

我发现,从7.2版本开始,我必须使用json许可证文件而不是xml(应该有一个从xml许可证格式转换为json许可证书格式的指南(此外,我将不得不使用许可基础jar,而不是itext licensekeyjar

正如您所发现的,iText从iText 7.2(以及相应的插件(切换到了JSON许可证密钥。没有办法将XML许可证密钥转换为有效的JSON密钥,所以iText只会为您生成新的许可证密钥。

由于您拥有商业许可证,只需在Jira支持服务台上记录支持请求即可。毕竟,你是在为支持付费,商业客户不需要依赖Stack Overflow社区。

最新更新