2011-12-13 103 views
0

歡迎所有人。
我想創建一個PDF發送給用戶,而不是先保存在我的服務器上的文件。
我正在使用Hibernate + struts2。 我的樣本代碼: CreatePDF.java(班生成PDF) 方法BuildPdf():生成pdf,並使用HttpServletResponse(頭文件)將其發送給用戶

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
try { 
    document = new Document(); 
    PdfWriter.getInstance(document,baos); 
    document.open(); 
    buildPage(document, snippet, snippetContent); 
    document.close(); 
    response.setContentType("application/pdf"); 
    response.setContentLength(baos.size()); 
    response.setHeader("Content-Disposition", "attachment;filename=document.pdf"); 
    ServletOutputStream out = response.getOutputStream(); 
    baos.writeTo(out); 
    out.flush(); 
    response.flushBuffer(); 
} catch (Exception e) { 
    Log4jUtil.debug(logger, "Can not buid pdf-file", e); 
} 

我的樣品動作: 法指數():

pdf = new CreatePDF(); 
pdf.buildPdf(snippet, snippetContent); 
return SUCCESS; 

你可以檢查我的代碼,請搜索錯誤?有沒有錯誤.... 請幫助我。需要想法或示例代碼來解決我的任務。

+0

「發送用戶PDF不保存在服務器機器中」是什麼意思?你是否在自己的代碼中看到自己的內容? –

+0

對不起,說不好英語......發送PDF到用戶而不保存在服務器上。現在可以瞭解,寫了什麼? –

回答

1

首先,Hibernate在這裏完全不相關。 Struts2是相關的,但你沒有使用它,你正在使用普通(低級別)的servlet API。這應該可以起作用,但是如果你的webapp是圍繞Struts2構建的,那麼這不是推薦的方法。您應該改用Stream result

+0

謝謝你的回覆。我的意思是我的應用程序是建立在這些技術上的。 我完成了對服務器的持久化並使用Stream結果。一切正常。但我想成爲我不會將數據文件保存到服務器。 我建議使用線程和頭文件發送文件。所以我試圖實現它。 –

0

要創建PDF文檔,您可以使用Smart PDF Creator。它通過幾次點擊創建專業PDF文件。您可以在這裏免費試用:http://www.smartpdfcreator.com

+0

這是否允許您通過代碼傳遞文檔?從我所能看到的這一點來看,我不認爲它可以。 –

+0

謝謝,你能理解問題嗎?我正在創建PDF,但無法將其發送給用戶。 –

相關問題