我正在尝试使用 Apache FOP 在 Oracle 11g 数据库中生成 PDF 文档。我已使用 loadjava 工具将以下 JAR 文件中的类安装到我的架构中:
- commons-logging-1.0.4.jar
- commons-io-1.3.1.jar
- avalon-framework-4.2.0.jar
- xml-apis-ext-1.3.04.jar
- xalan-2.7.0.jar
- serializer-2.7.0.jar
- xmlgraphics-commons-1.5.jar
- batik-all-1.7.jar
- fop.jar
在数据库内,我可以生成没有图形的 PDF 文档。数据库外部的相同代码(命令行)创建包含所有相关图形的 PDF 文档。
在数据库中执行时,内联 SVG 图形似乎被忽略。在数据库之外,它们由 Batik 正确呈现。
您是否已成功使用 Apache FOP 在 Oracle 数据库中生成包含 SVG 图形的 PDF 文档?您能提出什么建议?
我有一个图形定义为 <fo:external-graphic content-width=".5in" content-height=".5in" src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgA..." />
。这会在数据库外部正确呈现,并在数据库内执行时导致权限错误:
ORA-29532: Java call terminated by uncaught Java exception:
javax.xml.transform.TransformerException:
java.security.AccessControlException: the Permission
(java.lang.RuntimePermission getClassLoader) has not been granted to
ProtectionDomain (null <no signer certificates>)
com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl$TransletClassLoader@98644313
<no principals>
java.security.Permissions@b0558743 (
(java.lang.RuntimePermission modifyThreadGroup)
(java.lang.RuntimePermission createSecurityManager)
(java.lang.RuntimePermission modifyThread)
(java.lang.RuntimePermission preferences)
(java.lang.RuntimePermission exitVM)
(java.util.PropertyPermission user.language write)
(java.util.PropertyPermission * read)
(oracle.aurora.security.JServerPermission LoadClassInPackage.*)
)
在数据库中,我知道如何向我的架构授予权限;但是我不知道如何将 getClassLoader 授予我加载的代码库。
注意:更改上面内联图形的 URL 以明确请求 url(' data:image/png;base64, iVBORw0KGgoAAAANSUhEUgA...') 似乎已经解决了此图像的问题。
谢谢!
最佳答案
我确定了 <fo:external-graphic />
的问题内联图像:问题出在 src 属性上,该属性最初是在没有 url('...') 的情况下指定的。在 src 属性中添加 url() 可以使图像在数据库中运行时进行解析。
在数据库中运行时,我仍然无法渲染内联 SVG 图形。
关于java - 在 Oracle 数据库中使用 Apache FOP 生成包含 SVG 图像的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26262834/