2016-10-27 3 views
1

챕터 및 하위 챕터 iText 함께 pdf 파일을 만들려고합니다. 이전 클래스의 챕터 클래스를 사용하여 이전 버전의 예제를 발견했습니다. 그러나이 클래스는 iText 7에 포함되지 않습니다.챕터 iText 7

iText7에서이 기능은 어떻게 구현됩니까?

답변

1

iText 5의 ChapterSection 클래스는 문제가있었습니다. 이미 iText 5를 사용하여 사람들에게 PdfOutline을 사용하도록 권유했습니다.

챕터를 만드는 방법에 대한 예를 들어, 북마크 패널의 해당 윤곽선을 보려면 iText 7: Building Blocks 자습서를 참조하십시오. 이 튜토리얼은 소설 "지킬 박사와 하이드 박사의 이상한 사례"라는 주제를 반복적으로 가지고 있습니다.

iText 7의 작동 방식을 설명하기 위해이 텍스트와이 소설을 기반으로 한 영화가있는 데이터베이스를 사용합니다. 읽을 시간이 없으면 Chapter 6으로 이동하십시오.

enter image description here

당신은 여기에 전체 샘플 코드를 다운로드 할 수 있습니다 :이 예에서는 TOC_OutlinesDestinations

BufferedReader br = new BufferedReader(new FileReader(SRC)); 
String name, line; 
Paragraph p; 
boolean title = true; 
int counter = 0; 
PdfOutline outline = null; 
while ((line = br.readLine()) != null) { 
    p = new Paragraph(line); 
    p.setKeepTogether(true); 
    if (title) { 
     name = String.format("title%02d", counter++); 
     outline = createOutline(outline, pdf, line, name); 
     p.setFont(bold).setFontSize(12) 
      .setKeepWithNext(true) 
      .setDestination(name); 
     title = false; 
     document.add(p); 
    } 
    else { 
     p.setFirstLineIndent(36); 
     if (line.isEmpty()) { 
      p.setMarginBottom(12); 
      title = true; 
     } 
     else { 
      p.setMarginBottom(0); 
     } 
     document.add(p); 
    } 
} 

을, 우리는 루프를 통해 본 장에서는

, 우리는 다음과 같습니다 문서를 만들 제목과 장이 들어있는 텍스트 파일. 제목을 만날 때마다 name ( title01, title02 등)을 만들고 제목 단락의 이름이 지정된 대상인 setDestination(name)을이 이름으로 사용합니다. 이 결과를 달성하기 위해 다른 방법이 있습니다 PdfDestination.makeDestination(new PdfString(name))

public PdfOutline createOutline(PdfOutline outline, PdfDocument pdf, String title, String name) { 
    if (outline == null) { 
     outline = pdf.getOutlines(false); 
     outline = outline.addOutline(title); 
     outline.addDestination(PdfDestination.makeDestination(new PdfString(name))); 
     return outline; 
    } 
    PdfOutline kid = outline.addOutline(title); 
    kid.addDestination(PdfDestination.makeDestination(new PdfString(name))); 
    return outline; 
} 

있지만라는 이름의 목적지를 사용하는 것이 가장 간단한 방법입니다 :

우리는 우리가이 같은 명명 된 대상을 정의하는위한 PdfOutline 객체를 사용하여 윤곽을 만들 수 있습니다. 이 예제의 복잡성은 대부분 간단한 텍스트 파일을 챕터 제목과 장 내용이있는 문서로 변환한다는 사실을 발견하게 될 것입니다.