0

DBから画像にアクセスしてPDFでレンダリングしようとしています。以下はDBから画像を取得するための私のサーブレットです。

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 を作成しようとしている間、このサーブレットは呼び出されていません。私のweb.xmlは <servlet> <description></description> <display-name>ImageDownloadServlet</display-name> <servlet-name>ImageDownloadServlet</servlet-name> <servlet-class>test.ImageDownloadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ImageDownloadServlet</servlet-name> <url-pattern>/tesing/Image</url-pattern> </servlet-mapping>

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();

私の問題は、PDF の作成中にこのサーブレットを呼び出さないことです。私はitextpdf-5.4.4.jarandxmlworker-5.4.1.jarとSpring MVCを使用しています。

更新RAD と Tomcat 7.0 サーバーを使用している場合、フル パスはサーブレットを呼び出し、画像付きの PDF を生成します。しかし、RAD と Websphere 8.5 を使用している場合、サーブレットはまったく呼び出されません。

4

1 に答える 1

2

この HTML を解析しようとしています

String pdfString="<html><body>hello<img src='/tesing/Image?imageId=1' alt='' /></body></html>";

画像ソース URL にプロトコルもホストも含まれていません。iText は、部分 URL を要求する方法 (プロトコル) と場所 (ホスト) をどのように知る必要がありますか。

したがって、代わりに完全な URL を使用してください。

于 2014-03-24T06:45:22.977 に答える