2010-04-21 130 views
8

我正在尋找一種開放源代碼實用程序,它將允許我從相當簡單的XML或HTML生成PDF。可能有鏈接的圖像以及純文本。不會有CSS或JavaScript。理想情況下,我希望生成的PDF是可解析的,即使內容不是圖像。谷歌搜索我看到有iTextPDFBox用於將xml/html轉換爲pdf的java庫

有什麼可以推薦一個嗎?

+0

我需要以PDF格式表示現有生成的html報告。由於預算和時間限制,唯一的方法是找到一個運行在生成的HTML上的轉換器。我嘗試了大約4個庫和我得到的最佳結果:http://pd4ml.com – 2013-07-15 07:58:54

+0

有誰知道一些新的庫?這些似乎有點過時 – dege 2015-08-14 11:18:46

回答

6

Apache FOP是一個Java庫,可以隱蔽XSL Formatting Objects(XSL-FO),以PDF

+3

你應該解釋,它使用XSL-FO,而不是簡單的HTML。 – Bozho 2010-04-21 18:09:04

+0

好的謝謝。XSL_FO對我來說是新的,但很可能是我可以使用的東西 – 2010-04-21 18:12:06

+0

擴展描述並指向由ilikeorangutans在他的回答中指出的維基百科文章 – 2010-04-21 18:17:12

0

它不符合您對開源的限制,而且我可以看到這會成爲一個交易破壞者,但如果您能負擔得起,Prince絕對是出色的完成此任務。如果你需要它也可以做更高級的佈局和樣式的CSS,它可以輕鬆完成。我目前正在將它用於Java Web應用程序,並且它工作得非常好。

-4

我找了很久,我找到了最好的解決辦法是:

WKHTMLTOPDF

只需從這裏下載安裝程序download

和命令行:wkhtmltopdf http://www.google.com google.png

+0

ruby​​在這個應用程序中有一個很好的包裝插件,叫做wicked-pdf,但是在我有限的知識中,java沒有任何這樣的包裝。如果有人知道任何包裝,然後PLZ更新我。 :) – prashu132 2013-07-02 03:40:59

+0

@ prashu132你爲什麼需要包裝?只需在ruby中執行註釋行 – Dejell 2013-07-02 05:17:27

+0

,我們可以直接從視圖文件生成pdf,而無需轉到命令行 – prashu132 2013-07-02 06:27:12

2

智威湯遜最近增加了一個像樣的HTML/CSS來PDF renderering發動機:看到的例子在http://jwt.emweb.be/jwt-gallery/gallery/media/pdf-output爲例

它正在迅速提高,成爲標準,並且已經支持浮點,表格,內聯和塊內容,絕對/相對定位和CSS樣式表處理(在git版本中)的任意組合。

2

我覺得更多的想法是將html轉換爲pdf是 a。首先使用jtidy庫將.html文件轉換爲.xhtml文件 b。第二個轉換使用itextrender

這裏是代碼

一個導致.xhtml文件.pdf文件。

FileInputStream fis = null; 
try 
{ 
    fis = new FileInputStream("D://Html//junitnoframes.html"); 
} 
catch (java.io.FileNotFoundException e) 
{ 
    System.out.println("File not found: "); 
} 
    Tidy tidy = new Tidy(); 
    tidy.setShowWarnings(false); 
    tidy.setXmlTags(false); 
    tidy.setInputEncoding("UTF-8"); 
    tidy.setOutputEncoding("UTF-8"); 
    tidy.setXHTML(true);// 
    tidy.setMakeClean(true); 
    Document xmlDoc = tidy.parseDOM(fis, null); 
try 
{ 
    tidy.pprint(xmlDoc,new FileOutputStream("D://Html//msc.xhtml")); 
} 
catch(Exception e) 
{ 
} 

b。

public static void main(String[] args) 
    throws IOException, DocumentException { 
    String inputFile = "D://Html//msc.xhtml"; 
    String url = new File(inputFile).toURI().toURL().toString(); 
    String outputFile = "D://Html//secondsdoc.pdf"; 
    OutputStream os = new FileOutputStream(outputFile); 

    ITextRenderer renderer = new ITextRenderer(); 
    renderer.setDocument(url); 
    renderer.layout(); 
    renderer.createPDF(os); 

    os.close(); 
    }