Java使用Aspose組件進行多文檔間的轉換操作


首先,祝大家新年快樂,2019諸事順利,很久沒有更新博客,今天要給大家說的是 ”Aspose“ 組件,作為2019年第一篇博客,希望大家能夠多多支持,2019年要繼續加油。

 

什么是Aspose

Aspose.Total是Aspose公司旗下的最全的一套office文檔管理方案,主要提供.net跟java兩個開發語言的控件套包,通過它,我們可以有計划地操縱一些商業中最流行的文件格式:Word, Excel, PowerPoint, Project,等office文檔以及PDF文檔。 除了強大的文件操縱組件之外,Aspose.Total 還提供了用於制圖、寫電子郵件、拼寫檢查、創建條形碼、生成ad hoc 查詢、重現格式以及工作流等組件,運用它我們可以整理一個完整的文檔管理方案。

 

包含的功能:

  • 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的功能,下面上干貨。

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");
    }
}

 

注意事項:

  1. Aspose.Words、Aspose.Cells、Aspose.Pdf 三個Jar包中都有Document、License、SaveFormat類,如果Idea或者Eclipse控制台沒有報錯,但是打開PDF提示PDF格式錯誤或者文件損壞的話,請檢查一下導包是否正確。
  2. 獲取License網上也有通過類加載器獲取license.xml方式獲取license,但是我嘗試很多次都是報空指針異常,所以采用了直接使用字符串拼接的方式,如果各位有更好的辦法可以直接留言。
  3. 博客僅作為博主學習記錄,交流使用,如果有不正確的地方,請在評論區留言指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM