我有一个现有的servlet,它给了我一个pdf字节数组:
ui:text
我在servlet中写了一个测试pdf文件来检查myService.getPdf()的返回值。测试文件没问题,我可以在acrobat reader中打开这个有效的文件。
现在我的JQuery-JavaScript代码:
ui:safehtml
我想在servlet中生成一个PDF字节数组,并在新的浏览器选项卡中显示PDF。 通过我的实现,一个新的浏览器选项卡打开(地址行:blob:http%3A // localhost%3A8080 / 3fd5808b-758b-4076-94c9-af9884f631a3)。但PDF文件为空,PDF文件的页面大小正常。 我怎么解决这个问题?我需要一个名为myid.pdf的有效PDF,在新的浏览器选项卡中。
谢谢你的提示,托马斯
答案 0 :(得分:1)
您可以在新窗口中打开您的servlet URL。不需要AJAX调用或JQuery。
在您的servlet中,您可以添加标题,如果用户选择保存文件,则会向浏览器提示要向用户建议的文件名。
response.setHeader("Content-Disposition", "attachment;filename=" + pdfName);
答案 1 :(得分:0)
public class PdfSheetGen extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("appliction/pdf");
Document document=new Document();
Connection con=null;
PreparedStatement ps=null;
String sql=null;
ResultSet rs=null;
try{
PdfWriter.getInstance(document, new FileOutputStream("D:/Details.pdf"));
document.addAuthor("Management");
document.addCreationDate();
document.addProducer();
document.addCreator("tech");
document.addTitle("Inventory");
document.setPageSize(PageSize.LETTER);
document.open();
Image image=Image.getInstance("D:\\branch.png");
image.scaleAbsolute(120f, 120f);
document.add(image);
PdfPTable table=new PdfPTable(5);
PdfPCell cell = new PdfPCell (new Paragraph ("Details"));
cell.setColspan (5);
cell.setHorizontalAlignment (Element.ALIGN_CENTER);
cell.setPadding (10.0f);
cell.setBackgroundColor (new BaseColor (140, 221, 8));
table.addCell(cell);
table.addCell("ID");
table.addCell("Branch_Name");
table.addCell("Address");
table.addCell("Contact_p");
table.addCell("Email");
con=DbConnection.getCon();
sql="select * from branch";
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while (rs.next()) {
table.addCell(rs.getString("id"));
table.addCell(rs.getString("Branch_name"));
table.addCell(rs.getString("address"));
table.addCell(rs.getString("contactp"));
table.addCell(rs.getString("email"));
}
document.add(table);
document.add(new Paragraph("Branch Details Generated On - "+new Date().toString()));
document.close();
}catch(Exception e){
e.printStackTrace();
}
finally{
try{
if(con!=null){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}