iText分割和合并pdf文件

合集下载

itext中文pdf说明

itext中文pdf说明

itext中文pdf说明iText是一种用于创建和处理PDF文件的开源Java库。

它提供了丰富的功能和灵活的接口,可以满足各种PDF处理需求。

本文将详细介绍iText库的特点、用法以及常见应用场景。

一、iText库简介iText是一款跨平台的Java库,旨在帮助开发人员轻松创建和处理PDF文件。

它提供了底层API和高级API,使用户能够灵活地操作PDF文件的各个方面,如内容创建、页面布局、文本格式、图片插入以及表单处理等。

二、iText的特点和优势1. 强大的功能:iText支持创建、合并、拆分和操作PDF文档。

它可以添加文本、图片、表格和图形,支持字体设置、样式和颜色定义,还可以添加书签、水印和数字签名等特性。

2. 多样化的输出形式:iText可以将PDF文件输出到多种形式,如文件、流、字节数组或网络流。

这使得iText非常适用于生成动态PDF文档或将PDF数据集成到其他应用程序中。

3. 兼容性强:iText兼容多种PDF版本,并能够处理不同版本之间的互转。

它支持PDF/A、PDF/X和PDF/UA等国际标准,以及中文、日文、韩文等复杂语言的编码。

4. 灵活易用的接口:iText提供了简单易用的API,使开发人员能够快速上手,轻松实现PDF文件的创建和处理。

用户可以根据自己的需求选择底层API或高级API进行操作。

5. 大量的文档和示例:iText官方网站上提供了大量的文档和示例代码,包括教程、API文档和示例应用程序。

这些资源能够帮助用户更好地理解和使用iText库。

三、iText的应用场景1. 报表生成:iText可以用于生成各种形式的报表,包括财务报表、销售报表、数据统计报表等。

用户可以灵活地设置报表的格式、样式和布局,使报表具有更好的可读性和美观性。

2. 文档处理:iText可以用于处理各种文档,如合同、发票、简历和证书等。

用户可以根据实际需求插入文字、图片和表格,还可以设置文档的页眉、页脚和页码等。

C# 使用 itextsharp 对pdf文件进行分割的几种方法(1)——按页码拷贝分割

C# 使用 itextsharp 对pdf文件进行分割的几种方法(1)——按页码拷贝分割
public void ExtractPages(string sourcePdfPath, string outputPdfPath, int startPage, int endPage) { PdfReader reader = null; Document sourceDocument = null; PdfCopy pdfCopyProvider = null; PdfImportedPage importedPage = null; try { reader = new PdfReader(sourcePdfPath); sourceDocument = new Document(reader.GetPageSizeWithRotation(startPage)); pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create)); sourceDocument.Open(); for (int i = startPage; i <= endPage; i++) { importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage); } sourceDocument.Close(); reader.Close(); } catch (Exception ex) { throw ex; } } 2、使用 AddTemplate()方法 private void copypdf(int StartPage, int EndPage, string file1, string splitFileName)//将file1中页码StartPage到EndPage的文件拷贝至splitFileName { iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(file1); Document document = new Document(reader.GetPageSizeWithRotation(StartPage)); //创建document对象 // string splitFileName = "D:\itextsharp_例子\split_pdf_ceshi4.pdf"; PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(splitFileName, FileMode.Create)); //实例化document对象 document.Open(); int rotation; PdfContentByte cb = writer.DirectContent; PdfImportedPage page; // for (int i = 1; i <= startPage; i++) while (StartPage <= EndPage) { document.SetPageSize(reader.GetPageSizeWithRotation(StartPage)); document.NewPage(); page = writer.GetImportedPage(reader, StartPage); rotation = reader.GetPageRotation(StartPage); if (rotation == 90 || rotation == 270) { //document.NewPage(); if (rotation == 90) { cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(StartPage).Height); } if (rotation == 270) { cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, reader.GetPageSizeWithRotation(StartPage).Width, 0); } } else { cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); } StartPage++; } try { document.Close(); reader = null; } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } 二、将已有pdf文件中 不连续 的页拷贝至新的pdf文件中。其中需要拷贝的页码存于数组 int[] extractThesePages中

itext使用方法

itext使用方法

itext使用方法iText是一个开源的Java库,用于创建和处理PDF文档。

以下是使用iText的常见方法:1. 创建一个文档对象:```javaDocument document = new Document();```2. 创建一个PdfWriter对象来将文档写入到文件或输出流:```javaPdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));```3. 打开文档:```javadocument.open();```4. 向文档中添加内容:- 添加文本:```javaParagraph paragraph = new Paragraph("Hello, iText!");document.add(paragraph);```- 添加表格:```javaPdfPTable table = new PdfPTable(3); // 创建一个三列的表格 table.addCell("Cell 1");table.addCell("Cell 2");table.addCell("Cell 3");document.add(table);```- 添加图片:```javaImage image = Image.getInstance("image.jpg");document.add(image);```5. 关闭文档:```javadocument.close();```这些是iText的基本用法,你可以根据需要进一步探索iText 的更高级特性和功能。

iText使用说明

iText使用说明

第一部分iText的简单应用第一章创建一个Document利用iText五步创建一个PDF文件:helloword。

第一步,创建一个 iTextSharp.text.Document对象的实例:Document document = new Document();第二步,为该Document创建一个Writer实例:PdfWriter.getInstance(document, new FileStream("Chap0101.pdf", FileMode.Create));第三步,打开当前Documentdocument.Open();第四步,为当前Document添加内容:document.Add(new Paragraph("Hello World"));第五步,关闭Documentdocument.Close();完整的代码见示例代码0101。

在例中,不难看出,制作一个PDF文件是非常简单的。

注:如果你将例中“document.Add(new Paragraph("Hello World"));”中的字符串“Hello Word”换成中文,如“这是我的第一个PDF文件”,产生的结果一定让你大失所望,因为生成的PDF文件中并没有将中文显示出来,不要担心,在第9章中要专门讲解字体问题,中文显示也就迎刃而解了,如果不能正确显示中文,也就没有必要翻译本文了。

下面对这几步做详细介绍。

第一步创建一个Document实例:iTextSharp.text.Document-object共有三个构造函数:public Document();public Document(Rectangle pageSize);public Document(Rectangle pageSize,int marginLeft,int marginRight,int marginTop,int marginBottom);第一个构造函数以A4页面作为参数调用第二个构造函数,第二个构造函数以每边36磅页边距为参数调用第三个构造函数◆页面尺寸:你可以通过指定的颜色和大小创建你自己的页面,示例代码0102创建一个细长的浅黄色背景的页面:Rectangle pageSize = new Rectangle(144, 720);pageSize.BackgroundColor = new Color(0xFF, 0xFF, 0xDE);Document document = new Document(pageSize);通常,你不必创建这样的页面,而可以从下面页面尺寸中选择:A0-A10, LEGAL, LETTER, HALFLETTER, _11x17, LEDGER, NOTE, B0-B5, ARCH_A-ARCH_E, FLSA 和 FLSE大多数情况下使用纵向页面,如果希望使用横向页面,你只须使用rotate()函数:Document document = new Document(PageSize.A4.rotate());详细代码见示例代码0103。

使用itextpdf解决PDF合并的问题

使用itextpdf解决PDF合并的问题

使⽤itextpdf解决PDF合并的问题itextpdf解决PDF合并的问题本⽂章是我在项⽬开发过程中解决了⼀个关于PDF显⽰的需求⽽记录的。

需求是这样的,需要将两个PDF进⾏合并,⼀个PDF是根据数据库的信息在在后台形成的(实际不存在的PDF),另⼀个是磁盘保存的PDF⽂件(这个PDF⽂件后期会变成从云端获取)。

作为⼀个Java菜鸟,这个问题解决了数天,还是在leader的指导下解决的。

在这⾥做⼀下关键代码的记录。

项⽬主要包含了以下关键词:(我不做详解了,主要是⽤了这些)- Spring MVC、Spring、Hibernate- Maven- Java- itextpdf- MySQL- JavaWeb相关⾸先是itextpdf的依赖<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency>如何在后台⽣成⼀个PDF这个问题,百度上有很多解决⽅案,因为我需要将这个⽣成的PDF和已存在的PDF拼接,于是尝试了多种⽅案,决定将这个以⽂档的形式,将这个⽂档转为字节数组,然后⽤itextpdf将流读取到PDF中。

⽣成PDF的部分代码:import java.io.ByteArrayOutputStream;import er;import com.itextpdf.text.BaseColor;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Element;import com.itextpdf.text.Font;import com.itextpdf.text.Paragraph;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfContentByte;import com.itextpdf.text.pdf.PdfPCell;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfReader;import com.itextpdf.text.pdf.PdfWriter;import com.itextpdf.text.pdf.parser.PdfReaderContentParser;public class ReportKit {public static byte[] createReport(User user) throws Exception {ByteArrayOutputStream ba = new ByteArrayOutputStream();Document doc = new Document();//创建⼀个document对象PdfWriter writer = PdfWriter.getInstance(doc, ba);//这个PdfWriter会⼀直往⽂档⾥写内容。

itext pdfcell方法

itext pdfcell方法

在 iText 库中,PdfCell类是用于表示 PDF 表格中的单元格的类。

PDF 单元格是表格中的一个元素,可以包含文本、图像和其他元素。

PdfCell提供了一系列方法,用于设置单元格的内容、样式和属性。

以下是一些常用的PdfCell方法及其作用:1.构造方法:PdfCell类有多个构造方法,其中最基本的一个参数的构造方法如下:通过传递一个PdfString对象,可以创建一个包含文本内容的 PDF 单元格。

2.设置文本内容:通过传递一个Phrase对象,可以设置单元格的文本内容。

3.设置边框:通过传递一个Rectangle对象,可以设置单元格的边框样式,例如无边框、实线边框等。

4.设置水平对齐和垂直对齐:通过设置水平对齐和垂直对齐,可以控制单元格中内容的对齐方式。

5.设置背景颜色:通过设置背景颜色,可以为单元格添加背景色。

6.设置单元格合并:通过设置rowspan和colspan,可以合并单元格,跨越多行或多列。

7.设置边框宽度:通过设置边框宽度,可以调整边框的线宽。

8.设置字体:通过设置字体,可以调整单元格中文本的字体样式。

9.设置内边距:通过设置内边距,可以控制单元格内容与边框的距离。

10.设置固定高度:通过设置固定高度,可以确保单元格的高度固定,不受内容自动调整影响。

11.设置旋转:通过设置旋转角度,可以使单元格内容进行旋转。

这只是一小部分PdfCell类的方法。

使用这些方法,你可以定制化表格中的单元格,控制其样式和内容。

记得在生成 PDF 文档时将单元格添加到表格中,最终将表格添加到文档中。

Itext操作PDF

Itext操作PDF
4.添加单元格
Paragraph paragraph = newParagraph("用户表",font); //定义一个字段 PdfPCell cell = newPdfPCell(paragraph);//定义一个单元格,像表格内添加字段 table.addCell(cell); //把单元加到表格中
3.在项目中什么时候使用itext?
一般情况下, itext的使用是在以下一个或者多个要求的项目中使用: 1. 内容不固定无法提前利用,它是基于用户的输入或实时数据库信息计算 2. 由于内容,页面过多, PDF文档不能手动生成。 3. 文档需在无人参与,批处理模式下自动创建 4. 内容需要自定义或个性化,如:客户的名字需要打印到某一页
7.在PDF中添加表格
表格的属性:
1.宽度:
① table.setWidthPercentage(50);//设 置 表 格 的 宽 度 , 按 百 分 比 缩 放 ② table.setTotalWidth(100);//设 置 表 格 的 宽 度
table.setLockedWidth(true);//将 设 置 的 宽 度 锁 定 , 和 totalwidth结 合 使 用 。
cell.setBorderWidth(0); cell.setBorderWidthBottom(0); cell.setBorderWidthTop(0); cell.setBorderWidthBottom(0); cell.setBorderWidthRight(0); cell.setBorderWidthLeft(0);
FontFactory.getFont(FontFactory.HELVETICA, 12))); //创建一个段落,向段落中加入短句 Paragraph p2 = new Paragraph(new Phrase("This is my second paragraph.",

分割合并pdf

分割合并pdf

分割合并pdf
分割和合并是常见的操作,可以用于不同类型的数据和文件处理。

分割可以将一个大的数据或文件拆分成多个小的部分,以便更方便地进行处理、传输或存储。

例如,你可以将一个大型视频文件分割成几个较小的部分,以便在网络上传输或在不同设备上播放。

在计算机编程中,你也可以对字符串进行分割操作。

可以根据指定的分隔符将一个字符串分割成多个子字符串,并存储在一个数组或列表中。

这在处理文本数据时非常有用,例如将一段文本按照句子或单词进行分割。

合并则是将多个小的部分或文件合并成一个大的整体。

例如,你可以将多个音频片段合并成一个完整的音频文件,或将多个文档合并成一个大的文档。

在编程中,你可以使用相应的函数或方法来实现分割和合并的操作。

具体的实现方式取决于你使用的编程语言和所处理的数据类型。

总结起来,分割和合并是常见的数据处理操作,可以帮助我们更好地管理和处理大型数据或文件。

无论是在日常生活中还是在计算机编程中,它们都是非常有用的工具。

itext7 方法解释

itext7 方法解释

itext7 方法解释iText 7 是一个用于处理 PDF 文档的 Java 库。

以下是 iText 7 中的一些常用方法及其解释:1.Document类中的方法:⏹add(Content): 将内容添加到文档中。

⏹close(): 关闭文档并保存更改。

⏹setPageCount(int): 设置文档的页数。

⏹add(Image): 将图像添加到文档中。

⏹add(Paragraph): 将段落添加到文档中。

⏹add(List): 将列表添加到文档中。

⏹add(Table): 将表格添加到文档中。

1.Paragraph类中的方法:⏹add(Content): 向段落中添加内容。

⏹add(Text): 向段落中添加文本。

⏹add(Image): 向段落中添加图像。

⏹add(List): 向段落中添加列表。

⏹add(Table): 向段落中添加表格。

1.Image类中的方法:⏹setWidth(float): 设置图像的宽度。

⏹setHeight(float): 设置图像的高度。

⏹scaleToFit(float, float): 缩放图像以适应指定的宽度和高度。

1.List类中的方法:⏹add(ListItem): 向列表中添加项目。

⏹setSymbol(String): 设置列表符号的类型。

⏹setNumberStyle(String): 设置列表编号的样式。

1.Table类中的方法:⏹addCell(Cell): 向表格中添加单元格。

⏹setWidthPercentage(int): 设置表格的宽度百分比。

⏹setSpacing(int): 设置表格单元格之间的间距。

1.其他常用方法:⏹ColorConstants.BLACK: 获取黑色颜色对象。

⏹FontConstants.HELVETICA_BOLD: 获取粗体Helvetica字体对象。

⏹PdfDocument.createNew(): 创建一个新的PDF文档对象。

itextPDF使用笔记

itextPDF使用笔记

itextPDF使⽤笔记最近在做报表打印,使⽤的是itextPDF,第⼀次⽤到它,简单做个笔记。

主要涉及到字体设置,⽂字处理操作,表格及单元格设置,绘制⼀些图形IText中有三个处理text的类com.lowagie.text.Chunk,com.lowagie.text.Phrase,com.lowagie.text.Paragraph。

document.setPageSize(PageSize.A4.rotate());// A4横向打印document.newPage(); //另起⼀页⾯document.add(new Paragraph(" ", CUtility.getSun(4)));//间接到达换⾏效果关于表格宽度,单元格宽度的设置PDF画表格,确定表格每⼀列的宽度和表格总宽度// 中间表格部分for (int i = 0; i < 7; i++) {document.add(new Paragraph(" ", CUtility.getSun(10))); //Cutility为我操作PDF的⼀个⼯具类 }float[] widths = { 70, 95, 55, 95, 55, 90 };// 460PdfPTable table = new PdfPTable(widths); //确定每⼀列的宽度table.setLockedWidth(true); //锁定表格宽度 int tableWidth = 0;for (int i = 0; i < widths.length; i++)tableWidth += widths[i];table.setTotalWidth(tableWidth); //设定表格总宽度table.setHorizontalAlignment(Element.ALIGN_CENTER); //设置表格内的内容⽔平居中详细内容添加完之后想在表格下⾯接着画⼀个宽度⼀样的表格等分成三列table = new PdfPTable(3);//设置⼀个三列的表格,均分table.setTotalWidth(765);//设置表格总宽度//不想均分也可以对每列进⾏设置table.setTotalWidth(new float[] { 200, 300, 265 });//或者:table.setTotalWidth(765);table.setWidth(new int[]{200,300,265});table.setLockedWidth(true);//设置锁定表格宽度关于表格单元格常⽤APIPdfPCell pdfCell = new PdfPCell(); // 表格的单元格pdfCell.setMinimumHeight(rowHeight);// 设置表格⾏⾼pdfCell.setHorizontalAlignment(Element.ALIGN_CENTER);//⽔平居中pdfCell.setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中pdfCell.setRowspan(2);//合并2⾏pdfCell.setColspan(2);//合并2列pdfCell.setMinimumHeight(70);//设置最⼩⾼度pdfCell.setBackgroundColor(BaseColor.ORANGE);//设置背景颜⾊pdfCell.setBorder(Rectangle.NO_BORDER);//设置⽆边框pdfCell.setBorder(0);//设置⽆边框如何给⽂字加下划线:Chunk chunk = new Chunk(" " + num_1 + " ");chunk.setUnderline(0.1f, -2f);// 下划线paragraph = new Paragraph("\r\n 以上共计 ", CUtility.getKai());paragraph.add(chunk);操作itextPDF的⼯具类package mon;import java.text.NumberFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Collections;import java.util.Date;import java.util.UUID;import com.itextpdf.text.Element;import com.itextpdf.text.Font;import com.itextpdf.text.Paragraph;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfPCell;public class CUtility {private static final char[] numArray = { '零', '⼀', '⼆', '三', '四', '五', '六', '七', '⼋', '九' };private static final int fontSize = 12;public static final int UNIT_STEP = 4; // 单位进位,中⽂默认为4位即(万、亿)public static final String[] CN_UNITS = new String[] { "个", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" }; public static final String[] CN_CHARS = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };/*** 将阿拉伯数字转换为中⽂数字123=》⼀⼆三** @param srcNum* @return*/public static String getCNNum(int srcNum) {String desCNNum = "";if (srcNum <= 0)desCNNum = "零";else {int singleDigit;while (srcNum > 0) {singleDigit = srcNum % 10;desCNNum = String.valueOf(numArray[singleDigit]) + desCNNum;srcNum /= 10;}}return desCNNum;}/*** 将⽇期转化为上中下旬** @param inDate* @return*/public static String get10DayClass(String inDate) {String returnCode = "⽉下旬";Calendar cal = Calendar.getInstance();try {cal.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(inDate));} catch (ParseException e) {e.printStackTrace();}int day = cal.get(Calendar.DATE);if (day < 11)returnCode = "⽉上旬";else if (day < 21)returnCode = "⽉中旬";returnCode = cal.get(Calendar.YEAR) + "年" + String.valueOf(cal.get(Calendar.MONTH) + 1) + returnCode;return returnCode;}/*** 格式化KindEditor中输⼊的字符串,进⾏显⽰和输出** @param content* @return*/public static String formatEditorStr(String c8) {c8 = c8.replaceAll(" ", "");c8 = c8.replaceAll("\r", "");c8 = c8.replaceAll("\n", "");c8 = c8.replaceAll("<p>", "");c8 = c8.replaceAll("</p>", "");c8 = c8.replaceAll("<br/>", "\r\n");return c8;}/*** 打印中的楷体** @return* @throws Exception*/public static Font getKai() throws Exception {return getKai(fontSize, Font.NORMAL);public static Font getKai(int fontSize) throws Exception {return getKai(fontSize, Font.NORMAL);}public static Font getKai(int fSize, int fonStyle) throws Exception {fSize = fSize > 0 ? fSize : fontSize;return getFont(fSize, fonStyle, "simkai.ttf");}/*** 打印中的⿊体** @return* @throws Exception*/public static Font getHei() throws Exception {return getHei(fontSize, Font.NORMAL);}public static Font getHei(int fontSize) throws Exception {return getHei(fontSize, Font.NORMAL);}public static Font getHei(int fSize, int fonStyle) throws Exception {fSize = fSize > 0 ? fSize : fontSize;return getFont(fSize, fonStyle, "simhei.ttf");}/*** 打印中的宋体** @return* @throws Exception*/public static Font getSun() throws Exception {return getSun(fontSize, Font.NORMAL);}public static Font getSun(int fontSize) throws Exception {return getSun(fontSize, Font.NORMAL);}public static Font getSun(int fSize, int fonStyle) throws Exception {fSize = fSize > 0 ? fSize : fontSize;return getFont(fSize, fonStyle, "simsun.ttc,1");}/*** 打印中的word字体** @return* @throws Exception*/public static Font getWSun() throws Exception {return getWSun(fontSize, Font.NORMAL);}public static Font geWSun(int fontSize) throws Exception {return getWSun(fontSize, Font.NORMAL);}public static Font getWSun(int fSize, int fonStyle) throws Exception {fSize = fSize > 0 ? fSize : fontSize;return getFont(fSize, fonStyle, "WINGDNG2.ttf");}private static Font getFont(int fontSize, int fonStyle, String fontName) throws Exception {BaseFont bfChinese = BaseFont.createFont(ServerInfo.getInstance().getFontPath() + fontName, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Font fontChinese = new Font(bfChinese, fontSize, fonStyle);return fontChinese;}/*** 打印时需要的Cel** @param content* @param font* @return*/public static PdfPCell getCell(String content, Font font) {}public static PdfPCell getCell(String content, Font font, int rowsSpan, int colsSpan) {return getCell(content, font, rowsSpan, colsSpan, 30);}public static PdfPCell getCell(String content, Font font, int rowsSpan, int colsSpan, int rowHeight) { PdfPCell pdfCell = new PdfPCell(); // 表格的单元格pdfCell.setMinimumHeight(rowHeight);// 设置表格⾏⾼pdfCell.setHorizontalAlignment(Element.ALIGN_CENTER);pdfCell.setVerticalAlignment(Element.ALIGN_MIDDLE);if (rowsSpan > 1)pdfCell.setRowspan(rowsSpan);if (colsSpan > 1)pdfCell.setColspan(colsSpan);pdfCell.setPhrase(new Paragraph(content, font));return pdfCell;}/*** 格式化输出为Span标签** @param title* @param value* @param type* @return*/public static String setBadge(String title, String value, int type) {String returnCode = " <span class='layui-badge";switch (type) {case 0:returnCode += "'>";break;// ⾚case 1:returnCode += " layui-bg-orange'>";break;// 橙case 2:returnCode += " layui-bg-green'>";break;// 绿case 3:returnCode += " layui-bg-cyan'>";break;// 青case 4:returnCode += " layui-bg-blue'>";break;// 蓝}returnCode += "" + title + "" + value + "</span> ";return returnCode;}/*** 获取本地中⽂货币显⽰样式** @param currency* @return*/public static String getLocalCurrency(String currency) {double currcencyNum = 0;try {currcencyNum = Double.parseDouble(currency);} catch (Exception e) {}return getLocalCurrency(currcencyNum);}public static String getLocalCurrency(double currency) {NumberFormat numberFormat = NumberFormat.getNumberInstance();return "¥ " + numberFormat.format(currency);}/*** 获取系统当前时间** @return*/public static String genCD() {return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());}/*** 获取系统唯⼀码* @return*/public static String genUUID() {return UUID.randomUUID().toString().toUpperCase().replaceAll("-", "");}/*** 数值转换为中⽂字符串(⼝语化)* @param isColloquial* 是否⼝语化。

itextpdf7 pdfxobject 裁切

itextpdf7 pdfxobject 裁切

itextpdf7 pdfxobject 裁切使用iText7的PdfXObject类裁切PDF文件,需要经过以下步骤:创建一个PdfReader对象,用于读取原始PDF文件。

java复制代码PdfReader reader = new PdfReader("src/main/re sources/input.pdf");创建一个PdfWriter对象,用于将裁切后的PDF写入输出流。

创建一个PdfWriter对象,用于将裁切后的PDF写入输出流。

java复制代码OutputStream os = new FileOutputStream("src/m ain/resources/output.pdf"); PdfWriter writer = ne w PdfWriter(os);创建一个PdfDocument对象,用于管理PDF文档的创建和销毁。

PdfWriter writer = new PdfWriter(os);创建一个PdfDocument对象,用于管理PDF文档的创建和销毁。

创建一个PdfDocument对象,用于管理PDF文档的创建和销毁。

java复制代码PdfDocument pdfDoc = new PdfDocument(reader, writer);创建一个PdfXObject对象,用于表示裁切路径。

你可以使用PdfContentByte类来绘制裁切路径。

创建一个PdfXObject对象,用于表示裁切路径。

你可以使用PdfContentByte类来绘制裁切路径。

java复制代码Rectangle rect = new Rectangle(36, 36, 200, 200); // 定义裁切区域 PdfXObject xobject = PdfXObject.createNew(pdfDoc, rect);在裁切路径上绘制一个矩形,并使用contentByte类的SetColorNonStroking方法设置填充颜色。

ItextSharp将多张pdf内容合并至一个pdf中

ItextSharp将多张pdf内容合并至一个pdf中

ItextSharp将多张pdf内容合并⾄⼀个pdf中此详例主要是借助使⽤ReportViewer控件⾃带的Render⽅法将⽂件流读取⾄创建的pdf⽂件简单介绍ReportViewer控件的使⽤⾸先拖拽⼀个reportViewer控件,并设置显⽰样式其中标签LocalReport控件中的ReportPath属性值需要填写添加的报表⽂件所在的相对路径在添加报表⽂件时,添加的参数对象名和数据集的名字要和赋值处的名字保持⼀致(打开vs菜单栏的视图》报表数据可具体设置)为确保pdf⽂件的美观,可在vs菜单栏的报表》报表属性可具体设置pdf⽂件样式<div style="word-break: break-all"><rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="14px" InteractiveDeviceInfos="(集合)" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt"Width="1000px" Height="600px" ShowBackButton="False" ShowPageNavigationControls="False" ><LocalReport ReportPath="..\ShowInvoiceDetail.rdlc" ></LocalReport></rsweb:ReportViewer></div>//配置数据源类型必须为list类型this.ReportViewer1.LocalReport.DataSources.Clear();this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", currentInvoice));this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", currentInvoiceDetail));this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet3", cpyInfo));ReportParameter[] p = new ReportParameter[6]; //定义传递参数p[0] = new ReportParameter("CapTotal", capTotal);p[1] = new ReportParameter("Total", total);p[2] = new ReportParameter("AmountSumString", OutputVATBLL.DecimalRound.Round(amountSum));p[3] = new ReportParameter("TaxationSumString", OutputVATBLL.DecimalRound.Round(taxationSum));p[4] = new ReportParameter("UserName", userName);p[5] = new ReportParameter("DescriptionString", currentInvoice[0].Description == null ? "" : currentInvoice[0].Description); ReportViewer1.LocalReport.SetParameters(p);//设置传递参数ReportViewer1.ShowParameterPrompts = false;ReportViewer1.LocalReport.Refresh();//刷新报表ReportViewer1.Visible = true;将多个pdf⽂件合并⾄⼀个pdf⽂件的具体实现详例第⼀步:添加引⽤⽂件备注:使⽤iTextSharp将多张pdf内容合并到⼀个pdf中需要应⽤⼀下⽂件using iTextSharp.text;using iTextSharp.text.pdf;第⼆步:protected void ExportPdfBtn_Click(object sender, EventArgs e){string filename =Guid.NewGuid().ToString();string oType = "PDF";try{string tmpDirPath = Server.MapPath("../../PdfFiles/TempFiles");DeleteAllPdf(tmpDirPath);ResponseFile(oType, filename);}catch (Exception ex){AlertExceptionString(Page,ex);return;}}public void ResponseFile(string fType, string fileNameString){try{string dirPath = Server.MapPath("../../PdfFiles");if (!Directory.Exists(dirPath)){Directory.CreateDirectory(dirPath);}string tmpDirPath = Server.MapPath("../../PdfFiles/TempFiles");if (!Directory.Exists(tmpDirPath)){Directory.CreateDirectory(tmpDirPath);}string returnFilePath = dirPath + "\\" + fileNameString + ".Pdf";if (File.Exists(returnFilePath)){File.Delete(returnFilePath);}//获取地址栏参数var codeList = Request["CodeStrs"];//转换数据var codeArr = codeList.Split(',');for (var i = 1; i <= codeArr.Length; i++){var guid = Guid.NewGuid().ToString();string createFilePath = tmpDirPath + "\\" + guid + ".Pdf";if (File.Exists(createFilePath)){File.Delete(createFilePath);}Warning[] warnings;string[] streamids;string mimeType = "";string encoding = "";string extension = "";byte[] bytes;List<byte[]> list = new List<byte[]>();FileStream fs = new FileStream(createFilePath, FileMode.Create);BindReportData(i);//此处⽤的是ReportViewer控件⾃带的读取字符流的⽅法bytes=ReportViewer1.LocalReport.Render(fType, null, out mimeType, out encoding, out extension, out streamids, out warnings);fs.Write(bytes, 0, bytes.Length);//使⽤从缓冲区读取的数据将字节块写⼊该流。

itext pdfmerger用法

itext pdfmerger用法

itext pdfmerger用法《itext pdfmerger用法》itext pdfmerger是一种方便的工具,可以帮助用户合并多个PDF文件为一个单独的文件。

它提供了一种简单而有效的方法来处理PDF文件,无论是在个人使用还是商业环境中都非常有用。

使用itext pdfmerger非常简单。

首先,用户需要下载和安装itext PDFMerger工具。

然后,他们可以通过以下几个步骤来使用它:1. 打开itext pdfmerger工具。

通常,这个程序会有一个直观的用户界面,使得操作非常简单。

2. 选择要合并的PDF文件。

用户可以通过“添加文件”选项或者直接拖放文件到程序中来选择需要合并的PDF文件。

3. 调整文件顺序。

如果需要重新排列PDF文件,用户可以通过拖放文件的方式来调整它们的顺序。

4. 执行合并操作。

一旦所有需要合并的文件都被添加到程序中,并且顺序被调整完毕,用户就可以点击“合并”或“完成”按钮来启动合并操作。

5. 保存新的PDF文件。

完成合并操作后,用户需要选择保存新的合并后的PDF文件的位置和名称。

这样就完成了整个合并过程。

使用itext pdfmerger工具来合并多个PDF文件非常方便。

它可以帮助用户节省时间和精力,同时确保合并后的文件的质量。

不仅如此,itext pdfmerger还提供了一些高级功能,比如对合并后的PDF文件进行加密、压缩或者设置权限等。

总的来说,《itext pdfmerger用法》对于需要处理PDF文件的用户来说是一个非常有用的工具,无论是个人使用还是商业环境中都会大大提高工作效率。

希望更多的人可以充分了解并且善于使用这个工具。

itextsharp中pdfcopy的用法

itextsharp中pdfcopy的用法

itextsharp中pdfcopy的用法一、简介iTextSharp是一个用于处理PDF文档的开源库,它提供了许多功能,包括从PDF文件中提取文本、合并PDF文件、添加水印等。

其中,pdfcopy方法可用于将一个PDF文件中的文本复制到另一个PDF文件中。

二、用法1.导入iTextSharp库首先,需要在项目中导入iTextSharp库。

可以在NuGet包管理器中搜索并安装该库。

2.创建PdfReader对象使用PdfReader类可以从PDF文件中读取内容。

需要提供要读取的PDF文件的路径和起始页码。

3.创建PdfStamper对象使用PdfStamper类可以将提取的文本写入新的PDF文件中。

需要提供PdfReader对象和目标文件的路径。

4.使用pdfcopy方法使用pdfcopy方法可以将源文件中的文本复制到目标文件中。

需要指定源文件和目标文件的路径,以及是否保留源文件中的字体和格式等信息。

示例代码:```csharpusingiTextSharp.text;usingiTextSharp.text.pdf;//创建PdfReader对象using(FileStreamstream=newFileStream("source.pdf",FileMode.Open)) {PdfReaderreader=newPdfReader(stream);PdfStamperstamper=newPdfStamper(reader,newFileStream("target.pdf",F ileMode.Create));//使用pdfcopy方法复制文本stamper.copyPages(1,reader.NumberOfPages,reader,stamper.getWriter() ,true);//将第一页到最后一页复制到目标文件中,保留字体和格式信息}```三、注意事项1.确保已安装iTextSharp库并导入相关的命名空间。

itextsharp方法对象

itextsharp方法对象

itextsharp方法对象【原创版4篇】目录(篇1)1.引言2.iTextSharp 方法对象的概述3.iTextSharp 方法对象的常见用途4.iTextSharp 方法对象的实例5.结论正文(篇1)1.引言iTextSharp 是一个用于处理 PDF 文件的强大库,它提供了许多方便的方法来操作 PDF 文档。

在这篇文章中,我们将介绍 iTextSharp 方法对象的概念以及它们的常见用途。

2.iTextSharp 方法对象的概述iTextSharp 方法对象实际上是对 iTextSharp 类中特定方法的封装。

通过使用这些方法对象,开发人员可以更方便地执行常见的 PDF 操作,如合并、拆分、旋转和裁剪页面等。

方法对象可以提高代码的可读性和可维护性,因为它们可以将复杂的操作抽象为简单的对象。

3.iTextSharp 方法对象的常见用途iTextSharp 方法对象通常用于以下场景:- 合并多个 PDF 文件- 拆分 PDF 文件- 旋转或裁剪 PDF 页面- 添加或删除 PDF 页面- 添加文本、图像或形状到 PDF 页面- 从 PDF 文件中提取文本或元数据4.iTextSharp 方法对象的实例下面是一个使用 iTextSharp 方法对象合并两个 PDF 文件的实例:```csharpusing iTextSharp;using iTextSharp.pdf;public class MergePdfs {public static void Main() {string file1 = "path/to/first/pdf";string file2 = "path/to/second/pdf";string output = "path/to/output/pdf";MergePdfs mergePdfs = new MergePdfs();Document document = mergePdfs.Merge(file1, file2, output);document.Save(output);}public Document Merge(string file1, string file2, string output) {Document document = new Document();PdfReader reader1 = new PdfReader(file1);PdfReader reader2 = new PdfReader(file2);for (int i = 1; i <= reader1.NumberOfPages; i++) { document.Add(reader1.GetPage(i));}for (int i = 1; i <= reader2.NumberOfPages; i++) { document.Add(reader2.GetPage(i));}return document;}}```在上面的示例中,我们创建了一个名为 MergePdfs 的类。

itextpdf裁剪pdf的java代码

itextpdf裁剪pdf的java代码

itextpdf裁剪pdf的java代码iText是一个非常强大的Java库,它可以用来创建、修改和操作PDF文件。

然而,iText本身并不直接支持PDF裁剪。

你需要通过其他方式来实现这个功能。

一个可能的解决方案是使用PDFBox库,它是一个更强大的Java PDF库,它包括裁剪PDF的功能。

下面是一个简单的使用PDFBox来裁剪PDF的示例代码:javaimport org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import mon.PDRectangle;public class PDFCropExample {public static void main(String[] args) {try {PDDocument document = PDDocument.load(new File("path_to_your_file"));for (PDPage page : document.getPages()) {PDRectangle pageSize = page.getMediaBox();float x = 100; // change the x-coordinate as per your requirement float y = 100; // change the y-coordinate as per your requirement float width = 500; // change the width as per your requirement float height = 500; // change the height as per your requirement PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);contentStream.startStroking().moveTo(x, y).lineTo(x + width, y).lineTo(x + width, y + height).lineTo(x, y + height).closePath();contentStream.stroke();contentStream.close();}document.save("cropped_document"); // the cropped document will be saved heredocument.close();} catch (Exception e) {e.printStackTrace();}}}这个代码会加载一个PDF文件,遍历其中的每一页,然后在每一页上画一个矩形,矩形的位置和大小由你设定。

C#-iTextSharp合并PDF,带页码

C#-iTextSharp合并PDF,带页码

C#-iTextSharp合并PDF,带页码⾸先需要3个引⽤using System.IO;using iTextSharp.text;using iTextSharp.text.pdf;完整场景是这样:1- 我把所有的PDF⼦⽂件存放的某个⽬录下2-从数据库按条件查询出来的每个实体都带有⼀个字段,对应的是⼦pdf存放的位置pdf⽂件的名称,设为pdfName3-需要把按条件查询出来的所有⼦pdf⽂件合并成⼀个⼤的pdf⽂件,4-合并的⼤的pdf⽂件,需要按要求加上页码///<summary>///合并PDF并且产⽣页码///</summary>///<param name="data"></param>void MergePDFFilesWithPageNumber(List<实体类> data){ string OrderNO = Request.QueryString["OrderNO"]; //最后合成的PDF⽂件要存放的⽂件⽬录 string reportPath = Server.MapPath("~/upload/Report/"); //最后合成的PDF⽂件的⽂件名 string reportName = "XXXXXX_Report.pdf"; //最后合并的PDF的完整地址 string mergePDFFiles = reportPath + reportName; //如果⽬录不存在,创建⽬录 if (!Directory.Exists(reportPath)) { Directory.CreateDirectory(reportPath); } //如果⽂件已存在,把原来的删除 if (File.Exists(reportPath + reportName)) { File.Delete(reportPath + reportName); } //这是⼦pfd⽂件存放的⽂件⽬录地址(所有⼦pdf⽂件都存放在这个⽬录下) string filePdfPath = Server.MapPath("~/upload/TemplateFile/PDF/" + OrderNO.Replace("*", "-")); #region使⽤iTextSharp合并PDF //在总PDF的存放位置创建⼀个新的PDF iTextSharp.text.Document DOC = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate()); PdfWriter writer = PdfWriter.GetInstance(DOC, new FileStream(mergePDFFiles, FileMode.Create)); DOC.Open(); iTextSharp.text.Rectangle re; PdfContentByte cb = writer.DirectContent; PdfImportedPage newPage; //页码的字体,⼤⼩样式 BaseFont bfHei = BaseFont.CreateFont(@"C:\Windows\Fonts\simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font font = new Font(bfHei, 10); for (int i = 0; i < data.Count; i++) { //读取每个⼦PDF⽂件 PdfReader reader = new PdfReader(filePdfPath + "/" + data[i].pdfName); //单个⼦PDF⽂件的页数 int iPageNum = reader.NumberOfPages; //将每个⼦pdf的每⼀页插⼊到新创建的总PDF⽂件⾥,根据需要增加页⾯ for (int j = 1; j <= iPageNum; j++) { re = reader.GetPageSize(reader.GetPageN(j)); DOC.SetPageSize(re); DOC.NewPage(); newPage = writer.GetImportedPage(reader, j); cb.AddTemplate(newPage, 0, 0); //增加页码-封⾯和底页都加 //Phrase header = new Phrase("第" + writer.PageNumber.ToString() + "页", font); ////页脚显⽰的位置 //ColumnText.ShowTextAligned(writer.DirectContent, Element.ALIGN_CENTER, header, DOC.PageSize.Width / 2, DOC.Bottom, 0); //增加页码-封⾯和底页不加 //if (writer.PageNumber != 1 && !(i == data.Count - 1 && j == iPageNum)) //{ // Phrase header = new Phrase("第" + (writer.PageNumber - 1).ToString() + "页", font); ////页脚显⽰的位置 // ColumnText.ShowTextAligned(writer.DirectContent, Element.ALIGN_CENTER, header, DOC.PageSize.Width / 2, DOC.Bottom, 0); //} //增加页码-封⾯不加,没有底页,封⾯只占⼀页 if (writer.PageNumber != 1) { Phrase header = new Phrase("第" + (writer.PageNumber - 1).ToString() + "页", font); //页脚显⽰的位置 ColumnText.ShowTextAligned(writer.DirectContent, Element.ALIGN_CENTER, header, DOC.PageSize.Width / 2, DOC.Bottom, 0); } } } DOC.Close();}最后的结果是,合并的PDF简图如下:左边是封⾯和底页都加页码,右边是封⾯和底页不加页码。

pdf文件怎么拆分成一页一页的pdf文件怎么合并在一起

pdf文件怎么拆分成一页一页的pdf文件怎么合并在一起

pdf⽂件怎么拆分成⼀页⼀页的pdf⽂件怎么合并在⼀起 PDF格式的⽂件在我们平时⼯作中运⽤越来越多,有时候会不可避免的遇到要将多个PDF⽂件合并成为⼀个⽂件,或者将⼀个PDF⽂件分割成为若⼲个⽂件。

对于⼀些电脑新⼿来说,必须是利⽤简单好⽤的⼯具来把PDF⽂件合并或者是分割,不需要太复杂的步骤,只要简单的⼏个步骤就能够完成。

⼀、如何拆分pdf:1、需要打开PDF分割合并⼯具,打开⼯具后,软件界⾯中只有分割和合并两个功能,先点击“分割”2、在分割功能界⾯中,点击正中间的“添加⽂件”按钮,从电脑中选择需要分割的⽂件按“打开”,或者直接把pdf⽂件拖放在⾥⾯。

3、添加了PDF⽂件后,就可以选择分割的类型了,有“到单页⽂件”、“按页⾯组”、“删除某些页⾯”和“按页⾯范围”这四种选择,不过⼀般⽐较常⽤的就是把⽂件分割成⼀页⼀页单独的PDF⽂件了。

然后在保存到⾥可以设置分割后的⽂件保存的⽂件夹位置,也可以⾃⼰选择“选择⽂件夹”⾃定义。

最后就可以开始“分割”了。

4、点击分割后,⼏秒时间就拆分完成了,会弹出⼀个完成提⽰框,可以按照⾥的按钮⾃⾏选择。

⼆、合并多个PDF⽂件:1、进⼊到合并界⾯,同样的点击“添加⽂件”从电脑中把需要合并的多个PDF⽂件全部选中,可以按住ctrl键同时选中多个⽂件。

2、添加进来的PDF⽂件,可以在右边选中⼀个⽂件然后按上移或下移按钮,调整顺序位置。

接着在保存到⽂件夹中点击“浏览”按钮设置保存⽂件夹,⽂件名中可以随意更改名称。

最后就可以点击“合并”3、合并成功后也会弹出合并成功的提⽰框哦。

对了,在⾼级设置界⾯中,可以设置权限,还有可以给合并后的⽂件加密码。

PS:想查看原⽂请点击这⾥。

itext5 excel转pdf 合并单元格

itext5 excel转pdf 合并单元格

在iText5中,将Excel转换为PDF并合并单元格涉及几个步骤。

但首先,需要明确的是,iText5是一个用于处理PDF文件的Java库,它不直接支持Excel到PDF的转换。

通常,你需要使用其他库(如Apache POI)来读取Excel文件,然后使用iText5来创建PDF。

然而,如果你已经有了Excel数据,并且想要以编程方式在PDF中创建表格并合并单元格,你可以按照以下步骤使用iText5:
1. 创建PdfPTable对象:首先,你需要创建一个PdfPTable对象,并设置表格的列数。

2. 添加PdfPCell对象:接下来,创建PdfPCell对象,设置单元格的内容,然后将它们添加到PdfPTable对象中。

3. 合并单元格:在iText5中,合并单元格通常是通过在添加单元格时跳过某些单元格来实现的。

例如,如果你想要合并第一行的前两个单元格,你可以先添加一个占据两列的单元格,然后再继续添加其他单元格。

4. 将PdfPTable添加到文档中:最后,将PdfPTable对象添加到你的PDF文档中。

5. 关闭文档:完成所有操作后,确保关闭PDF文档。

这里需要注意的是,iText5并不直接提供合并单元格的明确方法,如Excel中的“合并单元格”功能。

相反,它是通过在表格中添加跨越多列的单元格来实现类似的效果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.import java.io.FileOutputStream;
2.import java.io.IOException;
3.import java.util.ArrayList;
4.
5.import com.lowagie.text.Document;
6.import com.lowagie.text.DocumentException;
7.import com.lowagie.text.pdf.PdfCopy;
8.import com.lowagie.text.pdf.PdfImportedPage;
9.import com.lowagie.text.pdf.PdfReader;
10.
11.
12.public class pdfOperate
13.{
14.private static final int N = 3;
15.
16.public static void main(String[] args)
17. {
18. String[] files = {"C:\\a.pdf", "C:\\b.pdf"};
19. String savepath = "C:\\temp.pdf";
20. mergePdfFiles(files, savepath);
21.
22. partitionPdfFile("C:\\a.pdf");
23. }
24.
25.public static void mergePdfFiles(String[] files, String savepath) //合并
26. {
27.try
28. {
29. Document document = new Document(new PdfReader(files[0]).getPageSize(1));
30.
31. PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));
32.
33. document.open();
34.
35.for(int i=0; i<files.length; i++)
36. {
37. PdfReader reader = new PdfReader(files[i]);
38.
39.int n = reader.getNumberOfPages();
40.
41.for(int j=1; j<=n; j++)
42. {
43. document.newPage();
44. PdfImportedPage page = copy.getImportedPage(reader, j);
45. copy.addPage(page);
46. }
47. }
48.
49. document.close();
50.
51. } catch (IOException e) {
52. e.printStackTrace();
53. } catch(DocumentException e) {
54. e.printStackTrace();
55. }
56. }
57.
58.public static void partitionPdfFile(String filepath) // 分割
59. {
60. Document document = null;
61. PdfCopy copy = null;
62.
63.try
64. {
65. PdfReader reader = new PdfReader(filepath);
66.
67.int n = reader.getNumberOfPages();
68.
69.if(n < N)
70. {
71. System.out.println("The document does not have " + N + " pages to partition !"
);
72.return;
73. }
74.
75.int size = n/N;
76. String staticpath = filepath.substring(0, stIndexOf("\\")+1);
77. String savepath = null;
78. ArrayList<String> savepaths = new ArrayList<String>();
79.for(int i=1; i<=N; i++)
80. {
81.if(i < 10)
82. {
83. savepath = filepath.substring(stIndexOf("\\")+1, filepath.lengt
h()-4);
84. savepath = staticpath + savepath + "0" + i + ".pdf";
85. savepaths.add(savepath);
86. }
87.else
88. {
89. savepath = filepath.substring(stIndexOf("\\")+1, filepath.lengt
h()-4);
90. savepath = staticpath + savepath + i + ".pdf";
91. savepaths.add(savepath);
92. }
93. }
94.
95.for(int i=0; i<N-1; i++)
96. {
97. document = new Document(reader.getPageSize(1));
98. copy = new PdfCopy(document, new FileOutputStream(savepaths.get(i)));
99. document.open();
100.for(int j=size*i+1; j<=size*(i+1); j++)
101. {
102. document.newPage();
103. PdfImportedPage page = copy.getImportedPage(reader, j);
104. copy.addPage(page);
105. }
106. document.close();
107. }
108.
109.
110. document = new Document(reader.getPageSize(1));
111. copy = new PdfCopy(document, new FileOutputStream(savepaths.get(N-1)));
112. document.open();
113.for(int j=size*(N-1)+1; j<=n; j++)
114. {
115. document.newPage();
116. PdfImportedPage page = copy.getImportedPage(reader, j);
117. copy.addPage(page);
118. }
119. document.close();
120.
121. } catch (IOException e) {
122. e.printStackTrace();
123. } catch(DocumentException e) {
124. e.printStackTrace();
125. }
126. }
127.}。

相关文档
最新文档