我正在使用iText 2.1.7,用于生成一个简单的pdf,其中包含要在Internet Explorer(版本10和版本10)中打开的图像和文本。 pdf以blob格式保存在数据库中。
当我点击jsp中的按钮在新标签页中打开它时,会打开一个新标签页,一个新窗口,标签会挂起,就像这样:
在任何用户工作区中都不会发生这种情况。
我认为pdf格式不正确。这只是用iText生成的pdfs;
这是生成pdf的方法:
public static void imageIntoPdf(byte[] file,
OutputStream os, String text)
throws IOException, DocumentException {
//os is a ByteArrayOutputStream
Image image = null;
try {
image = Image.getInstance(file);
Rectangle A4 = PageSize.A4;
float scalePortrait = Math.min(A4.getWidth() / image.getWidth(),
A4.getHeight() / image.getHeight());
float w;
float h;
w = image.getWidth() * scalePortrait;
h = image.getHeight() * scalePortrait;
Document document = new Document(A4, 10, 10, 10, 10);
PdfWriter.getInstance(document, os);
Paragraph parrafo = new Paragraph(text);
document.open();
image.scaleAbsolute(w, h);
float posH = (float) ((A4.getHeight() - h) / 2);
float posW = (A4.getWidth() - w) / 2;
image.setAbsolutePosition(posW, posH);
image.setBorder(Image.NO_BORDER);
image.setBorderWidth(0);
document.newPage();
document.add(image);
document.add(parrafo);
document.close();
} catch (BadElementException bee) {
throw new IOException(bee.toString());
}
}
这就是我打开它的方式:
function openDoc(num){
window.open("url/to_pdf&numDoc="+num,
'_blank','width=810,height=620,menubar=no,
toolbar=no,scrollable=yes,resizable=yes');
}
没有为我的版本找到指南,所以尝试了这些指南:
Guide v5。甚至无法实例化该类:
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(dest));
Guide v7。它与我的方法最相似,区别在于outputStram。他们使用FileOutputStream,我使用了ByteArrayOutputStream。他们都没有在结果上有所作为。同样的问题。
即使是相同的,在JavaScript中试过:
function openDoc(num){
var newTab = window.open(“”,“_ blank”);
newTab.location("url/to_pdf&numDoc="+num,
'_blank',
'width=810,height=620,menubar=no,toolbar=no,
scrollable=yes,resizable=yes');
}
答案 0 :(得分:0)
解决。我忘了在servlet中将response.setContentType(doc.getType());
设置为“application / pdf”。
我有“image / png”。