4

私はitext pdfライブラリを使用しています。既存のPDFでページを移動する方法を知っている人はいますか?

実際には、ファイルの先頭にある最後のページをいくつか移動したいと考えています。

以下のようなものですが、仕組みがわかりません。

 reader = new PdfReader(baos.toByteArray());
 n = reader.getNumberOfPages();
 reader.selectPages(String.format("%d, 1-%d", n, n-1));
 PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename));
 stamper.close();

だれか詳しく説明してくれませんか?

4

1 に答える 1

5

このselectPages()方法は、私の本の第 6 章で説明されています (164 ページを参照)。コード スニペット 6.3 および 6.11 のコンテキストでは、またはによってPdfReader消費されるために読み取られるページ数を減らすために使用されます。ただし、ページの並べ替えにも使用できます。まず、構文を説明させてください。PdfStamperPdfCopy

selectPages()メソッドにはさまざまな種類があります。

List<Integer>保持したいすべてのページ番号を含む を渡すことができます。このリストは、1、2、3、4 のように増加するページ番号で構成できます。たとえば、1、3、2、4 のようPdfReaderに順序を変更すると、その変更された順序でページが表示されます。

次の構文を使用して文字列を渡すこともできます (これはスニペットで行われます)。

[!][o][odd][e][even]start[-end]

コンマで区切られた複数の範囲を持つことができます。モディファイアは、すでに選択されているものからページを削除します。範囲の変更はインクリメンタルです。範囲が表示されると、番号が追加または削除されます。開始または終了は省略できます。両方を省略する場合は、少なくとも o (奇数; 奇数ページをすべて選択する) または e (偶数; 偶数ページをすべて選択する) が必要です。

あなたの場合、次のものがあります。

String.format("%d, 1-%d", n, n-1)

10 ページのドキュメントがあり、nが 10 に等しく、フォーマット操作の結果が"10, 1-9". この場合、PdfReader最後のページが最初のページとして表示され、その後に 1 ~ 9 ページが表示されます。

ここで、 8ページから始まる TOC があり、この TOC を最初のページに移動したい場合、次のようなものが必要であるとし8-10, 1-7ます。tocn

String.format("%d-%d, 1-%d", toc, n, toc -1)

メソッドの詳細についてはformat()、 API ドキュメントStringおよびFormat String syntaxを参照してください。

于 2014-02-06T10:49:57.510 に答える