Java将HTML转化为PDF+获得页数+合并PDF
Java将HTML转化为PDF+获得页数+合并PDF
LLLL丶禾羊 发表于1个月前
Java将HTML转化为PDF+获得页数+合并PDF
  • 发表于 1个月前
  • 阅读 21
  • 收藏 3
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: java,pdf

最近公司用到了HTML转PDF的技术,这里就把用到的方式和技术在这里写一下,方便他人和自己以后有需要时进行。

首先将HTML转化成PDF: 现在有许多将HTML转化为PDF的方法:PD4ML,IText,Flying Sauser。

选择PD4ML原因:PD4ML实现html2pdf,速度快,纠错能力强,支持多种中文字体。相比较于IText和Flying Sauser方便许多

依赖包:pd4ml.jar fonts.jar pd4ml.jar ss_css2.jar
如果这里出现中文乱码的情况,请大家在src根目录下创建一个包fonts,在里面新建一个配置文件pd4fonts.properties 在配置文件中写

KaiTi_GB2312=SIMKAI.TTF
public class LLL_HTMLToPDF {
	public static void main(String[] args) throws Exception {
		File pdfFile = new File("D:/pdf/index.pdf");
		htmltopdf(pdfFile, "D:/pdf/index.html");
	}
	private static void htmltopdf(File outputPDFFile, String inputHTMLFileName) throws Exception {
		FileOutputStream fos = new FileOutputStream(outputPDFFile);
		PD4ML pd4ml = new PD4ML();
		pd4ml.setPageInsets(new Insets(40,30,30,40));
		pd4ml.setHtmlWidth(960);
		PD4PageMark p = new PD4PageMark();

		pd4ml.setPageHeader(p);
		pd4ml.setPageSize(PD4Constants.A4);
		pd4ml.useTTF("java:fonts", true);
		pd4ml.setDefaultTTFs("KaiTi_GB2312", "KaiTi_GB2312", "KaiTi_GB2312");
		pd4ml.enableDebugInfo();
		pd4ml.render("file:" + inputHTMLFileName,fos);
	}
}

到这里我们就可以看到在目录下有当前生成的pdf文件了。

下面讲一下pdf页数的获取 除开一些基础包之外,我们需要用到的包是:pdfbox-app-1.7.1.jar(注意用1.7.1才与我这个一样)

public class LLL_getPDFpage {
	public static void main(String[] args) {
		PDFParser parser;
		File file = new File("D:/pdf/printer/mergedTest.pdf");
		COSDocument cosDoc = null;
		PDDocument pdDoc = null;
		try {
			parser = new PDFParser(new FileInputStream(file));
			parser.parse();
			cosDoc = parser.getDocument();
			pdDoc = new PDDocument(cosDoc);
			System.out.println(pdDoc.getDocumentCatalog().getAllPages().size());
		} catch (Exception e) {
			e.printStackTrace();
			try {
				if (cosDoc != null)
					cosDoc.close();
				if (pdDoc != null)
					pdDoc.close();
			} catch (Exception e1) {
				e.printStackTrace();
			}
		}
	}
}

这里就可以打印出来当前pdf有多少页

然后下面说一下将pdf合并的问题 我们现在项目中需要将多个pdf合并成一个pdf文件,这里还是用的pdfbox包就可以

public class LLL_MergePDF {
	public static void main(String[] args) throws Exception {
		PDFMergerUtility mergePdf = new PDFMergerUtility();
		String folder = "D:/pdf/";
		String destinationFileName = "mergedTest.pdf";
		String[] filesInFolder = getFiles(folder);
		for (int i = 0; i < filesInFolder.length; i++)
		{
			mergePdf.addSource(folder + File.separator + filesInFolder[i]);
		}
		mergePdf.setDestinationFileName(folder + File.separator + destinationFileName);
		mergePdf.mergeDocuments();
		System.out.print("合并完成__LLL丶禾羊__博客");
	}
	private static String[] getFiles(String folder) throws IOException {
		File _folder = new File(folder);
		String[] filesInFolder;
		if (_folder.isDirectory()) {
			filesInFolder = _folder.list();
			return filesInFolder;
		} else {
			throw new IOException("Path is not a directory");
		}
	}
}

这里就是java关于pdf的一些操作,讲了java将html转化成pdf,获取pdf的页码,合并多个pdf到一个里面去,如果对你起到了帮助,请把它分享给更多人,谢谢!

共有 人打赏支持
粉丝 3
博文 23
码字总数 13072
×
LLLL丶禾羊
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: