tldr;你應該能夠使用一個視圖並將其保存到一個文件中。
嘗試使用Flying Saucer及其iTextRenderer當重載AbstractPdfView。
import org.xhtmlrenderer.pdf.ITextRenderer;
public class MyAbstractView extends AbstractView {
OutputStream os;
public void buildPdfDocument(Map<String,Object> model, com.lowagie.text.Document document, com.lowagie.text.pdf.PdfWriter writer, HttpServletRequest request, HttpServletResponse response){
//process model params
os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
String url = "http://www.mysite.com"; //set your sample url namespace here
renderer.setDocument(document, url); //use the passed in document
renderer.layout();
renderer.createPDF(os);
os.close();
}
}
protected final void renderMergedOutputModel(Map<String,Object> model,
HttpServletRequest request,
HttpServletResponse response)
throws Exception{
if(os != null){
response.outputStream = os;
}
public byte[] getPDFAsBytes(){
if(os != null){
byte[] stuff;
os.write(stuff);
return stuff;
}
}
}
你可能不得不調整此處顯示的示例實現,但應該提供基本依據。
感謝您的回覆。不幸的是,我不使用Grails。有人知道如何在「純粹的」java + spring上實現它嗎? – nKognito
Grails只是Spring MVC和Groovy中的其他內容,與Java非常相似。這個答案意味着你可以通過檢查圖書館的來源構建類似的功能,這可以在http://svn.codehaus.org/grails-plugins/grails-rendering/trunk/上找到。下載0.3版本並專門查看PdfRenderingService及其父類,並且您會發現它基本類似於純Java。 –
渲染只是使用飛碟下面,它有一個很好的教程,你將如何專門用它來創建一個輸出流。檢查鏈接。 –