Создание PDF-файла с изображениями SVG с использованием Apache FOP в базе данных Oracle

Я пытаюсь сгенерировать документы PDF в базе данных Oracle 11g, используя Apache FOP. Я установил классы из следующих JAR-файлов в мою схему, используя инструмент loadjava:

  1. Обще-каротаж 1.0.4.jar
  2. Обще-ю-1.3.1.jar
  3. Авалон-каркасный 4.2.0.jar
  4. XML-АПИС-доб-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

Находясь внутри базы данных, я могу создавать PDF документы без графики. Тот же код за пределами базы данных (командная строка) создает документы PDF со всей соответствующей графикой.

Встроенная SVG-графика, похоже, просто игнорируется при выполнении в базе данных. Вне базы данных они правильно отображаются Batik.

Вы успешно использовали Apache FOP для создания PDF-документов, содержащих графику SVG, в базе данных Oracle? Какие предложения вы можете сделать?

У меня есть один рисунок, определенный как <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... "), похоже, устранило проблему для этого изображения.

Спасибо!

1 ответ

Я определил проблему с <fo:external-graphic /> встроенное изображение: проблема была в атрибуте src, который изначально был указан без URL ('...'). Добавление url() к атрибуту src разрешает образ при работе в базе данных.

Я все еще не могу получить встроенную графику SVG для рендеринга при работе в базе данных.

Другие вопросы по тегам