使用YAHP library.This是我已經工作到目前爲止將HTML轉換爲PDF,這是寫在飛碟的頂部,這是一個很大的失望,相比它的普及,它甚至不會呈現簡單的輸入文本框。所以,我轉向YAHP
圖書館,這是你的情況優秀
嘗試此代碼後,你全部與這個圖書館有關的罐子。
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.allcolor.yahp.converter.CYaHPConverter;
import org.allcolor.yahp.converter.IHtmlToPdfTransformer;
import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.PrettyHtmlSerializer;
import org.htmlcleaner.TagNode;
public class YahpHtmlToPdf {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
try{
CleanerProperties props = new CleanerProperties();
props.setTranslateSpecialEntities(true);
props.setTransResCharsToNCR(true);
props.setOmitComments(true);
TagNode tagNode = new HtmlCleaner(props).clean(new File("C:\\Users\\MyComputer\\Desktop\\aspose.html"));
String newString=new PrettyHtmlSerializer(props).getAsString(tagNode, "ISO-8859-1");
CYaHPConverter converter = new CYaHPConverter();
File fout = new File("C:\\sample\\aspose.pdf");
FileOutputStream out = new FileOutputStream(fout);
Map properties = new HashMap();
List headerFooterList = new ArrayList();
properties.put(IHtmlToPdfTransformer.PDF_RENDERER_CLASS,IHtmlToPdfTransformer.FLYINGSAUCER_PDF_RENDERER);
converter.convertToPdf(newString,IHtmlToPdfTransformer.A1P,headerFooterList, "file:///temp/",out,properties);
out.flush();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
這是使用您的html生成的pdf的屏幕截圖。您可以指定頁面大小,如IHtmlToPdfTransformer.A1P
。
來源
2012-12-01 03:03:51
SRy
嘿謝謝回答,但我不知道頁面的大小,因爲內容html是即時生成的,所以它可以有2列或20列,這一切都取決於生成的報告的類型,還表格單元格內的內容可以增加列的寬度 – Ankur
我看到...您可以檢查[page-break settings]是否(http://flyingsaucerproject.github.com/flyingsaucer/r8/guide/users-guide- R8.html#xil_37)或[FS擴展程序](http://flyingsaucerproject.github.com/flyingsaucer/r8/guide/users-guide-R8.html#xil_44)可以幫助您在這裏。但我想FS不可能計算頁面大小。如果所有的錯誤你已經計算了它的內容的寬度(例如,總結所有單元格的文本長度並設置適當的寬度)。表的高度不應該是一個問題,因爲你可以在這裏使用'page-break'(見第一個鏈接)。 – ollo