Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JSON对象生成PDF时,不显示图像_Java_Html_Xml_Xslt_Xslt 1.0 - Fatal编程技术网

Java 从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

我需要从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.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版