欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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 動手寫單元測試進行驗證。

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

相關(guān)文章

  • Spring?Security認證的完整流程記錄

    Spring?Security認證的完整流程記錄

    相信大伙對Spring Security這個框架又愛又恨,愛它的強大,恨它的繁瑣,下面這篇文章主要給大家介紹了關(guān)于Spring?Security認證流程的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • Spring mvc文件上傳下載代碼實例

    Spring mvc文件上傳下載代碼實例

    這篇文章主要介紹了Spring mvc文件上傳下載代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot接入輕量級分布式日志框架(GrayLog)的操作方法

    SpringBoot接入輕量級分布式日志框架(GrayLog)的操作方法

    這篇文章主要介紹了SpringBoot接入輕量級分布式日志框架(GrayLog)的方法,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • java實現(xiàn)文件上傳和下載

    java實現(xiàn)文件上傳和下載

    這篇文章主要為大家詳細介紹了java實現(xiàn)文件上傳和下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • java 數(shù)據(jù)結(jié)構(gòu)與算法 (快速排序法)

    java 數(shù)據(jù)結(jié)構(gòu)與算法 (快速排序法)

    這篇文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu)與算法(快速排序法),,快速排序法是實踐中的一種快速的排序算法,在c++或?qū)ava基本類型的排序中特別有用,下面我們一起進入文章學(xué)習(xí)更詳細的內(nèi)容吧,需要的朋友可以參考下
    2022-02-02
  • Java中 this和super的用法與區(qū)別小結(jié)

    Java中 this和super的用法與區(qū)別小結(jié)

    在Java的學(xué)習(xí)與開發(fā)者我們經(jīng)常遇到this和super關(guān)鍵字,本文主要介紹了Java中 this和super的用法與區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • java多線程并發(fā)中使用Lockers類將多線程共享資源鎖定

    java多線程并發(fā)中使用Lockers類將多線程共享資源鎖定

    Lockers在多線程編程里面一個重要的概念是鎖定,如果一個資源是多個線程共享的,為了保證數(shù)據(jù)的完整性,在進行事務(wù)性操作時需要將共享資源鎖定,這樣可以保證在做事務(wù)性操作時只有一個線程能對資源進行操作,下面看一個示例
    2014-01-01
  • Java中對象快速復(fù)制的幾種方式詳解

    Java中對象快速復(fù)制的幾種方式詳解

    這篇文章主要介紹了Java中對象快速復(fù)制的幾種方式詳解,對象的克隆是指創(chuàng)建一個新的對象,且新的對象的狀態(tài)與原始對象的狀態(tài)相同,當對克隆的新對象進行修改時,不會影響原始對象的狀態(tài),需要的朋友可以參考下
    2023-08-08
  • SpringBoot實現(xiàn)掃碼登錄的示例代碼

    SpringBoot實現(xiàn)掃碼登錄的示例代碼

    本文主要介紹了SpringBoot實現(xiàn)掃碼登錄的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Spring?boot?啟動流程及外部化配置方法

    Spring?boot?啟動流程及外部化配置方法

    平時我們開發(fā)Spring boot 項目的時候,一個SpringBootApplication注解加一個main方法就可以啟動服務(wù)器運行起來,那它到底是怎么運行起來的呢?這篇文章主要介紹了Spring?boot?啟動流程及外部化配置,需要的朋友可以參考下
    2022-12-12

最新評論