1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public boolean convertHtmlToPdf(String inputFile, String outputFile) throws Exception { OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); String url = new File(inputFile).toURI().toURL().toString(); renderer.setDocument(url); // 解決中文支持問題 ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //解決圖片的相對路徑問題 renderer.getSharedContext().setBaseURL("file:/D:/"); renderer.layout(); renderer.createPDF(os); os.flush(); os.close(); return true; } 上面這段代碼是這樣的,輸入一個HTML地址URL = inputFile,輸入一個要輸出的地址,就可以在輸出的PDF地址中生成這個PDF。
注意事項(xiàng): 1.輸入的HTML頁面必須是標(biāo)準(zhǔn)的XHTML頁面。頁面的頂上必須是這樣的格式: 1 2 并且HTML頁面的語法必須是非常嚴(yán)謹(jǐn)?shù)模袠?biāo)簽都必須閉合等等(由于flying-Saucer做了XML解析的工作,不嚴(yán)謹(jǐn)會報錯的。)
這是對頁面的第一個要求。 2.要用到圖片的地方寫相對路徑的形式,比如: 1 而它的圖片位置則必須在Java代碼中指定。
renderer.getSharedContext().setBaseURL("file:/D:/"); 也有另一種方法就是直接在標(biāo)簽中寫絕對路徑。 3.Flying-Saucer在解析tiff格式的圖片的時候會報錯。
具體原因我還沒找到。希望大家能夠指點(diǎn)我。
4.如果在頁面中有中文字體的話。必須在HTML代碼中的樣式中寫上某種字體的css,并且必須是用英文的,然后在Java代碼中寫上對應(yīng)的文件位置。
1 2 ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 上面的方法是添加了宋體。也可以添加其他字體。
1 安裝Adobe Acrobat后會默認(rèn)在IE瀏覽器中添加PDF工具欄。
該工具可以方便的將網(wǎng)頁轉(zhuǎn)化成PDF文檔,或者添加入已有的PDF文檔,Adobe PDF Explorer工具欄則可以在IE的收藏夾界面內(nèi)管理window內(nèi)的HTML文檔與PDF文檔的轉(zhuǎn)化。
2、安裝單獨(dú)的pdf虛擬打印機(jī)(pdffactory、ultra pdf等),通過網(wǎng)頁的打印功能轉(zhuǎn)換。
3 使用客戶端軟件HTML2PDF_Pilot。
HTML2PDF_Pilot的截面如上圖,很簡潔。
如果只是要完成最簡單的工作只需如箭頭所示,點(diǎn)擊上方的添加按鈕添加HTML文檔然后點(diǎn)擊轉(zhuǎn)換,稍等既可以完成一個HTML文檔的轉(zhuǎn)化工作。
兩種方法的比較
靈活性:
PDF工具欄的方式相比客戶端的方式要靈活許多。
在使用的過程中發(fā)現(xiàn)HTML2PDF_Pilot不能通過URL(網(wǎng)址)直接轉(zhuǎn)化PDF文檔,而工具欄只需在瀏覽的過程隨意使用。
功能: 在功能的環(huán)節(jié)上,客戶端方式的HTML2PDF_Pilot就明顯要比PDF工具欄要強(qiáng)大許多
工具欄只提供了最基本的保存和添加入已有文檔的功能,而HTML2PDF_Pilot則提供了更為豐富的選項(xiàng)。
另外,如果需要批量轉(zhuǎn)化網(wǎng)頁文件的話,工具欄的方式也無法提供對應(yīng)的功能。
其實(shí)還是有很多可以選擇的方式,比如把網(wǎng)頁轉(zhuǎn)化為WORD的文件格式然后通過WPS軟件來轉(zhuǎn)化文檔等,只要能靈活運(yùn)用,html文件轉(zhuǎn)PDF是非常簡單的事情。
把網(wǎng)頁轉(zhuǎn)換為pdf?
好像很難。
我曾經(jīng)搞過類型的項(xiàng)目。
網(wǎng)上有iTextSharp這樣的開源庫,可以操作pdf文件。
但是,要把網(wǎng)頁轉(zhuǎn)為pdf, 這涉及對網(wǎng)頁的渲染工作,這個只有IE才能完成。
如果運(yùn)行的環(huán)境可控,可以考慮采用為運(yùn)行環(huán)境安裝一個PDF打印機(jī)什么的。然后用DDE技術(shù)調(diào)用IE直接把指定的網(wǎng)頁打印到PDF打印機(jī)。就生成了PDF文件。
如果運(yùn)行環(huán)境不可控,那真得是很難。
1這個方法是我認(rèn)為最簡單、高效的,只要安裝了360瀏覽器、火狐瀏覽器或谷歌瀏覽器就可以輕松實(shí)現(xiàn)。下面筆者以360瀏覽器為例,我們只要在瀏覽器的右上角點(diǎn)擊“文件”按鈕,然后選擇“打印”,然后選擇另存為PDF就可以了
2選擇目標(biāo)另存為PDF,另存為PDF后就可以了,這個是將整個網(wǎng)頁轉(zhuǎn)換成PDF文件的,如果網(wǎng)頁很長可能會有2、3頁的PDF。目前上面筆者演示的這個功能應(yīng)該是可以在所有給予Chrome內(nèi)核的瀏覽器中實(shí)現(xiàn),包括360、搜狗瀏覽器極速版、Chrome、獵豹瀏覽器,而且操作上基本都一樣(憑經(jīng)驗(yàn)猜想應(yīng)該是如此)。但I(xiàn)E內(nèi)核就沒有這個功能,而火狐里面則方法不同,不過肯定有插件可以實(shí)現(xiàn)。
聲明:本網(wǎng)站尊重并保護(hù)知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:3.277秒