① 《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
② Html轉md、pdf,pdf轉imgs,imgs轉pdf
在網頁處理領域,HTML與Markdown、PDF、圖片間的轉換是一項常見且實用的技能。讓我們逐一探索這些轉換的途徑與應用場景。
從HTML到Markdown的轉換,通常藉助於一些在線工具或腳本實現。以我乎為例,盡管它支持導出Markdown文件,但直接將HTML內容復制粘貼過來時,格式轉換可能會出現問題。這就需要後續進行格式調整。
HTML轉PDF的流程涉及下載並安裝wkhtmltopdf.exe文件。此工具在Windows平台上尤為重要。通過它,我們可以將HTML頁面轉換為PDF格式,以實現長圖保存或分享的目的。盡管可能存在一些演算法上的小BUG,但整體上此方法十分有效。
從PDF到圖片的轉換相對簡單,主要通過讀取PDF文件內容,然後以圖片形式保存。在這一過程中,圖片的像素會有所降低,因此可能需要對圖片進行縮放處理,以適應不同的需求。這一方法能夠實現將超長HTML內容以圖片形式保存。
圖片轉PDF的處理則可以利用fitz這個庫。通過此工具,我們可以將圖片序列轉換為PDF格式。值得注意的是,在原始PDF中可以復制的文字,經過圖片化處理並轉換為PDF後,文字復制功能會失效。這一轉換過程中,結合PIL庫可以實現圖片添加背景、水印等功能,為文檔增添個性化元素。
在完成圖片轉PDF後,如需進一步轉換為視頻,可以採用電影製作工具如moviepy或必剪等。這一過程涉及到視頻的編輯與合成,為內容展示提供了多樣化的可能性。盡管具體的代碼實現並未涉及,但這樣的轉換在多媒體內容製作中具有廣泛的應用前景。
③ Html轉md、pdf,pdf轉imgs,imgs轉pdf
HTML轉Markdown、PDF,PDF轉圖片,圖片轉PDF的方法如下:
1. HTML轉Markdown 使用在線工具或腳本:通常,可以藉助一些在線轉換工具或特定的腳本將HTML內容轉換為Markdown格式。但需要注意的是,直接復制粘貼HTML內容到Markdown編輯器時,可能會出現格式不兼容的問題,後續可能需要進行手動調整。
2. HTML轉PDF 使用wkhtmltopdf工具:這是一個專門用於將HTML轉換為PDF的工具,尤其適用於Windows平台。用戶需要下載並安裝該工具,然後通過命令行或圖形界面將HTML頁面轉換為PDF格式。此方法適用於需要將網頁內容保存為長圖或進行分享的場景。
3. PDF轉圖片 讀取PDF內容並保存為圖片:這一過程可以通過多種軟體或工具實現,如Adobe Acrobat、PDFXChange Editor等。這些工具能夠讀取PDF文件的內容,並將其以圖片的形式保存下來。在轉換過程中,可能會因為像素降低而需要對圖片進行縮放處理。
4. 圖片轉PDF 使用fitz庫:fitz是一個用於處理PDF文件的Python庫,它支持將圖片序列轉換為PDF格式。在轉換過程中,需要注意原始PDF中的文字在轉換為圖片後再轉回PDF時,將失去文字復制功能。此外,還可以結合PIL等庫為圖片添加背景、水印等功能,為PDF文檔增添個性化元素。
以上轉換方法在處理網頁、文檔和多媒體內容時具有廣泛的應用前景,但需要注意的是,在轉換過程中可能會遇到格式不兼容、像素降低等問題,因此需要根據具體需求進行選擇和調整。
④ 把網頁轉成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