누리몬
누리누리한세상
누리몬
전체 방문자
오늘
어제
  • 분류 전체보기 (108)
    • 웹 (28)
      • JSP (2)
      • JAVASCRIPT (2)
      • JQUERY (18)
      • SALESFORCE (5)
    • 언어 (54)
      • JAVA (34)
      • DB (16)
      • Angular2 (0)
      • AEM (4)
    • 일상이야기 (5)
      • 푸드스토리 (1)
      • 누리스토리 (0)
      • 잡다한이야기 (1)
      • 인생사 (0)
    • 환경세팅 (10)
    • 리눅스 (6)
    • 기타잡템 (3)
    • 회사 (2)
      • 기록 (0)
      • 산업기사공부 (2)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자

공지사항

인기 글

태그

  • log4j보안취약
  • 테이블코멘트확인
  • 공포 방탈출
  • 리눅스
  • 부산여행
  • 강아지
  • Oracle
  • java
  • 누리
  • 애견동방가능펜션
  • PLSQL
  • 국내방탈출
  • calendar
  • web.xml 오류
  • Zflip3
  • 둠 이스케이프
  • 리눅스명령어
  • 프로시저
  • log4j권고사항
  • jquery

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
누리몬

누리누리한세상

언어/JAVA

[JAVA] 여러 PDF 합치기

2020. 3. 18. 11:51
EX)

List pdfs = new ArrayList<InputStream>();
pdfs.add(new FileInputStream(orgFilePath));
output = new FileOutputStream(pdfPath);
Common.concatPDFs(pdfs, output, true);


import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.RandomAccessFileOrArray;
import com.itextpdf.text.pdf.codec.TiffImage;

	/**
	 * @param streamOfPDFFiles List형 PDF목록 
	 * @param outputStream 합치고난 후 PDF
	 * @param paginate
	 */
	public static void concatPDFs(List<InputStream> streamOfPDFFiles,
		OutputStream outputStream, boolean paginate) {

		Document document = new Document();
		PdfWriter writer = null;
		try {
			List<InputStream> pdfs = streamOfPDFFiles;
			List<PdfReader> readers = new ArrayList<PdfReader>();
			int totalPages = 0;
			Iterator<InputStream> iteratorPDFs = pdfs.iterator();

			// Create Readers for the pdfs.
			while (iteratorPDFs.hasNext()) {
				InputStream pdf = iteratorPDFs.next();
				PdfReader pdfReader = new PdfReader(pdf);
				readers.add(pdfReader);
				totalPages += pdfReader.getNumberOfPages();
			}
			// Create a writer for the outputstream
			writer = PdfWriter.getInstance(document, outputStream);

			document.open();
			BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
					BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
			PdfContentByte cb = writer.getDirectContent(); // Holds the PDF
			// data

			PdfImportedPage page;
			int currentPageNumber = 0;
			int pageOfCurrentReaderPDF = 0;
			Iterator<PdfReader> iteratorPDFReader = readers.iterator();

			// Loop through the PDF files and add to the output.
			while (iteratorPDFReader.hasNext()) {
				PdfReader pdfReader = iteratorPDFReader.next();

				// Create a new page in the target for each source page.
				while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
					document.newPage();
					pageOfCurrentReaderPDF++;
					currentPageNumber++;
					page = writer.getImportedPage(pdfReader,
							pageOfCurrentReaderPDF);
					cb.addTemplate(page, 0, 0);

					// Code for pagination.
					if (paginate) {
						cb.beginText();
						cb.setFontAndSize(bf, 9);
						cb.showTextAligned(PdfContentByte.ALIGN_CENTER, ""
								+ currentPageNumber + " of " + totalPages, 520,
								5, 0);
						cb.endText();
					}
				}
				pageOfCurrentReaderPDF = 0;
			}
			outputStream.flush();
			document.close();
			outputStream.close();
			writer.close();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (document.isOpen())
				document.close();
			try {
				if (outputStream != null)
					outputStream.close();
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}
			
		}
	}

'언어 > JAVA' 카테고리의 다른 글

[JVAA] 특정 날짜 이전 위치 폴더 파일 삭제  (0) 2020.03.18
[JAVA] 시분초 밀리 세컨드까지 값 가져오기.  (0) 2020.03.18
[JAVA] PDF 페이지 중간 삭제  (0) 2020.03.18
[JAVA] PDF 합치기  (0) 2020.03.18
[JAVA] multipartRequest 로 URL 호출하기  (0) 2019.11.22
    '언어/JAVA' 카테고리의 다른 글
    • [JVAA] 특정 날짜 이전 위치 폴더 파일 삭제
    • [JAVA] 시분초 밀리 세컨드까지 값 가져오기.
    • [JAVA] PDF 페이지 중간 삭제
    • [JAVA] PDF 합치기
    누리몬
    누리몬
    안녕하세요 누리누리한세상 블로그입니다 문의사항은 hjdhsmf@gmail.com 으로 메일주세요.

    티스토리툴바