<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.16</version>
<type>pom</type>
</dependency>
public class CE06E04Combine {
private static final String FILE_NAME1 = "src/main/resources/pdf/A.pdf";
private static final String FILE_NAME2 = "src/main/resources/pdf/B.pdf";
private static final String DEST = "results/chapter06/AB.pdf";
public static void main(String[] args) throws IOException {
CE06E04Combine ce06E04Combine = new CE06E04Combine();
ce06E04Combine.combinePDF(FILE_NAME1, FILE_NAME2,DEST);
//ce06E04Combine.combinePDF(FILE_NAME1, FILE_NAME2);
}
/**
* 合并2个文档
* @param fileName1
* @param fileName2
* @return
*/
private void combinePDF(String fileName1,String fileName2){
String desFileName = new File(fileName1).getParentFile().getAbsolutePath()+"/" + UUID.randomUUID()+".pdf";
combinePDF(fileName1,fileName2,desFileName);
}
private void combinePDF(String fileName1, String fileName2, String desFileName) {
PdfDocument pdf = null;
try {
pdf = new PdfDocument(new PdfWriter(desFileName));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//定义合并文档
PdfMerger merger = new PdfMerger(pdf);
//添加第一个文档
PdfDocument firstSourcePdf = null;
try {
firstSourcePdf = new PdfDocument(new PdfReader(fileName1));
} catch (IOException e) {
e.printStackTrace();
}
merger.merge(firstSourcePdf, 1, firstSourcePdf.getNumberOfPages());
//添加第二个文档
PdfDocument secondSourcePdf = null;
try {
secondSourcePdf = new PdfDocument(new PdfReader(fileName2));
} catch (IOException e) {
e.printStackTrace();
}
merger.merge(secondSourcePdf, 1, secondSourcePdf.getNumberOfPages());
// 合并并关闭
merger.close();
firstSourcePdf.close();
secondSourcePdf.close();
pdf.close();
}
}
public class CE06E04Spliter {
//要分割的文件
private static final String FILE_NAME = "src/main/resources/pdf/A.pdf";
//分割文件存放的位置
private static final String DEST = "results/chapter06/";
public static void main(String[] args) throws IOException {
CE06E04Spliter ce06E04Spliter = new CE06E04Spliter();
// ce06E04Spliter.pdfSplitter(FILE_NAME1,10,DEST);
//ce06E04Spliter.pdfSplitter(FILE_NAME,10);
ce06E04Spliter.pdfSplitter(FILE_NAME,1,8);
}
/**
* 在指定目录等分pdf
* @param fileName 要分割的文档
* @param pageNum 分割尺寸
* @param desDir 分割后存储路径
* @throws IOException
*/
private void pdfSplitter(String fileName,Integer pageNum,String desDir) throws IOException {
PdfReader pdfReader = new PdfReader(fileName);
PdfDocument pdf = new PdfDocument(pdfReader);
String name;
PdfWriter pdfWriter=null;
PdfDocument pdfWriterDoc = null;
for (int i = 1; i <= pdf.getNumberOfPages() ; i += pageNum) {
name = desDir+"/"+i+".pdf";
pdfWriter = new PdfWriter(name);
pdfWriterDoc = new PdfDocument(pdfWriter);
int start = i;
int end = Math.min((start + pageNum-1), pdf.getNumberOfPages());
//从页数第一页开始,
pdf.copyPagesTo(start,end,pdfWriterDoc);
}
//关闭
pdfWriterDoc.close();
pdfWriter.close();
pdf.close();
pdfReader.close();
}
/**
* 分割文档,分割后文仔默认存储在原来的文档路径下。
* @param fileName
* @param pageNum
* @throws IOException
*/
private void pdfSplitter(String fileName,Integer pageNum) throws IOException {
String desDir = new File(fileName).getParentFile().getAbsolutePath();
pdfSplitter(fileName,pageNum,desDir);
}
/**
* 返回自定义片段大小的文件,UUID名称命名。
* @param fileName
* @param startPage
* @param endPage
* @throws IOException
*/
public void pdfSplitter(String fileName,int startPage, int endPage) throws IOException {
//源文档
PdfReader pdfReader = new PdfReader(fileName);
PdfDocument pdf = new PdfDocument(pdfReader);
//目标文档名
String desDir = new File(fileName).getParentFile().getAbsolutePath()
+"/"+UUID.randomUUID().toString()+".pdf";
//生成目标文档
PdfWriter pdfWriter = new PdfWriter(desDir);
PdfDocument outPdfDocument = new PdfDocument(pdfWriter);
//核心代码其实就这一行
pdf.copyPagesTo(startPage,endPage,outPdfDocument);
//关闭
outPdfDocument.close();
pdfWriter.close();
pdf.close();
pdfReader.close();
}
}
再也不用怕文档太大太占内存了。
需求:批量操作文件夹下面的所有pdf文件 在pdf文件末尾新增一行内容 1、导入依赖 2、主要代码 ...
itext7生成pdf页脚页码 在document.close()之前调用...
1、参考https://cloud.tencent.com/developer/ask/148120 ...
最大的是pdf文件 其次是pdf文档 PdfDocument 文档可以加一些列东西: 文字信息: new Paragraph(string) Paragraph即一段文字的意思 图片信息: new Image(ImageDataFactory.Create(path)); 列表信息: 表格:new Table() 表格填写用: table.AddHeaderCell(new Cell().Add(...
1.maven jar包依赖 2.核心代码...
itext7 java转pdf并插入图片的简单模板 我是存在f盘了 ,根据个人需求存储到相应位置就好 参考博客:https://blog.csdn.net/weixin_30243533/article/details/95257015?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-...
网上百度java生成pdf都是很老的代码,使用的是itext5,找遍了大江南北都找不到设置表格或单元格最大高度,或者绝对定位表格的实现,最后对table和cell的方法一个一个找,找到了满足要求的方法: cell.setMaxLines(int numberOfLines) 由于字体确定,每行字体的高度已确定,设定最大行数也就设定了最大高度,且避免了设置的高度不是每行高度的整数倍的麻烦,itext...
首先需要引入itext7的jar包,如果是maven项目的话,在pom中加入 Springboot接口定义 因为是提供给前端下载,所以是在输出流中写入文件,先新建一个Document对象 定义一下字体 相关字体库可以去com.itextpdf.io.font.FontConstants中查看 正文部分,新建一个段落,设置内容和样式 这里的Paragraph就是段落,add方法的参数就是内容,后面可...
导包 代码 https://gitee.com/yue126/itext7-demo.git html导出为pdf(问题:中文无法显示) html导出为pdf(解决中文无法显示的问题)...
2.1 数据聚合 聚合是指所有根据数组产生标量值的数据转换过程。就像mean count min sum等, 函数 描述 count 分组中的非NA 值数量 sum 非NA值的累计和 mean 非NA 值的均值 median 非NA 值的算术中位数 std,var 无偏的(n-1 分母)标准差和方差 min max 非NA 值的最大值最小值 prod 非NA 值 的乘积 first,last 非N...