如何使用Servlet将PDF文件数据作为响应发送?
我的要求是使用HTTP Servlet将PDF数据响应到移动客户端(iPhone)。
我用以下方式做了,但是我没有在客户端获得预期的输出。
PrintWriter out = response.getWriter(); String aInputFileName = "/Users/hcl/Desktop/Easwar/sample.pdf"; log("Reading in binary file named : " + aInputFileName); File file = new File(aInputFileName); log("File size: " + file.length()); byte[] result = new byte[(int)file.length()]; System.out.println("Length : "+ result.length); try { InputStream input = null; try { int totalBytesRead = 0; input = new BufferedInputStream(new FileInputStream(file)); while(totalBytesRead 0){ totalBytesRead = totalBytesRead + bytesRead; } } response.setHeader("Content-Type", "application/pdf"); out.println(result);
我遵循的方法是正确的吗? 请指教。
谢谢。
您必须使用ServletOutputStream及其write()方法将字节写入响应。
package com.javatpoint; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import com.darwinsys.spdf.PDF; import com.darwinsys.spdf.Page; import com.darwinsys.spdf.Text; import com.darwinsys.spdf.MoveTo; public class ServletPDF extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { PrintWriter out = response.getWriter(); response.setContentType("application/pdf"); response.setHeader("Content-disposition","inline; filename='javatpoint.pdf'"); PDF p = new PDF(out); Page p1 = new Page(p); p1.add(new MoveTo(p, 200, 700)); p1.add(new Text(p, "www.javatpoint.com")); p1.add(new Text(p, "by Sonoo Jaiswal")); p.add(p1); p.setAuthor("Ian F. Darwin"); p.writePDF(); } }