Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    67

    controllare riempimento pagine pdf

    Salve ragazzi.

    Sto da poco studiando la libreria itext e non ho trovato un metodo o qualcosa per gestire il riempimento delle pagine. Mi spiego meglio :

    Ho una pagina composta da una serie di paragrafi.
    Vorrei che se un paragrafo o una tabella non riuscisse ad entrare per la sua interezza nella pagina corrente, questo crei una nuova pagina e cominci a scrivere direttamente in quella nuova...lasciando dello spazio vuoto nella pagina precedente.

    Ovviamente si presuppone che il mio paragrafo o la mia tabella o il mio elemento in generale non abbia dimensione superiore ad una pagina. Qualora si verificasse questo...completare tutta la pagina e continuare nella pagina seguente e riprendere il metodo da me elencato.

    Spero che esista qualcosa del genere.

    Altrimenti dovrei (se è possibile) "misurare" la quantità di pagina restante, confrontarla con la lunghezza del mio elemento e decidere se invocare newPage o meno.
    Ma come fare?

    Spero possiate aiutarmi...grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    67
    ehi andrea, grazie per la risposta. Ero quasi arrivato alla soluzione ma mi manca un piccolo punto.

    Ho usato per controllare la grandezza della pagina il PdfWriter.getVerticalPosition(true) che mi restituisce l'altezza rimanente della pagina...e diciamo che in un gioco abbastanza complicato di fogli ausiliari dovrei riuscire a stampare un paragrafo senza che si "spezzi" in 2 pagine.

    Adesso chiedo, è presente un metodo che mi dice quanto è "alto" un paragrafo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    67
    ho risolto, se qualcuno avesse il mi stesso problema non esiti a scrivere in questa discussione

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    condividi pure, anche senza che ci siano input o richieste specifiche da altri utenti. Prima o poi qualcuno con il tuo stesso problema salta fuori di sicuro.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    67
    creo un documento ausiliario documenttmp ed aggiungo il paragrafo

    codice:
    Document documenttmp = new Document(PageSize.A4, 36, 36, 36, 36);
                    PdfWriter tmp = PdfWriter.getInstance(documenttmp, new FileOutputStream(RESULTTMP));
                    documenttmp.open();
                    documenttmp.add(parP);
    in un while conto la misura "restante" del documento finale e quella del documento temporaneo. se la disuguaglianzza è soddisfatta aggiungo, altrimenti new page....(oppure chunk.newline a ripetizione... a seconda dei casi)

    codice:
                    while (true) {
                        if ((writer.getVerticalPosition(true) - 36) > (806 - tmp.getVerticalPosition(true))) {
                           document.add(parP);
                            break;
                        } else {
                            document.newPage();
                        }
                    }
                    parTmp = null;
                    documenttmp.close();
                }
    i numeri 806 e 36 sono frutto dei margini standard dei fogli A4...se si utilizzano formati diversi vanno cambiati ovviamente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.