Java XMLWorker未调用我的servlet以pdf格式呈现图像
我正在尝试从数据库访问图像并以PDF格式呈现它。下面是我从数据库获取图像的servletJava 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
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转储,以查看出现了什么问题。也许有一个简单的再直接,这是没有遵循。。。