PD4ML is an excellent tool which convert html to pdf, can support most of the standard html tag and css.
Can append string page $[page] of $[total] on page header/footer to display page number.
Java code:
protected Dimension format = PD4Constants.A4;
protected boolean landscapeValue = false;
protected int topValue = 10;
protected int leftValue = 10;
protected int rightValue = 10;
protected int bottomValue = 10;
protected String unitsValue = "mm";
protected String proxyHost = "";
protected int proxyPort = 0;
protected int userSpaceWidth = 780;
public void pd4mlTesting(){
try {
String filename = "test.pdf";
replaceHtml();
File fz = new File("D:/PD4ML/test.html");
java.io.FileInputStream fis = new java.io.FileInputStream(fz);
InputStreamReader isr = new InputStreamReader( fis, "UTF-8" );
PD4ML pd4ml = new PD4ML();
try {
pd4ml.setPageSize(landscapeValue ? pd4ml
.changePageOrientation(format) : format);
} catch (Exception e) {
e.printStackTrace();
}
if (unitsValue.equals("mm")) {
pd4ml.setPageInsetsMM(new Insets(topValue, leftValue, bottomValue,rightValue));
} else {
pd4ml.setPageInsets(new Insets(topValue, leftValue, bottomValue,rightValue));
}
pd4ml.setHtmlWidth(userSpaceWidth);
FileOutputStream fos = new FileOutputStream("D:/PD4ML/"+filename);
String pageHeader = "";
String pageFooter = "";
if (null != pageHeader && !"".equals(pageHeader.trim())) {
PD4PageMark headerMark = new PD4PageMark();
headerMark.setAreaHeight(30);
headerMark.setInitialPageNumber(0);
headerMark.setPagesToSkip(1);
if (pageHeader.toUpperCase().startsWith("<HTML>") && pageHeader.toUpperCase().endsWith("</HTML>")) {
//need page header and is HTML format
headerMark.setHtmlTemplate(pageHeader);
} else {
//need page header and is text format
// headerMark.setTitleAlignment(PD4PageMark.LEFT_ALIGN);
headerMark.setTitleTemplate(pageHeader);
}
pd4ml.setPageHeader(headerMark);
}
if (null != pageFooter && !"".equals(pageFooter.trim())) {
PD4PageMark footerMark = new PD4PageMark();
footerMark.setAreaHeight(30);
footerMark.setInitialPageNumber(0);
// footerMark.setPagesToSkip(1);
if (pageFooter.toUpperCase().startsWith("<HTML>") && pageFooter.toUpperCase().endsWith("</HTML>")) {
//need page header and is HTML format
footerMark.setHtmlTemplate(pageFooter);
} else {
//need page header and is text format
// headerMark.setTitleAlignment(PD4PageMark.RIGHT_ALIGN);
footerMark.setTitleTemplate(pageFooter);
}
pd4ml.setPageFooter(footerMark);
}
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("ccRecipientsName","ccRecipientsName");
parameters.put("subject","subject");
parameters.put("minutesPurposeCode","minutesPurposeCode");
pd4ml.setDynamicParams(parameters);
pd4ml.render(isr, fos);
} catch (InvalidParameterException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void replaceHtml(){
String path = "D:/PD4ML/test.html";
try {
StringBuffer bs = new StringBuffer();
InputStreamReader isr = new InputStreamReader(new FileInputStream(path));
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
bs.append(line + "\n");
}
br.close();
String str = bs.toString();
if (str.indexOf("@@minutesContent@@") != -1) {
str = str.replaceAll("@@minutesContent@@", getTestString());
}
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(path));
BufferedWriter bw = new BufferedWriter(osw);
bw.write(str);
bw.flush();
bw.close();
} catch (Exception e) {
}
}
HTML Template:
<html>
<body>
<table>
<tr>
<td>CC:</td>
<td>$[ccRecipientsName]</td>
</tr>
<tr>
<td>subject:</td>
<td>$[subject]</td>
</tr>
<tr>
<td>minutesPurposeCode:</td>
<td>$[minutesPurposeCode]</td>
</tr>
<tr>
<td style="vertical-align:top">Content:</td>
<td>@@minutesContent@@</td>
</tr>
</table>
</body>
</html>
分享到:
相关推荐
包含pd4ml-323b2.jar pd4ml-310b10.jar pd4ml_demo.jar pd4ml.pro.trial.3100.zip pd4ml.pro.trial.390b3.zip pd4ml.pro.trial.381fx1.zip fonts.jar ss_css2.jar
PD4ML的API说明文档和jar包pd4ml_demo.jar、ss_css2.jar
java转pdf ;pd4ml_demo.jar、pd4ml__css2.jar、fonts.jar
用于html转换pdf的工具包,包含pd4ml.jar
itext对标签严格,生成pdf有色差,对css不友好。pd4ml解决了这些问题 ,问题就是jar包不好下因为不是开源的 。 Html2PdfUtil.java 直接使用。
此文档有效解决了java使用pd4ml生成pdf文件时,pdf内容的字体问题
Java PDF导出插件 pd4ml-3100pro.jar、ss_css2.jar、fonts.jar;本人对jar包源码进行了微小的修改不影响使用,无水印无水印无水印,解决中文乱码, 附demo:...
PD4ML
pd4ml_demo.jar、ss_css2.jar、fonts.jar
pd4ml_demo.jar、pd4ml__css2.jar、fonts.jar
java html导出pdf,很好的使用了pd4ml技术支持css,支持中文,兼容Linux
pd4ml帮助文档和jar包pd4ml_demo.jar,ss_css2.jar
pd4ml_demo html 转换为 pdf
htnl转pdf依赖包(html转pdf)pd4ml官方api和jar—pd4ml.lib.trial.380fx9.jar
已经将pd4ml的水印去掉的pd4ml_demo.jar
pd4ml.jar 版本集合 7个版(html生成pdf 中文解决方案jar包)本,pd4ml.pro.trial.381fx1.zip,pd4ml.pro.trial.390b3.zip,pd4ml.pro.trial.3100.zip,pd4ml-310b10.jar,pd4ml-323b2.jar,pd4ml-370fx2pro.jar,...
PD4ML 实测Java将HTML导出为PDF 成功解决中文乱码问题
pd4ml-1.0.jar,css-2.0.jar,fonts-1.0.jar,jpedal_gpl-1.0.jar