2015-11-13 72 views
-3

enter code here 首先,我讓我的pdfFile這樣:的servlet閱讀PDF與矩形

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(); 

文件PDF是使用Adobe Reader XI, 正確的,但,當我嘗試用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(); 

會發生什麼情況? 在此先感謝。

+0

Servlets不會「閱讀」PDF,當然也不會「查看」PDF,所以我確信您正在嘗試要求其他的東西,但是就像投票拒絕您的問題的人一樣,我沒有知道你在問什麼。你能澄清你的問題嗎?例如:你爲什麼要在磁盤上創建一個文件?你爲什麼不在內存中創建文件(這是在servlet上下文中處理PDF的最常見方式)。另外:你的代碼片段包含幾個錯誤,使得它們無法編譯。我糾正了一些錯誤,但發佈問題時應該更準確。 –

回答

0

我很抱歉,我會更加清楚。

I-首先,我創建一個PDF文件(文件1),這是一個每週格(與天數和小時)與iText的 - > OK沒問題,看文件1與Acrobat Reader XI

II-I修改文件1與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(); 

III-我嘗試在JSP中讀取文件2:

<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(); 
} 

IV-I可以讀取File2,但我看不到矩形,只能看到矩形中的文本。