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

时间:2014-10-08 17:26:19

标签: java oracle svg oracle11g apache-fop

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

  1. 共享记录-1.0.4.jar
  2. 公地-IO-1.3.1.jar
  3. 的Avalon框架-4.2.0.jar
  4. XML的API-EXT-1.3.04.jar
  5. 的Xalan-2.7.0.jar
  6. 串行 - 2.7.0.jar
  7. xmlgraphics-公地1.5.jar
  8. 蜡染所有-1.7.jar
  9. fop.jar
  10. 在数据库内部,我可以生成没有图形的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(&#39; 数据:image / png; base64,iVBORw0KGgoAAAANSUhEUgA ... &#39;)似乎解决了此图片的问题。

    谢谢!

1 个答案:

答案 0 :(得分:0)

我确定了<fo:external-graphic />内嵌图片的问题:问题出在 src 属性上,该属性最初是在没有 url的情况下指定的(&#39; ...& #39;)。将url()添加到 src 属性可使图像在数据库中运行时解析。

在数据库中运行时,我仍然无法获取内联SVG图形。