最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)word文檔轉(zhuǎn)pdf并添加水印的方法詳解

 更新時(shí)間:2019年09月28日 11:38:42   作者:我走小路  
這篇文章主要介紹了java實(shí)現(xiàn)word文檔轉(zhuǎn)pdf并添加水印的方法,結(jié)合實(shí)例形式詳細(xì)分析了java word文檔轉(zhuǎn)PDF相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了java實(shí)現(xiàn)word文檔轉(zhuǎn)pdf并添加水印的方法。分享給大家供大家參考,具體如下:

前段時(shí)間,項(xiàng)目需要自動(dòng)生成word文檔,用WordFreeMarker生成word文檔后,又要求生成的文檔能在瀏覽器瀏覽,思來(lái)想去,把word文檔轉(zhuǎn)成pdf就好了,于是乎研究了一下。

將word文檔轉(zhuǎn)化為PDF是項(xiàng)目中常見的需求之一,目前主流的方法可以分為兩大類,一類是利用各種Office應(yīng)用進(jìn)行轉(zhuǎn)換,譬如Microsoft Office、WPS以及LiberOffice,另一種是利用各種語(yǔ)言提供的對(duì)于Office文檔讀取的接口(譬如Apache POI,jacob,docx4j,openoffice),這些要么收費(fèi),要么要裝插件,要么轉(zhuǎn)換之后樣式走形,亂碼等等。

我使用Aspose.Words for Java 可以導(dǎo)出復(fù)雜WORD PDF HTML 多種數(shù)據(jù)格式

官方下載地址:http://www.aspose.com/java/word-component.aspx

我所用的版本是aspose-words-14.9.0-jdk16。需要到的兩個(gè)jar包(所需jar包下載。)。

廢話不多說(shuō),直接上代碼:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.slf4j.Logger;
import com.aspose.words.Document;
import com.aspose.words.SaveFormat;
/**
 * 
* @ClassName: Word2PdfUtilt
* @Description: PDF轉(zhuǎn)換工具類
* @author mzl
* @date 2018年7月30日 下午5:26:44
*
 */
public class Word2PdfUtilt {
    protected static Logger log = Log.get();
    public static void main(String[] args) {
    doc2pdf("D:\\Workspaces\\小花測(cè)試_20180731094521.doc","D:\\Workspaces\\test.pdf");
  }
  public static void doc2pdf(String inPath, String outPath) {
      FileOutputStream os =null;
    try {
      File file = new File(outPath); // 新建一個(gè)空白pdf文檔
      os = new FileOutputStream(file);
      Document doc = new Document(inPath); // Address是將要被轉(zhuǎn)化的word文檔
      doc.save(os, SaveFormat.PDF);
    } catch (Exception e) {
      e.printStackTrace();
    }finally{
        if(os!=null){
            try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }
  }
}

轉(zhuǎn)成PDF格式后,圖片等樣式均沒(méi)有亂。

以上就是生產(chǎn)PDF的步驟了,接下來(lái)添加水?。?/p>

/**
* 
* @Title: insertWatermarkText
* @Description: PDF生成水印
* @author mzl
* @param doc
* @param watermarkText
* @throws Exception
* @throws
*/
private static void insertWatermarkText(Document doc, String watermarkText) throws Exception
{
    Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);
    //水印內(nèi)容
    watermark.getTextPath().setText(watermarkText);
    //水印字體
    watermark.getTextPath().setFontFamily("宋體");
    //水印寬度
    watermark.setWidth(500);
    //水印高度
    watermark.setHeight(100);
    //旋轉(zhuǎn)水印
    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");
}
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));
}

效果圖如下,我添加的水印為我的博客昵稱:擇依MZL

 

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • java JDBC系列教程之JDBC類的簡(jiǎn)析與JDBC的基礎(chǔ)操作

    java JDBC系列教程之JDBC類的簡(jiǎn)析與JDBC的基礎(chǔ)操作

    這篇文章主要介紹了java JDBC系列教程之JDBC類的簡(jiǎn)析與JDBC的基礎(chǔ)操作,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Spring容器初始化擴(kuò)展點(diǎn)之ApplicationContextInitializer詳解

    Spring容器初始化擴(kuò)展點(diǎn)之ApplicationContextInitializer詳解

    ApplicationContextInitializer是Spring框架提供的一個(gè)接口,用于在Spring應(yīng)用上下文刷新之前對(duì)其進(jìn)行自定義初始化,本文介紹Spring容器初始化擴(kuò)展點(diǎn)之ApplicationContextInitializer,感興趣的朋友一起看看吧
    2025-02-02
  • Java中通過(guò)sftp協(xié)議實(shí)現(xiàn)上傳下載的示例代碼

    Java中通過(guò)sftp協(xié)議實(shí)現(xiàn)上傳下載的示例代碼

    在java開發(fā)中遇到需要將linux系統(tǒng)中指定目錄下的文件下載到windows本地的需求,本文就來(lái)介紹Java中通過(guò)sftp協(xié)議實(shí)現(xiàn)上傳下載,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問(wèn)題

    SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問(wèn)題

    這篇文章主要介紹了SpringBoot項(xiàng)目中配置application.yml中server.port不生效的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 利用Sharding-Jdbc進(jìn)行分庫(kù)分表的操作代碼

    利用Sharding-Jdbc進(jìn)行分庫(kù)分表的操作代碼

    sharding-jdbc是一個(gè)分布式的關(guān)系型數(shù)據(jù)庫(kù)中間件,今天通過(guò)本文給大家介紹利用Sharding-Jdbc進(jìn)行分庫(kù)分表的操作代碼,代碼簡(jiǎn)單易懂對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-01-01
  • Spring中的@ControllerAdvice三種用法詳解

    Spring中的@ControllerAdvice三種用法詳解

    這篇文章主要介紹了Spring中的@ControllerAdvice三種用法詳解,加了@ControllerAdvice的類為那些聲明了(@ExceptionHandler、@InitBinder或@ModelAttribute注解修飾的)方法的類而提供的<BR>專業(yè)化的@Component,以供多個(gè)Controller類所共享,需要的朋友可以參考下
    2024-01-01
  • java實(shí)現(xiàn)身份證號(hào)碼驗(yàn)證的示例代碼

    java實(shí)現(xiàn)身份證號(hào)碼驗(yàn)證的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用java語(yǔ)言實(shí)現(xiàn)身份證號(hào)碼驗(yàn)證的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09
  • Java代碼審計(jì)之URL重定向的問(wèn)題解決

    Java代碼審計(jì)之URL重定向的問(wèn)題解決

    URLRedirect url重定向漏洞也稱url任意跳轉(zhuǎn)漏洞,網(wǎng)站信任了用戶的輸入導(dǎo)致惡意攻擊,本文主要介紹了Java代碼審計(jì)之URL重定向的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • SpringBoot訪問(wèn)HTML過(guò)程詳解

    SpringBoot訪問(wèn)HTML過(guò)程詳解

    這篇文章主要詳細(xì)介紹了SpringBoot訪問(wèn)HTML的全過(guò)程,文章中有詳細(xì)的代碼和圖片講解,感興趣的同學(xué)可以參考一下
    2023-04-04
  • SpringBoot之自定義Filter獲取請(qǐng)求參數(shù)與響應(yīng)結(jié)果案例詳解

    SpringBoot之自定義Filter獲取請(qǐng)求參數(shù)與響應(yīng)結(jié)果案例詳解

    這篇文章主要介紹了SpringBoot之自定義Filter獲取請(qǐng)求參數(shù)與響應(yīng)結(jié)果案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

镇雄县| 丰县| 岗巴县| 庆阳市| 百色市| 建宁县| 赤水市| 华蓥市| 巫山县| 安宁市| 太保市| 响水县| 萍乡市| 天等县| 霍城县| 壶关县| 大埔区| 阿克苏市| 靖宇县| 清水河县| 舒城县| 新绛县| 定边县| 茶陵县| 盐源县| 江津市| 宜兴市| 西吉县| 赫章县| 济阳县| 天气| 罗甸县| 黄陵县| 府谷县| 东台市| 乃东县| 杨浦区| 清原| 团风县| 安徽省| 巍山|