什麼是Aspose?java
Aspose.Total是Aspose公司旗下的最全的一套office文檔管理方案,主要提供.net跟java兩個開發語言的控件套包,經過它,咱們能夠有計劃地操縱一些商業中最流行的文件格式:Word, Excel, PowerPoint, Project,等office文檔以及PDF文檔。 除了強大的文件操縱組件以外,Aspose.Total 還提供了用於製圖、寫電子郵件、拼寫檢查、建立條形碼、生成ad hoc 查詢、重現格式以及工做流等組件,運用它咱們能夠整理一個完整的文檔管理方案。安全
包含的功能:ide
-
Aspose.Word:
Aspose.Words是一款先進的類庫,經過它能夠直接在各個應用程序中執行各類文檔處理任務。Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocument, PDF, XPS, EPUB和其餘格式。使用Aspose.Words,您能夠生成,更改,轉換,渲染和打印文檔而不使用Microsoft Word。 -
Aspose.Cell:
Aspose.Cells是一個廣受讚譽的電子表格組件,支持全部Excel格式類型的操做,用戶無需依靠Microsoft Excel也可爲其應用程序嵌入讀寫和處理Excel數據表格的功能。Aspose.Cells能夠導入和導出每個具體的數據,表格和格式,在各個層面導入圖像,應用複雜的計算公式,並將Excel的數據保存爲各類格式等等---完成全部的這一切功能都無需使用Microsoft Excel 和Microsoft Office Automation。 -
Aspose.PDF:
Aspose.Pdf是一個PDF文檔建立組件,能夠幫助用戶無需使用Adobe Acrobat 便可讀寫和操做PDF文件。Aspose.Pdf豐富功能:PDF文檔壓縮選項,表格建立與操做,圖表支持,圖像功能,豐富的超連接功能,擴展的安全性組件以及自定義字體處理。 -
Aspose.BarCode:
Aspose.BarCode是一個功能強大,且穩健的條形碼生成和識別組件。 -
Aspose.Slide:
Aspose.Slides是一個獨特的可用於PowerPoint管理的控件,用戶無需使用Microsoft PowerPoint便可在應用程序中對Microsoft PowerPoint文件進行讀寫以及操做。Aspose.Slides是第一個能在用戶的應用程序中對PowerPoint文檔進行管理的組件。 -
Aspose.Task:
Aspose.Tasks 是一個非圖形的.NET 項目管理組件,使.NET應用程序能夠閱讀以及撰寫、管理項目文檔時無須使用Microsoft Project。使用Aspose.Tasks 你能夠閱讀和改變任務,重現任務,資源,資源分配,關係和日曆。Aspose.Tasks 是一個提供穩定性和靈活性的很是成熟的產品。
咱們今天重點講解的是前面3個,Aspose.Words、Aspose.Cells、Aspose.Pdf,利用這三個組件分別實現Word轉Pdf、Excel轉Pdf、以及多個Pdf合併爲一個Pdf的功能,下面上乾貨。post
Jar包及License獲取方式:學習
連接:https://pan.baidu.com/s/1PwtvfPGLu1MIpMLNHKHTmg
提取碼:5la1 字體
import com.aspose.words.Document; import com.aspose.words.License; import com.aspose.words.SaveFormat; import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.InputStream; /** * Created with IntelliJ IDEA * Created By 顧東城 * Date: 2019/2/21 * Time: 14:01 * Desc: 使用Aspose.Words將word文件轉換爲pdf文件 */ public class AsposeWordTest { /** * 獲取license * * @return */ private static boolean getLicense() { boolean result = false; try { // 憑證 String license = "<License>\n" + " <Data>\n" + " <Products>\n" + " <Product>Aspose.Total for Java</Product>\n" + " <Product>Aspose.Words for Java</Product>\n" + " </Products>\n" + " <EditionType>Enterprise</EditionType>\n" + " <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" + " <LicenseExpiry>20991231</LicenseExpiry>\n" + " <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" + " </Data>\n" + " <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" + "</License>"; InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8")); License asposeLic = new License(); asposeLic.setLicense(is); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * word 轉 pdf * @param docPath 要轉換的word文件路徑 * @param pdfPath 轉換完成後輸出的pdf文件路徑 */ public static void doc2pdf(String docPath,String pdfPath) { if (!getLicense()) { return; } try { Document convertDoc = new Document(new FileInputStream(docPath)); convertDoc.save(pdfPath, SaveFormat.PDF); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { //在硬盤直接建立一個空白pdf便可 AsposeWordTest.doc2pdf("H:/test.docx","H:/testDoc.pdf"); } }
import com.aspose.cells.License; import com.aspose.cells.SaveFormat; import com.aspose.cells.Workbook; import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.InputStream; /** * Created with IntelliJ IDEA * Created By 顧東城 * Date: 2019/2/22 * Time: 9:01 * Desc: 使用Aspose.Cells將excel文件轉換爲pdf文件 */ public class AsposeCellTest { /** * 獲取license * * @return */ private static boolean getLicense() { boolean result = false; try { // 憑證 String license = "<License>\n" + " <Data>\n" + " <Products>\n" + " <Product>Aspose.Total for Java</Product>\n" + " <Product>Aspose.Words for Java</Product>\n" + " </Products>\n" + " <EditionType>Enterprise</EditionType>\n" + " <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" + " <LicenseExpiry>20991231</LicenseExpiry>\n" + " <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" + " </Data>\n" + " <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" + "</License>"; InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8")); License asposeLic = new License(); asposeLic.setLicense(is); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * excel 轉 pdf * @param excelPath 要轉換的excel文件路徑 * @param pdfPath 轉換完成後輸出的pdf文件路徑 */ public static void excel2pdf(String excelPath,String pdfPath) { if (!getLicense()) { return; } try { Workbook convertExcel = new Workbook(new FileInputStream(excelPath)); convertExcel.save(pdfPath, SaveFormat.PDF); }catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { //在硬盤直接建立一個空白pdf便可 AsposeCellTest.excel2pdf("H:/test.xlsx","H:/testExcel.pdf"); } }
import com.aspose.pdf.Document; import com.aspose.pdf.License; import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.Arrays; import java.util.List; /** * Created with IntelliJ IDEA * Created By 顧東城 * Date: 2019/2/22 * Time: 9:24 * Desc: 使用Aspose.Pdf將多個pdf合併爲一個pdf文件 */ public class AsposePdfTest { /** * 獲取license * * @return */ private static boolean getLicense() { boolean result = false; try { // 憑證 String license = "<License>\n" + " <Data>\n" + " <Products>\n" + " <Product>Aspose.Total for Java</Product>\n" + " <Product>Aspose.Words for Java</Product>\n" + " </Products>\n" + " <EditionType>Enterprise</EditionType>\n" + " <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" + " <LicenseExpiry>20991231</LicenseExpiry>\n" + " <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" + " </Data>\n" + " <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" + "</License>"; InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8")); License asposeLic = new License(); asposeLic.setLicense(is); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * * @param pdfPaths 要合併的pdf文件路徑 * @param mergeSavePath 最終合併完成輸出的pdf文件路徑 */ public static void pdfMergePdf(List<String> pdfPaths,String mergeSavePath){ try { Document mergeDocument = new Document(); for (String pdfPath : pdfPaths) { Document document = new Document(new FileInputStream(pdfPath)); mergeDocument.getPages().add(document.getPages()); } mergeDocument.save(mergeSavePath); } catch (FileNotFoundException e) { e.printStackTrace(); } } public static void main(String[] args) { //將須要合併的pdf文件放入list List<String> pdfPaths = Arrays.asList("H:/testDoc.pdf","H:/testExcel.pdf"); //在硬盤直接建立一個空白pdf便可 AsposePdfTest.pdfMergePdf(pdfPaths,"H:/merge.pdf"); } }
注意事項:spa
- Aspose.Words、Aspose.Cells、Aspose.Pdf 三個Jar包中都有Document、License、SaveFormat類,若是Idea或者Eclipse控制檯沒有報錯,可是打開PDF提示PDF格式錯誤或者文件損壞的話,請檢查一下導包是否正確。
- 獲取License網上也有經過類加載器獲取license.xml方式獲取license,可是我嘗試不少次都是報空指針異常,因此採用了直接使用字符串拼接的方式,若是各位有更好的辦法能夠直接留言。
- 博客僅做爲博主學習記錄,交流使用,若是有不正確的地方,請在評論區留言指正。