方法一:使用虚拟打印机pdf factory即可,而且其他格式文件只要是能够打印,选择这个虚拟打印机,都可以做成PDF文件,很简单实用;
方法二:用其他虚拟打印机转成PDF文件。
方法三:使用专门的转换软件,把文件转成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!" )
}
}
转换结果:
renderer.createPDF( os )捕捉下异常,看是不是跳走廊,在close之前调用os.flush()试试。String docPath = session.getAttribute("docpath").toString()//获取文件HTML文件路径
String inputFile = docPath+"html"//定义输入文件全名
String url = new File(inputFile).toURI().toURL().toString()
String outputFile =docPath + "pdf"//定义输出文件全名
OutputStream os = new FileOutputStream(outputFile)
ITextRenderer renderer = new ITextRenderer()实例化一个ITextRenderer
renderer.setDocument(url)
ITextFontResolver fontResolver = renderer.getFontResolver()
ontResolver.addFont("C:/Windows/fonts/simsun.ttc",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED)//设置字体
// 解决图片的相对路径问题
renderer.getSharedContext().setBaseURL("file:/" + application.getRealPath("UserFiles/Image") + "/")
renderer.layout()
renderer.createPDF(os)
os.close()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)