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!" );
}
}
转换结果: