Pagina PDF riordinare usando itext

sto usando la libreria pdf di itext . qualcuno sa come posso spostare le pagine nel pdf esistente?

In realtà voglio spostare poche pagine all’inizio del file.

È qualcosa come sotto ma non capisco come funziona.

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(); 

Qualcuno può spiegare in dettaglio?

    Il metodo selectPages() è spiegato nel capitolo 6 del mio libro (vedi pagina 164). Nel contesto di snippet di codice 6.3 e 6.11, viene utilizzato per ridurre il numero di pagine lette da PdfReader per il consumo da PdfStamper o PdfCopy . Tuttavia, può anche essere utilizzato per riordinare le pagine. Prima permettimi di spiegare la syntax.

    Esistono diversi tipi di metodo selectPages() :

    È ansible passare un List contenente tutti i numeri di pagina che si desidera conservare. Questo elenco può consistere nell’aumento dei numeri di pagina, 1, 2, 3, 4, … Se si modifica l’ordine, ad esempio: 1, 3, 2, 4, … PdfReader servirà le pagine in quell’ordine modificato.

    Puoi anche passare una stringa (che è ciò che viene fatto nello snippet) usando la seguente syntax:

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

    Puoi avere intervalli multipli separati da virgole e il! il modificatore rimuove le pagine da ciò che è già selezionato. Le variazioni di intervallo sono incrementali; i numeri vengono aggiunti o cancellati mentre appare l’intervallo. L’inizio o la fine possono essere omessi; se si omettono entrambi, è necessario almeno o (dispari, seleziona tutte le pagine dispari) o e (pari; seleziona tutte le pagine pari).

    Nel tuo caso, abbiamo:

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

    Supponiamo di avere un documento con 10 pagine, quindi n uguale a 10 e il risultato dell’operazione di formattazione è: "10, 1-9" . In questo caso, PdfReader presenterà l’ultima pagina come prima, seguita dalle pagine da 1 a 9.

    Supponiamo ora di avere un TOC che inizi a pagina 8 e di spostare questo sumrio alle prime pagine, quindi è necessario qualcosa di simile: 8-10, 1-7 , o se toc equals 8 toc è uguale a 10:

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

    Per maggiori informazioni sul metodo format() , consultare i documenti API per String e la syntax Stringhe di formato .