1. 程式人生 > >Java將HTML轉化為PDF+獲得頁數+合併PDF

Java將HTML轉化為PDF+獲得頁數+合併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到一個裡面去,如果對你起到了幫助,請把它分享給更多人,謝謝!

相關推薦

JavaHTML化為PDF+獲得+合併PDF

最近公司用到了HTML轉PDF的技術,這裡就把用到的方式和技術在這裡寫一下,方便他人和自己以後有需要時進行

javaExcel化為Html

view mas pub str ali alt inpu hashmap align   之前在做移動端頁面的時候,發現iphone不支持預覽excel文檔,於是將excel轉化為html元素然後查看其中的具體信息,在這裏整理下文檔,以便於記憶避免踩坑。   1. 引入相

javascript+java實現html化為PDF文檔

parse itl 比例 數據 length java實現 ucc bytearray ngs   1. 項目中引入相關的jar包     itextasian-1.5.2.jar     itext-4.2.1.jar     itextpdf-5.1.2.jar    

iText —— JAVAhtmlpdf

1、index.html檔案內容如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.

java圖片化為base64和base64轉化為圖片編碼並儲存在本地

直接上程式碼public class Base64Convert {    /**     * @Description: 圖片轉化成base64字串     * @param:    path     * @Return:     */    public static S

java:String化為Date的工具類

package com.yanshu.logback; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import ja

javahtml的圖文化為PDF檔案輸出

首先在我的專案的resource目錄下建立相應的目錄,如圖其中file用來存放一個logo以及生成的PDF檔案,font資料夾用來存放font 字型然後在專案的 pom.xml中新增引用<dependency> <groupId>org.xht

如何java項目化為web項目

ble ont 代碼段 nat webapps com eclipse 配置 onf 1、修改工程文件 找到項目工作空間目錄,打開.project文件,找到:<natures> </natures>代碼段,在代碼段中加入如下內容並保存:<nat

Java 如何String化為Int

tac string ger mat tst valueof eof 轉化 form 在 Java 中要將 String 類型轉化為 int 類型時,需要使用 Integer 類中的 parseInt() 方法或者 valueOf() 方法進行轉換. 例1: 1

react標籤屬性dangerouslySetInnerHTML字串化為html(動態渲染)

根據需求,前端頁面有時需要動態展示後端返回的程式碼,但是此時的程式碼是字串型別,直接展示,頁面顯示的只是字串,這時就用到了react標籤屬性dangerouslySetInnerHtml屬性; dangerouslySetInnerHtml用法: dangerouslySetInnerH

POIword化為html

參考資料 1.POI包依賴:https://poi.apache.org/components/index.html 2.包版本問題:https://bbs.csdn.net/topics/392208805 並沒有使用其中的3.9的版本,使用的為3.13 最開始使用的

使用javahtml原始碼(拼裝、可獲取頁面原始碼)轉換成為("html頁面",“doc文件檔案”,“pdf格式”),,doc檔案轉換成為pdf,,檔案的刪除、壓縮...

目錄: 1、轉換成為html頁面 2、html原始碼轉換成為doc檔案 3、html原始碼轉換成為pdf檔案 4、壓縮多個檔案成為一個zip檔案

瀏覽器外掛形式htmlpdfhtml成圖片

javascript: (function () { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); var scrip

PDF技術(四)-Java實現HtmlPDF檔案

html轉換為pdf的關鍵技術是如何處理網頁中複雜的css樣式、以及中文亂碼處理。 各實現對比表 於Windows平臺進行測試:   基於IText 基於FlyingSaucer 基於WKHtmlToPdf

用html2canvas和jspdf實現htmlpdf下載到本地

解決了下載的圖片會模糊和偏移的問題 <script src="${basePath!}/js/bluebird.js"></script> <script src="${basePath!}/js/jspdf.debug.js"></script>

Java實現HtmlPDF

專案上的客戶提出一個需求,把政務流程中的表單資料匯出成pdf或者圖片格式,用來作電子檔案材料。表單基於公司的電子政務構建平臺實現,在資料庫儲存的都是html格式,因此打算直接把表單html轉成pdf或者圖片。由於表單是已經寫好了html頁面,那我要做的就是能完美解析htm

.md化為.html

總共需要下載的東西-windows pandoc 現在你需要下載的安裝包有: pandoc-windows版本 步驟 下載並安裝pandoc 在你的.md目錄下開啟cmd 只需要.

Java如何字串化為JSON(json-lib)

前言: 關於如何轉換網上的文章已經很多了,我之所以還寫出來的主要目的是提供一下jar。很多博主只是提供json-lib包,其他依賴的包讓自己去下載,自己在這裡遇到一些坑就是,如果版本不一致會導致報錯。另外有些博主為了賺取積分,讓我這種學生黨有些無奈。因此就在這

iText – 使用JavaHTML轉換為PDF

iText “XML Worker”允許開發人員以一種程式設計師友好的方式將XML檔案轉換成PDF檔案。iText還可以將包含CSS樣式的HTML轉換為PDF格式的文件。 目標: 實現如何利用iText Java庫將HTML檔案轉換成PDF文件?

java實現htmlpdf,支援中文,css以及中文換行

專案需使用到html轉pdf功能,在網上搜了很多,綜合了不少大神的方法,現在這裡做一個標記,以免自己以後忘記了。 java程式碼 import java.io.File; import java.io.FileOutputStream; import j