2014-07-22 3 views
0

iText를 사용하여 PDF 페이지 부과 작업 코드 예제를 친절하게 보여줄 수 있습니까? 내 Google 옵션을 다 써 버렸습니다. 코드 샘플이 없습니다.iText -> PDF 조작 방법

감사합니다,

InnerOrchestra

추신 : 부과하는 인쇄 기술 용어에 의해, 내 말은, 예를 들어, 종이의 11x17 시트를 가진 두 가지 8.5x11 페이지를 누르고 있습니다. 명함의 경우이 페이지는 동일한 페이지 (3.75x2.25)가 될 것이고 소책자의 경우 시트가 접힐 것이고 페이지 배치는 ​​소책자 설정에 따라 다를 것입니다.

답변

1

Chapter 6 of my book을 읽거나 iText 사이트의 예제를 간단히 살펴봄으로써 많은 시간을 절약 할 수있었습니다. 예를 들어 NUpTool 예를 예로 들어 보겠습니다. 인쇄 분야에서 일하면서 "N-upping"이라는 용어에 익숙해야합니다. 문서를 가져 와서 한 페이지에 2 페이지 (4 면도) 등 4 페이지 씩 새 페이지를 만들 때입니다.

귀하의 요청은 매우 유사하지만 더 쉽습니다. 문서를 가져올 때 text_on_stationery.pdf라고 가정하고 내 책의 예제를 사용하여 페이지를 축소해야하므로 문서 result2up.pdf의 결과로 나타납니다.

귀하의 경우에는 규모를 조정할 필요가 없으므로 그리 어렵지 않습니다. 원본 문서의 두 배 크기의 Document 개체를 만들고 페이지를 가져올 PdfImportedPage 개체를 만들고 올바른 오프셋을 사용하여 addTemplate()을 사용하여 새 문서에 나란히 추가하십시오. http://itextpdf.com/themes/keyword.php?id=236

"강요"를 찾을 때 구글은 당신에게 SuperImposing 예를 보여주지 않았다 이상하다 :

PdfImportedPage의 사용을 보여 매우 몇 가지 예제가 있습니다. 이 예제에서, 우리는 서로의 상단에 4 개 개의 서로 다른 레이어를 추가 : 즉

PdfReader reader = new PdfReader(SOURCE); 
// step 1 
Document document = new Document(PageSize.POSTCARD); 
// step 2 
PdfWriter writer 
    = PdfWriter.getInstance(document, new FileOutputStream(RESULT)); 
// step 3 
document.open(); 
// step 4 
PdfContentByte canvas = writer.getDirectContent(); 
PdfImportedPage page; 
for (int i = 1; i <= reader.getNumberOfPages(); i++) { 
    page = writer.getImportedPage(reader, i); 
    canvas.addTemplate(page, 1f, 0, 0, 1, 0, 0); 
} 
// step 5 
document.close(); 
reader.close(); 

, 4 페이지 문서는 모든 페이지가 서로의 상단에 렌더링되는 1 페이지의 문서는 지금 . 이제해야 할 일은 1 단계를 변경하여 새 페이지의 크기가 다르고 4 단계를 적용하여 서로 옆에 두 페이지가 추가되고 각 두 페이지 후에 새 페이지가 추가됩니다. 이 예에서

page = writer.getImportedPage(reader, i); 
canvas.addTemplate(page, 1f, 0, 0, 1, 0, 0); 
i++; 
if (i <= reader.getNumberOfPages()) 
page = writer.getImportedPage(reader, i); 
canvas.addTemplate(page, 1f, 0, 0, 1, width/2, 0); 
document.newPage(); 

는 I 원본 문서의 높이가 새로운 문서의 높이와 동일하도록, 새로운 문서의 width 두번 원고의 폭이라고 가정한다. 너비와 높이가 같은 새 문서를 만들 수도 있습니다. 이 경우 다음이 필요합니다.

page = writer.getImportedPage(reader, i); 
canvas.addTemplate(page, 1f, 0, 0, 1, 0, height/2); 
i++; 
if (i <= reader.getNumberOfPages()) 
page = writer.getImportedPage(reader, i); 
canvas.addTemplate(page, 1f, 0, 0, 1, 0, 0); 
document.newPage(); 
+0

Mr Lowagie, 내 질문에 답변 해 주셔서 감사합니다. 내 서재에 도서를 추가하겠습니다. 검색하는 동안 참조한 샘플을 즉시 찾지는 않았습니다 ... (회고 해 보니 사이트의 작동하는 검색 창을 축하합니다). 브루노, 시간을내어 주셔서 다시 한번 감사드립니다. 그것의 많은 감사. – InnerOrchestra