itext pdf 分页

本文介绍了一种将多个PDF文件合并成一个,并且保留原始文件中书签结构的方法。通过使用iText库,该过程涉及创建新的文档对象、添加页面内容、整合书签并调整页面编号。

            String filePath = "D:/test.pdf"

            int pageOffset = 0;
            ArrayList master = new ArrayList();
            Document document = null;
            PdfCopy writer = null;
           
            File file = new File(filePath);     
            FileOutputStream out = new FileOutputStream(file);
           
            for (int i = 0; i < receivingNo.size(); i++) {
             InventoryOrderListReport report = new InventoryOrderListReport();
             
             //start set report title values
          List<String> titleValue=new ArrayList<String>();
          if(searchBean.getTermianId()!=null&&!searchBean.getTermianId().trim().equals("")){
              SecuOptUnitBean optUnitBean=systemLocalService.getSecuOptUnitBean(searchBean.getTermianId());
              titleValue.add(optUnitBean==null?termialBlank:optUnitBean.getOptUnitName());
              titleValue.add(searchBean.getTermianId());
          }else{
           titleValue.add("ALL");
           titleValue.add("ALL");
          }
          
          if(searchBean.getClientCode().split(",").length>1){   
           titleValue.add("ALL");
          }else{
           String clientName=systemLocalService.getClientCompanyName(
             searchBean.getTermianId(), searchBean.getClientCode());
           titleValue.add(clientName);
          }
             
             titleValue.add(receivingNo.get(i));
          report.setTitleValue(titleValue);
          report.setTableValue(result);
          
                // we create a reader for a certain document
                byte[] resultPdf = report.runReport();
               
                PdfReader reader = new PdfReader(resultPdf);
                reader.consolidateNamedDestinations();
                // we retrieve the total number of pages
                int numberOfPages = reader.getNumberOfPages();
                List bookmarks = SimpleBookmark.getBookmark(reader);
                if (bookmarks != null) {
                    if (pageOffset != 0) {
                        SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null);
                    }
                    master.addAll(bookmarks);
                }
                pageOffset += numberOfPages;
                if (i == 0) {
                    // step 1: creation of a document-object
                    document = new Document(reader.getPageSizeWithRotation(1));
                    // step 2: we create a writer that listens to the document
                    writer = new PdfCopy(document, out);
                    // step 3: we open the document
                    document.open();
                }
                // step 4: we add content
                PdfImportedPage page;
                for (int index = 1; index <= numberOfPages; index++) {
                    page = writer.getImportedPage(reader, index);
                    writer.addPage(page);
                }
                writer.freeReader(reader);
            }
            if (master.size() > 0) {
                writer.setOutlines(master);
            }
            // step 5: we close the document
            document.close();

itextpdf是一个用于创建和操作PDF文档的开源Java库。它提供了丰富的功能和灵活性,可以满足各种生成和编辑PDF文件的需求。 在itextpdf中,生成PDF分页是通过设置页面布局和页面大小实现的。可以使用Rectangle类来创建页面大小,并使用Document类设置页面布局。要分页,可以使用Chunk或Phrase类来添加内容,并使用add()方法将它们添加到文档中。 首先,你需要创建一个Document对象,并使用PdfWriter类将其与PDF文件关联起来。然后,你可以通过设置页面大小和页面边距来调整文档的布局。接下来,你可以使用Font类和Paragraph类来设置内容的样式和格式。 在添加内容时,你可以使用Chunk或Phrase类来创建段落,并使用add()方法将它们添加到文档中。在每个页面的末尾,你可以使用newPage()方法创建新的页面,并在新页面上继续添加内容。 最后,你需要使用close()方法关闭文档,将其保存为PDF文件。 总结起来,itextpdf生成PDF分页的步骤如下: 1. 创建一个Document对象,并与PDF文件关联。 2. 设置页面大小和页面边距。 3. 使用Font类和Paragraph类设置内容的样式和格式。 4. 使用Chunk或Phrase类创建段落,并使用add()方法将它们添加到文档中。 5. 在每个页面的末尾,使用newPage()方法创建新的页面。 6. 使用close()方法关闭文档,将其保存为PDF文件。 希望这些信息对你有帮助。如果你需要更具体的实例或代码示例,可以参考引用提供的资料。<span class="em">1</span>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值