2017-10-09 2 views
1

PDF 병합을 위해 PdfBox를 사용하기 위해 일부 코드 (원래 iText 사용)를 마이그레이션하고있었습니다. PDF 패키지 또는 포트폴리오를 만드는 경우를 제외하면 모두 괜찮 았습니다. 나는 이것이 지금까지 존재했다는 것을 몰랐다는 것을 인정해야한다.PdfBox를 사용하여 pdf 패키지를 만드는 방법은 무엇입니까?

PdfStamper stamper = new PdfStamper(reader, out); 
stamper.makePackage(PdfName.T); 
stamper.close(); 

나는이 있지만 PdfBox으로 필요합니다

는 (iText를 사용) 내 코드의 조각이다.

둘 다 API 및 문서를 살펴본 결과 해결책 atm을 찾을 수 없습니다. 어떤 도움이라도 좋을 것입니다.

추신. 미안 iText에서 솔루션이 필요하다는 인상을 주면 iText에서 PdfBox로 마이그레이션하기 때문에 PdfBox에 필요합니다.

답변

2

내가 아는 한 PDFBox에는 단일 전용 메서드가 포함되어 있지 않습니다. 반면에 기존의 PDFBox 메소드를 사용하여 구현하는 것이 매우 쉽습니다. 모든

먼저, 작업이 효과적으로 PDFBox를 사용

stamper.makePackage(PdfName.T); 

에 해당 할 정의된다.

/** 
* This is the most simple way to change a PDF into a 
* portable collection. Choose one of the following names: 
* <ul> 
* <li>PdfName.D (detailed view) 
* <li>PdfName.T (tiled view) 
* <li>PdfName.H (hidden) 
* </ul> 
* Pass this name as a parameter and your PDF will be 
* a portable collection with all the embedded and 
* attached files as entries. 
* @param initialView can be PdfName.D, PdfName.T or PdfName.H 
*/ 
public void makePackage(final PdfName initialView) 

는 따라서, 우리는 타일 전망을 감상 할 수있는 휴대용 수집하기 위해 (아주 최소한) PDF를 변경해야 iText를에 그 방법으로 설명되어 있습니다. ISO 32000-1의 12.3.5 "컬렉션"(나는 아직 두 번째 부분이없는)이 우리가 가진 보기 항목으로 PDF 카탈로그에 컬렉션 사전을 추가 할 필요가 의미 섹션에 따르면

T. 따라서 :

PDDocument pdDocument = PDDocument.load(...); 

COSDictionary collectionDictionary = new COSDictionary(); 
collectionDictionary.setName(COSName.TYPE, "Collection"); 
collectionDictionary.setName("View", "T"); 
PDDocumentCatalog catalog = pdDocument.getDocumentCatalog(); 
catalog.getCOSObject().setItem("Collection", collectionDictionary); 

pdDocument.save(...); 
관련 문제