工作中经常会遇到将多个html文件转化为pdf,并且将pdf转化之后的文件进行合并。官方参考文档
下面来介绍简单的操作:import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.html2pdf.css.media.MediaDeviceDescription;
import com.itextpdf.html2pdf.css.media.MediaType;
import com.itextpdf.io.source.ByteArrayOutputStream;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.utils.PdfMerger;
import com.itextpdf.layout.font.FontProvider;
public class ManyToOne {
public static String baseuri = "G:\\TPractice\\workOne\\TransforePdf\\src\\main\\resources\\multipliesToOne\\";
// html source file, use array to savage html
public static String[] htmlSource = {
String.format("%sinvitation.html", baseuri),
String.format("%ssxsw.html", baseuri),
String.format("%smovies.html", baseuri) };
public static String des = "G:\\TPractice\\workOne\\TransforePdf\\src\\main\\resources\\result\\merge.pdf";
public static void main(String[] args) {
try {
createPdf(baseuri, htmlSource, des);
System.out.println("ok");
} catch (IOException e) {
e.printStackTrace();
}
}
// create pdf
public static void createPdf(String baseUri, String[] src, String dest) throws IOException {
ConverterProperties properties = new ConverterProperties();
properties.setBaseUri(baseUri);
//add font
FontProvider font = new FontProvider();
font.addStandardPdfFonts();
font.addFont("C:\\Windows\\Fonts\\STHeitibd.ttf");// 你的字体文件
properties.setFontProvider(font);
//set media print style
MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN);
properties.setMediaDeviceDescription(mediaDeviceDescription);
PdfWriter writer = new PdfWriter(dest);
PdfDocument pdf = new PdfDocument(writer);
PdfMerger merger = new PdfMerger(pdf);
//use foreach to create pdf and merge the pdf which converted yet
for (String html : src) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument temp = new PdfDocument(new PdfWriter(baos));
HtmlConverter.convertToPdf(new FileInputStream(html), temp, properties);
temp = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
merger.merge(temp, 1, temp.getNumberOfPages());
temp.close();
}
pdf.close();
}
}
没有什么可以说的,参考的都是官方文档,只需要自己定义好路径即可。