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

Java實現(xiàn)PDF文件的分割與加密功能

 更新時間:2022年04月19日 15:31:10   作者:fhadmin  
這篇文章主要為大家分享了如何利用Java語言實現(xiàn)PDF文件的分割與加密以及封面圖的生成,文中的示例代碼簡潔易懂,感興趣的可以了解一下

由于``某些不可抗力原因,公司不允許使用itext系列的jar包,因此系統(tǒng)中使用的相關(guān)jar得替換成開源的。經(jīng)比較和嘗試考慮使用org.apache.pdfbox來替換,同時修改系統(tǒng)中原有的方法,發(fā)現(xiàn)比itext系列稍顯簡潔一點,記錄如下:

加密文件

/**
     * 加密文件測試
     * @from fhadmin.cn
     */
    @Test
    public void encryptTest(){
        try {
            String filePath = "D:\\test\\像李開復(fù)一樣思考人生.pdf";
            String password = "1234";
            PDDocument document = PDDocument.load(new File(filePath));
            StandardProtectionPolicy spp = new StandardProtectionPolicy(password, password,new AccessPermission());
            document.protect(spp);
            String newFilePath = "D:\\test\\像李開復(fù)一樣思考人生2.pdf";
            document.save(newFilePath);
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

切割文件

/**
     * 切割文件測試
     * @from fhadmin.cn
     */
    @Test
    public void extractTest(){
        try {
            String newFilePath = "D:\\test\\像李開復(fù)一樣思考人生2.pdf";
            String password = "1234";
            PDDocument document = PDDocument.load(new File(newFilePath), password);//帶密碼讀取
            //從第一頁截取到第二頁
            PageExtractor pageExtractor = new PageExtractor(document, 1, 2);
            PDDocument extract = pageExtractor.extract();
            extract.save("D:\\test\\像李開復(fù)一樣思考人生free.pdf");
            extract.close();
            document.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }

生成封面圖

/**
     * 切割文件測試
     * @from fhadmin.cn
     */
    @Test
    public void createCoverPicTest(){
        try {
            String pdfPath = "D:\\test\\像李開復(fù)一樣思考人生.pdf";
            File file = new File(pdfPath);
            //order目錄
            String orderPath = file.getParent();
            //轉(zhuǎn)換后的img目錄
            String bookName = file.getName().substring(0,file.getName().lastIndexOf("."));
            String imgPath = orderPath + File.separator +bookName+".png";
            log.debug("pdf封面圖生成成功:{}", imgPath);
            PDDocument pdDocument = PDDocument.load(new File(pdfPath));
            PDFRenderer renderer = new PDFRenderer(pdDocument);
            /* 第二位參數(shù)越大轉(zhuǎn)換后越清晰,相對轉(zhuǎn)換速度越慢 */
            BufferedImage image = renderer.renderImageWithDPI(0, 150);
            ImageIO.write(image, "png", new File(imgPath));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

總結(jié)一下,現(xiàn)在的工具都比較豐富了,不需要自己去造輪子,

step-1 去maven倉庫檢索同類型的包,比較一下熱度和使用人數(shù)

step-2 下載對應(yīng)包的source源代碼,看一下框架整體結(jié)構(gòu),里面都有哪些package和類,不知道類是干什么的,可以看一下類上面的注釋,一般都是比較簡單的英文

step-3 動手寫單元測試進(jìn)行驗證。

到此這篇關(guān)于Java實現(xiàn)PDF文件的分割與加密功能的文章就介紹到這了,更多相關(guān)Java 文件分割 加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring鉤子接口匯總分析使用示例

    Spring鉤子接口匯總分析使用示例

    Spring提供了非常多的擴(kuò)展接口,官方將這些接口稱之為鉤子,這些鉤子會在特定的時間被回調(diào),以此來增強(qiáng)Spring功能,眾多優(yōu)秀的框架也是通過擴(kuò)展這些接口,來實現(xiàn)自身特定的功能,如SpringBoot、mybatis等
    2023-01-01
  • Java中Hashtable類與HashMap類的區(qū)別詳解

    Java中Hashtable類與HashMap類的區(qū)別詳解

    Hashtable的應(yīng)用非常廣泛,HashMap是新框架中用來代替Hashtable的類,也就是說建議使用HashMap,不要使用Hashtable??赡苣阌X得Hashtable很好用,為什么不用呢?這里簡單分析他們的區(qū)別。
    2016-01-01
  • Java?導(dǎo)出Excel增加下拉框選項

    Java?導(dǎo)出Excel增加下拉框選項

    這篇文章主要介紹了Java?導(dǎo)出Excel增加下拉框選項,excel對于下拉框較多選項的,需要使用隱藏工作簿來解決,使用函數(shù)取值來做選項,下文具體的操作詳情,需要的小伙伴可以參考一下
    2022-04-04
  • java對同一個文件進(jìn)行讀寫操作方法

    java對同一個文件進(jìn)行讀寫操作方法

    在本篇文章里我們給大家詳細(xì)講述了java對同一個文件進(jìn)行讀寫操作的方法和知識點,需要的朋友們可以參考學(xué)習(xí)下。
    2018-10-10
  • java中struts 框架的實現(xiàn)

    java中struts 框架的實現(xiàn)

    本文給大家介紹的是java中struts 框架的實現(xiàn),有需要的小伙伴可以參考下。
    2015-06-06
  • Java多態(tài)成員訪問的特點是什么?

    Java多態(tài)成員訪問的特點是什么?

    在上一篇文章中介紹了方法重載和方法重寫的區(qū)別,但是在多態(tài)情況下發(fā)現(xiàn)程序的執(zhí)行結(jié)果和我們預(yù)期的不太一樣,這篇將繼續(xù)介紹多態(tài)場景下,Java成員訪問的特點,需要的朋友可以參考下
    2021-06-06
  • Java的SPI機(jī)制實例詳解

    Java的SPI機(jī)制實例詳解

    這篇文章主要介紹了Java的SPI機(jī)制實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java中File類中常用方法詳解

    Java中File類中常用方法詳解

    這篇文章主要為大家詳細(xì)介紹了File類中常用方法的程序演示,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java源碼解析之詳解ReentrantLock

    Java源碼解析之詳解ReentrantLock

    今天給大家?guī)淼氖顷P(guān)于Java并發(fā)的相關(guān)知識,文章圍繞著ReentrantLock源碼展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java基于socket實現(xiàn)的客戶端和服務(wù)端通信功能完整實例

    Java基于socket實現(xiàn)的客戶端和服務(wù)端通信功能完整實例

    這篇文章主要介紹了Java基于socket實現(xiàn)的客戶端和服務(wù)端通信功能,結(jié)合完整實例形式分析了Java使用socket建立客戶端與服務(wù)器端連接與通信功能,需要的朋友可以參考下
    2018-05-05

最新評論

布尔津县| 米泉市| 安图县| 房产| 垦利县| 伊金霍洛旗| 麻江县| 昆明市| 古浪县| 虞城县| 景洪市| 水城县| 常宁市| 绿春县| 犍为县| 高唐县| 茂名市| 洛扎县| 大关县| 北碚区| 湟源县| 吐鲁番市| 波密县| 郸城县| 宁安市| 专栏| 和平县| 常熟市| 香格里拉县| 兰州市| 抚州市| 奎屯市| 闵行区| 金沙县| 迁安市| 达日县| 百色市| 周口市| 宾阳县| 西青区| 七台河市|