A. 如何使用iText的HTML轉換為pdf
你好,html轉pdf你可以使用專業的pdf轉換器來完成
參考軟體:topdf轉換器
操作方法:進入網站找到html轉pdf頁面然後上傳文件點擊轉換,待轉換成功後將轉換好文件下載即可。
B. java將html文件轉成pdf
核心代碼如下
package com.hmkcode;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.html2pdf.HtmlConverter;
public class App {
public static final String HTML = "<h1>Hello</h1>"
+ "<p>This was created using iText</p>"
+ "<a href='hmkcode.com'>hmkcode.com</a>";
public static void main( String[] args ) throws FileNotFoundException, IOException
{
HtmlConverter.convertToPdf(HTML, new FileOutputStream("string-to-pdf.pdf"));
System.out.println( "PDF Created!" );
}
}
C. 把網頁轉成PDF[html to pdf]
使用 TuesPechkin (C#)類庫, 這個是將wkhtmltopdf(C++) 使用?C# 進行的封裝
使用方便 ,
publicpartialclassDefault:System.Web.UI.Page
{
privateIConverterconverter=
newStandardConverter(
newPdfToolset(
newWin64EmbeddedDeployment(
newTempFolderDeployment())));
protectedvoidPage_Load(objectsender,EventArgse)
{
stringhtmlPath=Server.MapPath("~/index.html");
stringhtmlContext=System.IO.File.ReadAllText(htmlPath);
vardoc=newHtmlToPdfDocument();
doc.Objects.Add(newObjectSettings(){HtmlText=htmlContext});
doc.Objects.Add(newObjectSettings{PageUrl="http://news.ifeng.com/history/special/yuanshikai/
});
varresult=converter.Convert(doc);
varpath=@"d: ext.pdf";
System.IO.File.WriteAllBytes(path,result);
}
}
源碼地址: https://github.com/tuespetre/TuesPechkin
D. 《html轉pdf-----wkhtmltopdf踩坑總結》
最近公司給了個任務,差不多的流程就是接受json數據,然後最後生成圖片。我想的辦法是根據json數據生成html然後轉成pdf。使用的語言是python。然後具體來說使用的工具就是使用python名為pdfkit的庫去調用基於webkit的wkhtmltopdf。
目前來說html轉pdf最主流的程序就是wkhtmltopdf,但是坑還是挺多的而且網上資源不是很豐富,所以寫一篇踩坑總結。
##1. 無法讀取本地文件
顯示在html上好好的本地圖片,到了pdf上就讀取不出來,但是來源於網路(給一個url)的圖片卻能完美讀出來。
後來發現,原來在上一個版本0.12.5是可以讀取的,到了0.12.6不能讀取了是因為其中的一個參數--enable-local-file-access變為了非默認。在python中改這個參數的方法是
然後再在後續調用wkhtmltopdf中載入這個option(我一開始想的是把value改成True,結果一直報錯,吐了)
##2. 無法解析latex格式的公式
在html使用了MathJax提供的js去解析latex格式的數學公式,在html界面可以完美顯示,但是到了pdf中就解析不了,然後我以為是沒有添加'enable-javascript'的問題。結果加上之後還是不行。然後我發現又有一個參數叫做'no-stop-slow-scripts'的參數,可以等到js運行完畢之後再進行pdf的轉化。結果還是不行。
然後我就在想會不會js在運行的時候出了什麼問題,加上了'debug-javascripts'的參數。果然發現在調用MathJax提供的鏈接的時候發現這個鏈接已經過期了(我也不知道為啥過期了在html界面還能完美展示。。。),把js里的鏈接換成了
https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-AMS-MML_HTMLorMML
完美解決
##3. 部分css失效
css3中的flex全部失效,所以大家得換一下!
當時遇到了一個講的很好的博客,給大家分享一下,然後再放一個官方文檔的鏈接
博客:https://www.jianshu.com/p/4d65857ffe5e
官方文檔:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
E. 如何利用js或php將html網頁轉為pdf
首先需要安裝wkhtmltopdf這個軟體 需要執行shell_exec函數的php文件和安裝的wkhtmltopdf.exe可執行文件在同一目錄下,不然php找不到這個執行文件
shell_exec("wkhtmltopdf.exe --page-size A4 --outline 網頁地址 pdf文件名");
--page-size 以A4紙的尺寸顯示pdf內容
--outline 顯示目錄(網頁中h1,h2來定)
網頁地址 需要轉成pdf的網頁地址
pdf文件名 生成pdf的文件名,可以使用絕對路徑
F. 前端HTML頁面轉PDF(html2canvas+jspdf)
utils - htmlToPdf.js
main.js
1、如果在多個頁面使用,給函數定義一個參數,參數為要導出頁面部分的id。
將 '#pdfDom' 替換為參數即可
2、將導出文件的名稱也作為參數傳入函數
此種方式也可用於vue,嘗試後可行,需要調節部分參數,但畢竟不太合適。
jQuery不需要調節。
https://github.com/zhangshaoliang/downLoadPDF
vue方式
jQuery方式
目前項目使用的是前端加後端方式,前端提供模板,echarts圖表的話需要轉為base64發送給後台。後台使用iText。目前存在的問題是後台不支持css3語法,只支持到css2,所以復雜的樣式頁面顯示錯亂,考慮個別頁面使用純前端實現。
網站導航
G. 開源庫 openhtmltopdf 將 html 轉 為 pdf 頁面優化、美化的不得不知道的經驗
在我們項目中會使用freemark 生成 html,然後用 html 轉 pdf。那麼美化是必不可少的程序。
可以在style中設置如下屬性修改頁面大小。可以通過size 設置任意大小的page(不能是百分比),也可以設置標準的頁面大小,如 a4, a5, a3, b3, b4, letter, legal,ledger
理論上來說,可以在一個文檔中設置不同的頁面尺寸。但這個解析器僅僅取第一頁的page 的寬度作為 html 中body 的寬度,所以實際上,寬度只能設置一個,高度可以是設置多個。
可以在 @page 屬性中設置的當前頁的頁邊距,內邊距、背景顏色等。和一般的 html 設置類似。
不過當我這里設置所有邊框都為0 時候發現生成的pdf 仍然有邊界。其實那是 body 的邊距。可以通過下面的方法設置
和頁面大小設置相似,這樣所有的邊距都就沒了。這是一個需要注意的地方
這里就不多說了,看我另一篇文章即可。 分頁優化
H. 如何將html頁面轉成pdf
1安裝Adobe Acrobat後會默認在IE瀏覽器中添加PDF工具欄。
該工具可以方便的將網頁轉化成PDF文檔,或者添加入已有的PDF文檔,Adobe PDF Explorer工具欄則可以在IE的收藏夾界面內管理window內的HTML文檔與PDF文檔的轉化。
2、安裝單獨的pdf虛擬列印機(pdffactory、ultra pdf等),通過網頁的列印功能轉換。
3使用客戶端軟體HTML2PDF_Pilot。
HTML2PDF_Pilot的截面如上圖,很簡潔。
如果只是要完成最簡單的工作只需如箭頭所示,點擊上方的添加按鈕添加HTML文檔然後點擊轉換,稍等既可以完成一個HTML文檔的轉化工作。
兩種方法的比較
靈活性:
PDF工具欄的方式相比客戶端的方式要靈活許多。
在使用的過程中發現HTML2PDF_Pilot不能通過URL(網址)直接轉化PDF文檔,而工具欄只需在瀏覽的過程隨意使用。
功能:在功能的環節上,客戶端方式的HTML2PDF_Pilot就明顯要比PDF工具欄要強大許多
工具欄只提供了最基本的保存和添加入已有文檔的功能,而HTML2PDF_Pilot則提供了更為豐富的選項。
另外,如果需要批量轉化網頁文件的話,工具欄的方式也無法提供對應的功能。
其實還是有很多可以選擇的方式,比如把網頁轉化為WORD的文件格式然後通過WPS軟體來轉化文檔等,只要能靈活運用,html文件轉PDF是非常簡單的事情。
I. 怎樣用Java把html轉為pdf
java中利用第三方jar包iText 5.4.2就可以實現html轉為pdf。
比如有如下index.html文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>HTML to PDF</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>HTML to PDF</h1>
<p>
<span class="itext">itext</span> 5.4.2 <span class="description"> converting HTML to PDF</span>
</p>
<table>
<tr>
<th class="label">Title</th>
<td>iText - Java HTML to PDF</td>
</tr>
<tr>
<th>URL</th>
<td>http://hmkcode.com/itext-html-to-pdf-using-java</td>
</tr>
</table>
</body>
</html>
樣式文件:
h1 {
color:#ccc;
}
table tr td{
text-align:center;
border:1px solid gray;
padding:4px;
}
table tr th{
background-color:#84C7FD;
color:#fff;
width:100px;
}
.itext{
color:#84C7FD;
font-weight:bold;
}
.description{
color:gray;
}
後台轉換的介面:
package com.hmkcode;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper;
public class App
{
public static void main( String[] args )throws DocumentException, IOException
{
// step 1
Document document =new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("pdf.pdf"));
// step 3
document.open();
// step 4
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream("index.html"));
//step 5
document.close();
System.out.println("PDF Created!" );
}
}
轉換結果: