这东西搞得我头都大了,望各位高手指点。
说明:
(这个类运行环境 myeclipse6.6 jdk1.5 windows7)
需要jar包:(三个)
itextpdf-5.1.5.jar
bcprov-jdk15-146.jar
iTextAsian.jar
使用和生成的 pdf html 去 本人的资源列表下载
存在问题:生成的pdf 里面的table 只有boder 没有内容,请教各位高手。(还有html格式转换为pdf后 不够细腻)
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.StringReader;
import java.util.List;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.html.simpleparser.HTMLWorker;
import com.itextpdf.text.html.simpleparser.StyleSheet;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
public class testPDF {
public static String path = System.getProperty("user.dir") + "/WebRoot/";
public static String outputFile = path + "fistdoc.pdf";
public static String outputFile2 = path + "fistdoc2.pdf";
public void test() throws DocumentException, IOException {
//-----加载 html 流 开始
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(path + "hetong2.html")));
String data = null;
StringBuffer b = new StringBuffer();
while ((data = br.readLine()) != null) {
System.out.println(data);
b.append(data);
}
br.close();
//----- 加载 html 流 结束
//-----输出 pdf 流 开始
OutputStream os = new FileOutputStream(outputFile2);
//-----输出 pdf 流 结束
Document doc = new Document();
//-----中文过滤 开始
BaseFont baseFontChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(baseFontChinese, 12, Font.NORMAL);
//-----中文过滤 结束
//-----创建监听器
PdfWriter writer = PdfWriter.getInstance(doc, os);
//-----加权限 开始
writer.setPdfVersion(writer.PDF_VERSION_1_7);
int perssion = writer.ALLOW_PRINTING | writer.HideMenubar
| writer.HideToolbar | writer.HideWindowUI
| writer.ALLOW_FILL_IN;
writer.setEncryption(null, null, perssion,
writer.STANDARD_ENCRYPTION_40);
//-----加权限 结束
//----- html 流 加入document 开始
Paragraph context = new Paragraph();
StyleSheet ss = new StyleSheet();
List htmlList = HTMLWorker.parseToList(new StringReader(b.toString()),
ss);
for (int i = 0; i < htmlList.size(); i++) {
Element e = (Element) htmlList.get(i);
context.setFont(fontChinese);
context.add(e);
}
//----- html 流 加入document 结束
//----- 打开document
doc.open();
//加入html 流 动作
doc.add(context);
//----- 关闭document
doc.close();
}
public static void main(String[] args) throws DocumentException,
IOException {
testPDF f = new testPDF();
f.test();
}
}