PDF MERGE JAVA

2 篇文章 0 订阅

PDF MERGE

package cn.com.tdl.base.pdf;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopyFields;
import com.lowagie.text.pdf.PdfReader;

/**
 * 两个pdf文件合并. 多文件合并;
 * 
 * @author liuhualiang
 * 
 */
public class MyMergePDF {

	/**
	 * @param args
	 * @throws IOException
	 * @throws DocumentException
	 */
	public static void main(String[] args) {

		// creating list of readers of pdf files
		try {
			PdfReader reader1 = new PdfReader("D://A.pdf");
			PdfReader reader2 = new PdfReader("D://B.pdf");

			List<PdfReader> pdfReaderList = new ArrayList<PdfReader>();

			// Adding readers to the files
			pdfReaderList.add(reader1);
			pdfReaderList.add(reader2);

			// Creating the PdfCopyFields
			// This copy field object will take the reader object and copy the
			// pages to its object(copy)
			// So just by adding a document we can create a PDF with your merged
			// pdf

			PdfCopyFields copy = new PdfCopyFields(new FileOutputStream(
					"D://Output.pdf"));

			copy.open();

			if (null != pdfReaderList && !pdfReaderList.isEmpty()) {
				Iterator<PdfReader> iter = pdfReaderList.iterator();
				while (iter.hasNext()) {
					String pageNOs = "";
					PdfReader pdfReader = (PdfReader) iter.next();
					int noOfPages = pdfReader.getNumberOfPages();
					if (noOfPages > 0) {
						pageNOs = getNumderOfPages(noOfPages);
					}
					copy.addDocument(pdfReader, pageNOs);
				}
			}
			copy.close();
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * PDF文件合并
	 * 
	 * @param file1
	 * @param file2
	 * @param outFile
	 * @throws Throwable 
	 */
	public static void mergePdfs(String file1, String file2, String outFile) throws Throwable {
		// creating list of readers of pdf files
		try {
			// 文件不存在处理
			if (!new File(file1).exists()) {
				System.out.println("file:" + file1 + "不存在");
				outFile = file2;
				return;
			}
			if (!new File(file2).exists()) {
				System.out.println("file:" + file2 + "不存在");
				outFile = file1;
				return;
			}

			PdfReader reader1 = new PdfReader(file1);
			PdfReader reader2 = new PdfReader(file2);

			List<PdfReader> pdfReaderList = new ArrayList<PdfReader>();

			// Adding readers to the files
			pdfReaderList.add(reader1);
			pdfReaderList.add(reader2);

			// Creating the PdfCopyFields
			// This copy field object will take the reader object and copy the
			// pages to its object(copy)
			// So just by adding a document we can create a PDF with your merged
			// pdf

			PdfCopyFields copy = new PdfCopyFields(
					new FileOutputStream(outFile));

			copy.open();

			if (null != pdfReaderList && !pdfReaderList.isEmpty()) {
				Iterator<PdfReader> iter = pdfReaderList.iterator();
				while (iter.hasNext()) {
					String pageNOs = "";
					PdfReader pdfReader = (PdfReader) iter.next();
					int noOfPages = pdfReader.getNumberOfPages();
					if (noOfPages > 0) {
						pageNOs = getNumderOfPages(noOfPages);
					}
					copy.addDocument(pdfReader, pageNOs);
				}
			}
			copy.close();
		} catch (DocumentException e) {
			throw new Throwable(e);
		} catch (FileNotFoundException e) {
			throw new Throwable(e);
		} catch (IOException e) {
			throw new Throwable(e);
		} finally {
			if (new File(file1).exists()) {
				new File(file1).delete();
			}
			if (new File(file2).exists()) {
				new File(file2).delete();
			}
		}
	}

	/**
	 * 多文件合并.
	 * 
	 * @param arrPdfFile
	 * @param outFile
	 * @throws Throwable 
	 */
	public static void mergePdfs(String[] arrPdfFile, String outFile) throws Throwable {
		// creating list of readers of pdf files
		try {
			// 文件不存在处理
			List<PdfReader> pdfReaderList = new ArrayList<PdfReader>();

			for (int i = 0; i < arrPdfFile.length; i++) {
				PdfReader reader2 = new PdfReader(arrPdfFile[i]);

				// Adding readers to the files
				pdfReaderList.add(reader2);

			}

			// Creating the PdfCopyFields
			// This copy field object will take the reader object and copy the
			// pages to its object(copy)
			// So just by adding a document we can create a PDF with your merged
			// pdf

			PdfCopyFields copy = new PdfCopyFields(
					new FileOutputStream(outFile));

			copy.open();

			if (null != pdfReaderList && !pdfReaderList.isEmpty()) {
				Iterator<PdfReader> iter = pdfReaderList.iterator();
				while (iter.hasNext()) {
					String pageNOs = "";
					PdfReader pdfReader = (PdfReader) iter.next();
					int noOfPages = pdfReader.getNumberOfPages();
					if (noOfPages > 0) {
						pageNOs = getNumderOfPages(noOfPages);
					}
					copy.addDocument(pdfReader, pageNOs);
				}
			}
			copy.close();
		} catch (DocumentException e) {
			throw new Throwable(e);
		} catch (FileNotFoundException e) {
			throw new Throwable(e);
		} catch (IOException e) {
			throw new Throwable(e);
		} finally {

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

				if (new File(arrPdfFile[i]).exists()) {
					new File(arrPdfFile[i]).delete();
				}
			}

		}
	}

	/**
	 * Function to get page numbers in string with comma separated
	 * 
	 * @param noOfPages
	 * @return
	 */
	private static String getNumderOfPages(int noOfPages) {
		String pageNOs = "";
		boolean flag = false;
		for (int i = 0; i < noOfPages; i++) {

			if (flag == true) {
				Integer c = (Integer) i;
				pageNOs = pageNOs.concat("," + c.toString());
			}
			if (flag == false) {
				Integer c = (Integer) i;
				pageNOs = c.toString();
				flag = true;
			}
		}
		return pageNOs;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Apache POI和Apache PDFBox来实现Java Docx转PDF的功能。下面是一个简单的示例代码: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.edit.PDPageContentStream; import org.apache.pdfbox.util.PDFMergerUtility; public class DocxToPdfConverter { public static void convert(String docxFilePath, String pdfFilePath) throws Exception { // Load DOCX file XWPFDocument document = new XWPFDocument(new FileInputStream(docxFilePath)); // Create PDF document PDDocument pdfDocument = new PDDocument(); // Loop through all paragraphs in the DOCX file for (XWPFParagraph paragraph : document.getParagraphs()) { // Create a new page in the PDF document PDPage page = new PDPage(); pdfDocument.addPage(page); // Start a new content stream for the page PDPageContentStream contentStream = new PDPageContentStream(pdfDocument, page); // Add the paragraph text to the page contentStream.beginText(); contentStream.setFont(PDType1Font.TIMES_ROMAN, 12); contentStream.moveTextPositionByAmount(50, 700); contentStream.drawString(paragraph.getText()); contentStream.endText(); // Close the content stream for the page contentStream.close(); } // Save the PDF document pdfDocument.save(pdfFilePath); // Merge all pages into a single PDF file PDFMergerUtility merger = new PDFMergerUtility(); merger.setDestinationFileName(pdfFilePath); for (int i = 0; i < pdfDocument.getNumberOfPages(); i++) { merger.addSource(pdfFilePath); } merger.mergeDocuments(); // Close the PDF document pdfDocument.close(); } } ``` 在上面的示例中,我们首先加载DOCX文件,然后创建一个空的PDF文档。接下来,我们循环遍历DOCX文件中的所有段落,并将它们添加到PDF文档中的新页面中。最后,我们将所有页面合并为单个PDF文件,并保存该文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值