スタックトレースを含むコードは次のとおりです:https ://gist.github.com/2649430
2つのJavaクラスがあります。1つは複数のPDFをマージし、結果のマージされたPDFのバイト配列を返すことです。もう1つは、結果のPDFバイト配列をサーブレットで提供することです。サーバーを実行すると、次のエラーが発生します。
java.lang.NullPointerException
    at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:106)
    at testPackage.TestServlet.doGet(TestServlet.java:37)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
  
(完全なスタックトレースは要点リンクに含まれています)
これを達成する方法を理解するのを手伝っていただけませんか。
更新:真実性は、mergePDF()が呼び出されないことを指摘しています。そこで、TestServlet.javaファイルを更新しました。
    public class TestServlet extends HttpServlet {
    private static byte[] PDF;
    public static void mergePDF() {
        try {
            List pdfs = new ArrayList();
            pdfs.add(new FileInputStream("/test.pdf"));
            pdfs.add(new FileInputStream("/test2.pdf"));
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            PDF = PDFMerger.concatPDFs(pdfs, output, true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException {
        mergePDF();
        InputStream is = new ByteArrayInputStream(PDF);
        // Set response headers
        response.setHeader("Expires", "0");
        response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
        response.setHeader("Pragma", "public");
        response.setContentType("application/pdf");
        response.setContentLength(PDF.length);
        OutputStream os = response.getOutputStream();
        IOUtils.copy(is, os);
        os.flush();
        os.close();
    }
}
まだ問題を解決していません:
根本的な原因
java.lang.NoClassDefFoundError:com / itextpdf / text / pdf / PdfTemplate
    testPackage.TestServlet.mergePDF(TestServlet.java:28)
    testPackage.TestServlet.doGet(TestServlet.java:37)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
根本的な原因
java.lang.ClassNotFoundException:com.itextpdf.text.pdf.PdfTemplate
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    testPackage.TestServlet.mergePDF(TestServlet.java:28)
    testPackage.TestServlet.doGet(TestServlet.java:37)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
UPDATE2:
@mprabhatと@Zhangerに感謝します。ここからiTextzipをダウンロードして、プロジェクトに入れました。それは私にこれらの瓶を提供するだけです:itextpdf-5.2.1.jar, itextpdf-5.2.1-javadoc.jar, itextpdf-5.2.1-sources.jar, itextpdf-xtra-5.2.1.jar, itextpdf-xtra-5.2.1-javadoc.jar, itextpdf-xtra-5.2.1-sources.jar
それはあなたに正しく見えますか?
奇妙なことに、マージされたPDFをバイト配列として保存するのではなくファイルに書き込むと、すべてが正常に機能します...