java 使用itextpdf分割pdf文件,pdf分页

简介: itextpdf依赖

itextpdf依赖


<dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13.2</version>
        </dependency>

代码实现,  我这里是直接输出到response的响应流了,给前端页面分页查看pdf用,如果分割成多个pdf文件,可以输出到自己的FileOutputStream


PdfReader reader = null;
        PdfWriter writer = null;
        //获取文件输入流
        FileInputStream is = null;
        try (
                //获取响应输出流
                ServletOutputStream os = response.getOutputStream()
        ) {
            //截取文件名称
            String fileName = path.substring(path.lastIndexOf("\\"));
            //文件下载
            response.setHeader("content-disposition",
                    "attachment;fileName=" + new String(fileName.getBytes("gb2312"), StandardCharsets.ISO_8859_1));
            // 页码为0 下载整个文件
            if (pageNum == 0) {
                is = new FileInputStream(tbSysParamsMapper.selectById("FILEPATH").getValue() + "\\" + path);
                IoUtil.copy(is, os);
            } else {
                reader = new PdfReader(tbSysParamsMapper.selectById("FILEPATH").getValue() + "\\" + path);
                //总页数
                int pageCount = reader.getNumberOfPages();
                if (pageNum > pageCount) {
                    throw new MyException(RespCodeEnum.NOT_HAVE_PAGES);
                }
                Document dd = new Document(reader.getPageSize(pageNum));
                writer = PdfWriter.getInstance(dd, os);
                dd.open();
                PdfContentByte cb = writer.getDirectContent();
                dd.newPage();
                cb.addTemplate(writer.getImportedPage(reader, pageNum), 0, 0);
                dd.close();
                writer.close();
            }
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                reader.close();
            }
            if (writer != null) {
                writer.close();
            }
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
相关文章
|
21天前
|
Java 程序员 调度
Java|PageHelper 怎么自作主张帮我分页?
没有调用 PageHelper.startPage,查询怎么也被自动分页了?
13 2
|
29天前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
135 1
|
1月前
|
存储 Java API
如何使用 Java 中的 API 更改 PDF 纸张大小
如何使用 Java 中的 API 更改 PDF 纸张大小
42 11
|
1月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
405 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
1月前
|
Java
Java PDF模板生成PDF
Java PDF模板生成PDF
34 1
|
3月前
|
Java
Java系列之:字符串的截取及分割 split() 和 substring()
这篇文章通过示例代码讲解了Java中字符串的截取和分割操作,包括使用`split()`方法根据正则表达式进行字符串分割以及使用`substring()`方法进行字符串截取的不同使用方式及其输出结果。
Java系列之:字符串的截取及分割 split() 和 substring()
|
4月前
|
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`类调整。注意,实际应用会依据具体需求和环境有所调整。
284 6
|
3月前
|
Java
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
87 0
|
4月前
|
Java API Apache
如何在Java中实现PDF生成
如何在Java中实现PDF生成
|
3月前
|
XML Java BI
怎么通过itextpdf架包实现报表导出为pdf文件?
Java通过itextpdf架包实现报表导出为pdf文件