Java 从JSON对象生成PDF时,不显示图像
我需要从JSON对象生成PDF文档。我在做以下事情Java 从JSON对象生成PDF时,不显示图像,java,html,xml,xslt,xslt-1.0,Java,Html,Xml,Xslt,Xslt 1.0,我需要从JSON对象生成PDF文档。我在做以下事情 将JSON转换为XML 使用XSL将XML转换为HTML 从HTML生成PDF 在使用XSL将XML转换为HTML时,我的webapp中有XSL中带有目录的图像 如何将图像也包含在XSL中,以生成PDF格式的图像 我的web应用程序资源目录中有这些图像 请找到我的XSL: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.o
目录的图像
如何将图像也包含在XSL中,以生成PDF格式的图像
我的web应用程序资源目录中有这些图像
请找到我的XSL:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/receipt">
<html>
<head>
</head>
<body>
<table style="width: 100%;">
<tr>
<td style="text-align: center; width: 25%;">
<img src="img/Open.png" style="width: 50%;" />
</td>
</td>
<td style="font-size: 12px; vertical-align: top; width: 25%;">
46-68 Kléber<br/>
Tél: +1 <br/>
Fax: +1
</td>
<td style="font-size: 12px; vertical-align: top; width: 25%;">
725 € <br />
</td>
<td style="text-align: center; width: 25%;">Date <xsl:value-of select="date" /></td>
</tr>
</table>
</body>
</html>
46-68克勒贝尔
泰勒:+1
传真:+1
725欧元
日期
请查找我的XML:
<?xml version="1.0" encoding="UTF-8"?>
<receipt>
<incoterm_term>DAP</incoterm_term>
<oracle_number>5019346</oracle_number>
<address_name>FKR KREFELD REGELTECHNIK KG</address_name>
</receipt>
目的地交货
5019346
FKR KREFELD REGELTECHNIK KG
请查找用于将JSON转换为PDF的java代码
public String getOrderAcknowledgementPDF(JSONObject obj) throws IOException, DocumentException {
ClassLoader classLoader = getClass().getClassLoader();
StringBuilder xml = new StringBuilder();
String xmlheader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
xml.append(xmlheader);
xml.append("\n");
xml.append("<receipt>");
xml.append(XML.toString(obj));
xml.append("</receipt>");
Transformer transformer;
try {
transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(new File(xslPath)));
} catch (TransformerConfigurationException | TransformerFactoryConfigurationError e1) {
throw ExceptionUtils.handle((Exception) e1);
}
DOMResult result = new DOMResult();
try {
transformer.transform(new StreamSource(new ByteArrayInputStream(xml.toString().getBytes("UTF-8"))), result);
} catch (TransformerException e) {
throw ExceptionUtils.handle(e);
}
ITextRenderer renderer = new ITextRenderer();
try {
renderer.getFontResolver().addFont("C:/WINDOWS/FONTS/ARIAL.TTF", true);
} catch (DocumentException e) {
throw ExceptionUtils.handle(e);
}
Document resultDoc = (Document) result.getNode();
renderer.setDocument(resultDoc, "");
renderer.layout();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
renderer.createPDF(baos);
baos.close();
return Base64.getEncoder().encodeToString(baos.toByteArray());
}
公共字符串getOrderAcknowledgementPDF(JSONObject obj)抛出IOException、DocumentException{
ClassLoader ClassLoader=getClass().getClassLoader();
StringBuilder xml=新的StringBuilder();
字符串xmlheader=“”;
append(xmlheader);
xml.append(“\n”);
xml.append(“”);
append(xml.toString(obj));
xml.append(“”);
变压器;
试一试{
transformer=TransformerFactory.newInstance().newTransformer(新流源(新文件(xslPath));
}捕获(TransformerConfiguration异常| TransformerFactoryConfigurationError e1){
抛出ExceptionUtils.handle((异常)e1);
}
DOMResult=新的DOMResult();
试一试{
transform(新的StreamSource(新的ByteArrayInputStream(xml.toString().getBytes(“UTF-8”))),结果);
}捕获(转换异常e){
抛出例外。句柄(e);
}
ITextRenderer=newitextrenderer();
试一试{
renderer.getFontResolver().addFont(“C:/WINDOWS/FONTS/ARIAL.TTF”,true);
}捕获(文档异常){
抛出例外。句柄(e);
}
Document resultDoc=(Document)result.getNode();
renderer.setDocument(resultDoc,“”);
layout();
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
createPDF(baos);
baos.close();
返回Base64.getEncoder().encodeToString(baos.toByteArray());
}
请编辑问题并添加输入XML。@AniketV-我也添加了我的XML。。如果生成的HTML中图像显示良好,那么XSLT并不是真正的问题,而是将HTML转换为PDF的过程的问题。您可能需要重新表述您的问题,以进一步解释如何将HTML转换为PDF。谢谢。为什么要将XML转换为HTML和PDF?您可以使用XSL-FO直接从XML生成PDF。这也很可能解决您的图像问题。@Ferestes-am没有使用XSL-FO包,am使用的是纯XSL 1.0版