Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 XMLWorker未调用我的servlet以pdf格式呈现图像_Java_Spring Mvc_Servlets_Itext_Xmlworker - Fatal编程技术网

Java XMLWorker未调用我的servlet以pdf格式呈现图像

Java XMLWorker未调用我的servlet以pdf格式呈现图像,java,spring-mvc,servlets,itext,xmlworker,Java,Spring Mvc,Servlets,Itext,Xmlworker,我正在尝试从数据库访问图像并以PDF格式呈现它。下面是我从数据库获取图像的servlet public class ImageDownloadServlet extends HttpServlet { private Connection connection = null; private Statement stmt = null; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws

我正在尝试从数据库访问图像并以PDF格式呈现它。下面是我从数据库获取图像的servlet

public class ImageDownloadServlet extends HttpServlet 
{
private  Connection connection = null;
private Statement stmt = null;
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
 try {
Integer imageId=Integer.parseInt(req.getParameter("imageId").toString());


            connection = //creating connection  
                stmt = connection.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT IMG_BLOB FROM ImageTable WHERE img_id = "+imageId);
        rs.next();
        Blob b=rs.getBlob(1);

        resp.setContentType("image/jpeg");
        resp.setContentLength((int) b.length());
        InputStream is = b.getBinaryStream();
        OutputStream os = resp.getOutputStream();
        byte buf[] = new byte[(int) b.length()];
        is.read(buf);
        os.write(buf);
        os.close();

        stmt.close();
        connection.close();


    }
    catch (Exception e) 
    {
        e.printStackTrace();
    }


}
}
这段代码运行良好,我在CKEditor中得到了图像。但是,在尝试创建PDF时,没有调用此servlet。我的web.xml是

ImageDownloadServlet
ImageDownloadServlet
test.ImageDownloadServlet
ImageDownloadServlet
/测试/图像

Amd我创建PDF的代码是

File file = new File(D:/satz/sat.pdf);
    FileOutputStream fos=new FileOutputStream(file);
    Document doc=new Document(PageSize.A4, 50, 50, 70, 130);
    PdfWriter pdfWriter=PdfWriter.getInstance(doc, fos);
    String pdfString="<html><body>hello<img src='/tesing/Image?imageId=1' alt='' /></body></html>";
    doc.open();
    XMLWorkerHelper worker=XMLWorkerHelper.getInstance();
    ByteArrayInputStream is = new ByteArrayInputStream(pdfString.getBytes());
    worker.parseXHtml(pdfWriter, doc, is);
    doc.close();
File File=新文件(D:/satz/sat.pdf);
FileOutputStream fos=新的FileOutputStream(文件);
文档文档=新文档(PageSize.A4、50、50、70、130);
PdfWriter PdfWriter=PdfWriter.getInstance(doc,fos);
字符串pdfString=“hello”;
doc.open();
XMLWorkerHelper worker=XMLWorkerHelper.getInstance();
ByteArrayInputStream是=新的ByteArrayInputStream(pdfString.getBytes());
parseXHtml(pdfWriter,doc,is);
doc.close();
我的问题是,在创建PDF时,它没有调用这个servlet。我正在使用
itextpdf-5.4.4.jar
xmlworker-5.4.1.jar
和spring-MVC


更新如果我使用RAD和Tomcat7.0服务器,完整路径是调用我的servlet并生成带有图像的PDF。但当我使用RAD和WebSphere8.5时,它根本不会调用我的servlet

您尝试解析此HTML

String pdfString="<html><body>hello<img src='/tesing/Image?imageId=1' alt='' /></body></html>";
String pdfString=“hello”;
您的图像源URL既不包括协议也不包括主机。iText应该如何知道如何(哪个协议)和在哪里(哪个主机)请求您的部分URL


因此,请使用完整的URL

是的,我也尝试过完整的路径。但CK编辑器呈现了这个图像。我也尝试了完整路径-完整路径指的是一个完整的URL,包括协议和主机?结果如何?但是这张图片的编辑如上所述,如果您不告诉iText如何以及在哪里找到图像,它就无法知道。也许CK编辑器猜对了,但那纯粹是猜测。这是我的全部道路。这也不起作用。Ck编辑器通过调用我的servlet呈现图像。但是XMLWorker没有调用servlet<代码>相同的itextpdf和xmlworker版本意味着?这是我的完整路径-hhmmm,看起来确实不错(你在问题中以不同的方式声明,让我走错了方向)<代码>相同的itextpdf和xmlworker版本表示什么它的意思是,例如
itextpdf-5.4.4.jar
xmlworker-5.4.4.jar
,或
itextpdf-5.4.1.jar
xmlworker-5.4.1.jar
,不是像
itextpdf-5.4.4.jar
xmlworker-5.4.1.jar
这样的混合。顺便说一句:您应该尝试使用相同的itextpdf和xmlworker版本。您的更新听起来像是通信问题。您可能希望检查服务器日志并创建(XmlWorker或CK编辑器)和(Websphere或Tomcat)之间不同通信的tcp转储,以查看出现了什么问题。也许有一个简单的再直接,这是没有遵循。。。