Java实现合并多个PDF的示例代码

网友投稿 263 2022-09-04


Java实现合并多个PDF的示例代码

这里合并用到了一个itext的包。使用maven直接导入依赖即可。

com.lowagie

itext

2.1.7

这个是我写的一个utl工具类,里面还写了一个main方法,如果你有两个pdf,可以直接用main方法跑一下。

import com.lowagie.text.Document;

import com.lowagie.text.pdf.PdfCopy;

import com.lowagie.text.pdf.PdfImportedPage;

import com.lowagie.text.pdf.PdfReader;

import java.io.FileOutputStream;

public class PdfUtil {

/**

* 合并pdf

* @param files 需要合并的pdf路径

* @param newfile 合并成新的文件的路径

* @return

*/

public static boolean mergePdfFiles(String[] files, String newfile) {

boolean retValue = false;

Document document = null;

PdfCopy copy = null;

PdfReader reader = null;

try {

document = new Document(new PdfReader(files[0]).getPageSize(1));

copy = new PdfCopy(document, new FileOutputStream(newfile));

document.open();

for (int i = 0; i < files.length; i++) {

reader = new PdfReader(files[i]);

int n = reader.getNumberOfPages();

for (int j = 1; j <= n; j++) {

document.newPage();

PdfImportedPage page = copy.getImportedPage(reader, j);

copy.addPage(page);

}

}

retValue = true;

} catch (Exception e) {

e.printStackTrace();

} finally {

if (reader != null) {

reader.close();

}

if (copy != null) {

copy.close();

}

if (document != null) {

document.close();

}

}

return retValue;

}

public static void main(String[] args) {

String[] files = { "D:\\Case\\0000001\\00001\\ABIStatistic.pdf", "D:\\Case\\0000001\\00001\\ABITable.pdf",

"D:\\Case\\0000001\\00001\\CVRR.pdf" };

String savepath = "D:\\Case\\0000001\\00001\\temp.pdf";

boolean b = mergePdfFiles(files, savepath);

System.out.println(b);

}

}

补充

通过java还能实现pdf的拆分

1.按每页单独拆分

import com.spire.pdf.*;

public class SplitPDF1 {

public static void main(String[] args)

{

//加载需要拆分的PDF文档

PdfDocument doc = new PdfDocument();

doc.loadFromFile("test.pdf");

//调用方法split()将PDF文档按每一页拆分为单独的文档

doc.split("output/splitDocument-{0}.pdf", 0);

doc.close();

}

}

2.按指定页数范围拆分

import com.spire.pdf.*;

import com.spire.pdf.graphics.PdfMarveVJQgins;

import java.awt.geom.Point2D;

public class SplitPDF2 {

public static void main(String[] args)

{

//加载需要拆分的PDF文档

PdfDocument doc = new PdfDocument();

doc.loadFromFile("test.pdf");

//新建第1个PDF文档1

PdfDocument newpdf1 = new PdfDocument();

PdfPageBase page;

//将原PDF文档的第1、2页拆分,并保存到newpdf1

for(int i = 0;i<2;i++)

{

page = newpdf1.getPages().add(doc.getPages().get(i).getSize(), new PdfMargins(0));

doc.getPages().get(i).createTemplate().draw(page, new Point2D.Float(0,0));

}

newpdf1.saveToFile("split/result1.pdf");

//新建第2个PDF文档

PdfDocument newpdf2 = new PdfDocument();

//将原PDF文档的第3、4页拆分,并保存到newpdf2

for(int i = 2;i<4;i++)

{

page = newpdf2.getPages().add(doc.getPages().get(i).getSize(), new PdfMargins(0));

doc.getPages().get(i).createTemplate().draw(page, new Point2D.Float(0,0));

}

newpdf2.saveToFile("split/result2.pdf");

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:scrapy--pipelines基本用法--如何自定义ImagesPipeline抓取图片(scrapy imagepipeline)
下一篇:相见恨晚的itertools库
相关文章

 发表评论

暂时没有评论,来抢沙发吧~