Создание PDF-файла с изображениями SVG с использованием Apache FOP в базе данных Oracle
Я пытаюсь сгенерировать документы PDF в базе данных Oracle 11g, используя Apache FOP. Я установил классы из следующих JAR-файлов в мою схему, используя инструмент loadjava:
- Обще-каротаж 1.0.4.jar
- Обще-ю-1.3.1.jar
- Авалон-каркасный 4.2.0.jar
- XML-АПИС-доб-1.3.04.jar
- Xalan-2.7.0.jar
- сериализатору-2.7.0.jar
- xmlgraphics-Обще-1.5.jar
- батик все-1.7.jar
- 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 для рендеринга при работе в базе данных.