1. 程式人生 > 其它 >Word轉pdf

Word轉pdf

Word轉pdf

1、匯入依賴

1.1 下載依賴(兩個依賴已經打包好了)

依賴下載地址: https://files.cnblogs.com/files/blogs/605855/lib.rar

下載下來之後:

1.2 安裝到本地maven庫中

mvn install:install-file -DgroupId=com.aspose.words -DartifactId=aspose-words-jdk16 -Dversion=14.9.0 -Dpackaging=jar -Dfile=aspose-words-14.9.0-jdk16.jar

mvn install:install-file -DgroupId=com.aspectjweaver -DartifactId=aspectjweaver -Dversion=1.9.1 -Dpackaging=jar 

1.3 在pom.xml中引入依賴

<dependencies>
    <dependency>
        <groupId>com.aspectjweaver</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.1</version>
    </dependency>
    <dependency>
        <groupId>com.aspose.words</groupId>
        <artifactId>aspose-words-jdk16</artifactId>
        <version>14.9.0</version>
    </dependency>
</dependencies>

2、編寫程式碼(需要水印功能,解開註釋即可)

public class Word2PdfUtil {
    /**
     *
     * @param toFilePath 資料夾路徑
     * @param fileName 檔名
     * @param type 檔案型別(字尾 例如 .doc)
     * @return
     * @throws Exception
     */
    public static String file2pdf(String toFilePath, String fileName, String type ) throws Exception {
        String htmFileName;
        //獲取轉換成PDF之後檔名
        if(".doc".equals(type)){
            htmFileName = fileName+".pdf";
        }else if(".docx".equals(type)){
            htmFileName = fileName+".pdf";
        }else{
            return null;
        }
        //通過轉換之後的PDF檔名,建立PDF檔案
        File htmlOutputFile = new File(toFilePath + File.separatorChar + htmFileName);
        //獲取檔案輸出流
        FileOutputStream os = new FileOutputStream(htmlOutputFile);
        //獲取Doc文件物件模型
        Document doc = new Document(toFilePath+ File.separatorChar + fileName+type);
        //為doc文件新增水印
//        insertWatermarkText(doc, "cpeccsw");
        //將doc文旦轉換成PDF檔案並輸出到之前建立好的pdf檔案中
        doc.save(os, SaveFormat.PDF);
        //關閉輸出流
        if(os!=null){
            os.close();
        }
        return htmFileName;
    }

    /**
     * 為word文件新增水印
     * @param doc word文件模型
     * @param watermarkText 需要新增的水印欄位
     * @throws Exception
     */
//    private static void insertWatermarkText(Document doc, String watermarkText) throws Exception {
//        Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);
//        //水印內容
//        watermark.getTextPath().setText(watermarkText);
//        //水印字型
//        watermark.getTextPath().setFontFamily("宋體");
//        //水印寬度
//        watermark.setWidth(500);
//        //水印高度
//        watermark.setHeight(100);
//        //旋轉水印
//        watermark.setRotation(-40);
//        //水印顏色
//        watermark.getFill().setColor(Color.lightGray);
//        watermark.setStrokeColor(Color.lightGray);
//        watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
//        watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
//        watermark.setWrapType(WrapType.NONE);
//        watermark.setVerticalAlignment(VerticalAlignment.CENTER);
//        watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);
//        Paragraph watermarkPara = new Paragraph(doc);
//        watermarkPara.appendChild(watermark);
//        for (Section sect : doc.getSections())
//        {
//            insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_PRIMARY);
//            insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_FIRST);
//            insertWatermarkIntoHeader(watermarkPara, sect, HeaderFooterType.HEADER_EVEN);
//        }
//        System.out.println("Watermark Set");
//    }

    /**
     * 在頁首中插入水印
     * @param watermarkPara
     * @param sect
     * @param headerType
     * @throws Exception
     */
//    private static void insertWatermarkIntoHeader(Paragraph watermarkPara, Section sect, int headerType) throws Exception{
//        HeaderFooter header = sect.getHeadersFooters().getByHeaderFooterType(headerType);
//        if (header == null)
//        {
//            header = new HeaderFooter(sect.getDocument(), headerType);
//            sect.getHeadersFooters().add(header);
//        }
//        header.appendChild(watermarkPara.deepClone(true));
//    }
}