1. 程式人生 > >利用itext將html檔案轉化pdf檔案(5)——多個檔案的合併

利用itext將html檔案轉化pdf檔案(5)——多個檔案的合併

工作中經常會遇到將多個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();
	}
}

沒有什麼可以說的,參考的都是官方文件,只需要自己定義好路徑即可。