java - 在 Oracle 数据库中使用 Apache FOP 生成包含 SVG 图像的 PDF

标签 java oracle svg oracle11g apache-fop

我正在尝试使用 Apache FOP 在 Oracle 11g 数据库中生成 PDF 文档。我已使用 loadjava 工具将以下 JAR 文件中的类安装到我的架构中:

  1. commons-logging-1.0.4.jar
  2. commons-io-1.3.1.jar
  3. avalon-framework-4.2.0.jar
  4. xml-apis-ext-1.3.04.jar
  5. xalan-2.7.0.jar
  6. serializer-2.7.0.jar
  7. xmlgraphics-commons-1.5.jar
  8. batik-all-1.7.jar
  9. 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/

相关文章:

java - 如何将一个数组分成三个不同的部分?

java - Antisamy 将单引号转换为双引号

eclipse - 如何解决 Oracle weblogic 服务器中的 SplitsrcTargetPreparation 异常?

html - 如何在 svg 圆的中心设置图像?

javascript - 如何在 SVG 中实现橡皮擦功能?

java - Jacoco 覆盖率和 Kotlin 默认参数

java - 遍历 ArrayList 并将值放入 HashMap 与仅搜索 ArrayList 的时间复杂度

oracle - 将 dmp 文件导入 Oracle 11g XE

oracle - VS Code Oracle Developer 在结果窗口中隐藏 SQL

javascript - 在 Raphael javascript 库的 Raphael 集合中嵌套 Raphael 的集合