生成的iText pdf会挂起浏览器标签

时间:2017-08-16 08:11:04

标签: java pdf tabs itext

说明

我正在使用iText 2.1.7,用于生成一个简单的pdf,其中包含要在Internet Explorer(版本10和版本10)中打开的图像和文本。 pdf以blob格式保存在数据库中。

问题:

当我点击jsp中的按钮在新标签页中打开它时,会打开一个新标签页,一个新窗口,标签会挂起,就像这样:

Frozen tab

在任何用户工作区中都不会发生这种情况。

试验:

  • 尝试不添加图片,标签挂断。
  • 在不同电脑的I.E 7中尝试(可能是不同的配置)并且不会发生
  • 尝试使用非iText生成的pdf,但不会发生。

猜想:

我认为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'); 
        }
    

1 个答案:

答案 0 :(得分:0)

解决。我忘了在servlet中将response.setContentType(doc.getType());设置为“application / pdf”。 我有“image / png”。