私は、iText 7の章とサブチャプターを使ってpdfファイルを作成しようとしています。以前のバージョンのiTextの例を、チャプタークラスを使って見つけました。しかし、このクラスはiText 7には含まれていないようです。iText 7の章
どのようにiText7にその機能が実装されていますか?
私は、iText 7の章とサブチャプターを使ってpdfファイルを作成しようとしています。以前のバージョンのiTextの例を、チャプタークラスを使って見つけました。しかし、このクラスはiText 7には含まれていないようです。iText 7の章
どのようにiText7にその機能が実装されていますか?
iText5のクラスChapter
とSection
は問題がありました。既にiText 5で、私たちは人々にPdfOutline
を使うよう勧めました。
章の作成方法の例、具体的にはブックマークパネルの対応するアウトラインについては、チュートリアルをご覧ください。このチュートリアルでは、小説「ジキル博士とハイド氏の奇妙なケース」を繰り返しテーマにしています。
iText 7の仕組みを説明するために、このテキストとこの小説に基づいた映画のデータベースを使用します。読める時間がない場合は、Chapter 6にジャンプしてください。あなたがここに完全なサンプルコードダウンロードすることができます
:この章で
、私たちはこのようになります文書を作成する以上、この例では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
オブジェクトを使用してアウトラインを作成します。単純な例を試してみましょう。この例の複雑さの大部分は、単純なテキストファイルをチャプタタイトルとチャプタの内容を持つドキュメントに変換したことが原因です。