java PDF 加密 分割 和 生成封面图操作

简介: java PDF 加密 分割 和 生成封面图操作

由于``某些不可抗力原因,公司不允许使用itext系列的jar包,因此系统中使用的相关jar得替换成开源的。经比较和尝试考虑使用org.apache.pdfbox来替换,同时修改系统中原有的方法,发现比itext系列稍显简洁一点,记录如下:

加密文件

/**
     * 加密文件测试
     * @from fhadmin.cn
     */
    @Test
    public void encryptTest(){
        try {
            String filePath = "D:\\test\\像李开复一样思考人生.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\\像李开复一样思考人生2.pdf";
            document.save(newFilePath);
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

切割文件

/**
     * 切割文件测试
     * @from fhadmin.cn
     */
    @Test
    public void extractTest(){
        try {
            String newFilePath = "D:\\test\\像李开复一样思考人生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\\像李开复一样思考人生free.pdf");
            extract.close();
            document.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }

生成封面图

/**
     * 切割文件测试
     * @from fhadmin.cn
     */
    @Test
    public void createCoverPicTest(){
        try {
            String pdfPath = "D:\\test\\像李开复一样思考人生.pdf";
            File file = new File(pdfPath);
            //order目录
            String orderPath = file.getParent();
            //转换后的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);
            /* 第二位参数越大转换后越清晰,相对转换速度越慢 */
            BufferedImage image = renderer.renderImageWithDPI(0, 150);
            ImageIO.write(image, "png", new File(imgPath));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

总结一下,现在的工具都比较丰富了,不需要自己去造轮子,

step-1 去maven仓库检索同类型的包,比较一下热度和使用人数

step-2 下载对应包的source源代码,看一下框架整体结构,里面都有哪些package和类,不知道类是干什么的,可以看一下类上面的注释,一般都是比较简单的英文

step-3 动手写单元测试进行验证。

目录
相关文章
|
1月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
3天前
|
存储 算法 Java
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
这篇文章详细介绍了在Java项目中如何使用MD5算法对用户密码进行加密存储和登录验证,包括加入依赖、编写MD5工具类、注册时的密码加密和登录时的密码验证等步骤,并通过示例代码和数据库存储信息展示了测试效果。
在Java中使用MD5对用户输入密码进行加密存储、同时登录验证。
|
19天前
|
缓存 网络协议 算法
(二)Java网络编程之爆肝HTTP、HTTPS、TLS协议及对称与非对称加密原理!
作为一名程序员,尤其是Java程序员,那必须得了解并掌握HTTP/HTTPS相关知识。因为在如今计算机网络通信中,HTTP协议的作用功不可没,无论是日常上网追剧、冲���、亦或是接口开发、调用等,必然存在HTTP的“影子”在内。尤其对于WEB开发者而言,HTTP几乎是每天会打交道的东西。
45 10
|
1月前
|
存储 安全 Java
Java中使用加密盐
摘要(Markdown格式): 本文介绍了密码安全性中的加盐(Salt)技术,以对抗彩虹表攻击。彩虹表是预先计算的哈希值集合,能威胁到仅使用MD5等简单哈希的密码。加盐是在密码中加入随机字符串,提高破解难度。文章展示了Java代码示例,说明如何生成和验证加盐后的密码。使用Spring Security的BCryptPasswordEncoder也作为例子给出,它提供了内置的加盐和加密功能。即使密码相同,每次加盐后生成的密文都不同,增强了密码的安全性。
Java中使用加密盐
|
20天前
|
存储 Java 索引
Java ArrayList操作指南:如何移除并返回第一个元素
通过上述方法,你可以方便地从Java的 `ArrayList` 中移除并返回第一个元素。这种操作在日常编程中非常常见,是处理列表时的基本技能之一。希望这篇指南能帮助你更好地理解和运用Java的 `ArrayList`。
24 4
|
4天前
|
Java C# 数据安全/隐私保护
如何 使 Java、C# md5 加密的值保持一致
如何 使 Java、C# md5 加密的值保持一致
5 0
|
5天前
|
Java
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
12 0
|
1月前
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
|
1月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之使用ODPS Tunnel Upload功能时,遇到报错:Java 堆内存不足,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作