我正在尝试使用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
蜡染布全1.7.jar
fop.jar


在数据库内部时,我可以生成没有图形的PDF文档。数据库外部的相同代码(命令行)创建具有所有相关图形的PDF文档。

内联SVG图形在数据库中执行时似乎只是被忽略了。在数据库外部,蜡染正确地呈现了它们。

您是否已成功使用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图形。

10-04 10:53