servlet用矩形读取pdf

时间:2015-11-13 15:20:21

标签: java servlets itext

enter code here 首先,我以这种方式制作我的pdfFile:

PdfReader pdfr=new PdfReader(filepath1);//existing file
PdfStamper pdfs=new PdfStamper(pdfr, filepath2);//file to be modified
...
PdfContentByte cb=pdfs.getOverContent(1);
cb.setColorFill(new BaseColor(0x00,0x4E,0x44));
cb.rectangle(coordX,min_Y,60,haut);
cb.saveState();
PdfGState state=new PdfGState();
state.setFillOpacity(0.1f);
cb.setGState(state);
cb.fillStroke();
cb.restoreState();

使用Adobe Reader XI,文件pdf是正确的, 但是当我尝试用servlet读取它时,我看不到任何矩形。 Servlet的:

protected void doPost(...){
File pdfFile=new File(filepath2);
FileInputStream fis=new FileInputStream(filepath2);
response.setContentType("application/pdf");
response.addHeader("Content-Disposition","inline;filename=pdfFN);
response.setContentLength((int) filepath2.length());
OutputStream resOS=response.getOutputStream();
int length=1;
byte[] buffer=new byte[8192];
while((length=fis.read(buffer))!=-1)
{resOS.write(buffer,0,length);
}
fis.close();
resOS.flush();resOS.close();

会发生什么? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我道歉,我会更清楚。

  1. 首先我创建一个pdf文件(File1),这是一个每周网格(有几天和几小时),带有Itext - >使用acrobat reader XI查看File1没问题。

  2. 我使用File1修改pdfStamper

    PdfReader pdfr=new PdfReader(File1);//existing file code here
    PdfStamper pdfs=new PdfStamper(pdfr, File2);//file to be modified
    ...
    PdfContentByte cb=pdfs.getOverContent(1);
    cb.setColorFill(new BaseColor(0x00,0x4E,0x44));
    cb.rectangle(coordX,min_Y,60,haut);
    Phrase phrase = new Phrase(text, new Font(bf, fontSize));//insert text in rectangle
            ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, phrase,
                // center horizontally
               (float) (coordX + coordX+60) / haut_c,   //haut_c
                    rect1,
                0); 
    cb.saveState();
    PdfGState state=new PdfGState();
    state.setFillOpacity(0.1f);//text is now visible
    cb.setGState(state);
    cb.fillStroke();
    cb.restoreState();
    
  3. 我尝试阅读File2中的jsp

    <object data="/Empl_temps/MyServlet?file='+File2+' type="application/pdf" width="600" height="900"></object>
    

    MyServlet:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String pdfFileName=request.getParameter("file")+".pdf";
        String contextPath="Y:\\Empl_temps\\";
        System.out.println("Lect_pdf -"+contextPath+pdfFileName);
        File pdfFile=new File(contextPath+pdfFileName);
        FileInputStream fis=new FileInputStream(pdfFile);
        response.setContentType("application/pdf");
        response.addHeader("Content-Disposition", "inline;filename="+pdfFileName);
        response.setContentLength((int)pdfFile.length());
        OutputStream responseOutputStream=response.getOutputStream();
        int length=-1;
        byte[] buffer=new byte[8192];
        while((length=fis.read(buffer))!=-1)
        {
            responseOutputStream.write(buffer, 0, length);
        }
        fis.close();
        responseOutputStream.flush();responseOutputStream.close();
    }
    
  4. 我可以阅读File2,但我看不到矩形,我只看到矩形文字。