Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: [Java] processo print

  1. #1

    [Java] processo print

    Salve ragazzi piano piano a forza di sbattere la zucca sto incominciando a capire il mondo del java. Ora ho un piccolo problema con i processi di stampa, ovvero sto realizzando un sistema di gestione magazzino ... l'ho quasi completato ma ora sto impazzendo con le stampe ...
    io devo stampare una bolla, ora io non so quante pagine devo stampare ... ho un ciclo while
    while (jcPostgreSQL.query.next()) {

    // calcolo X dell'articolo id - perche deve essere stampato dopo il nome visto che è da li che si prende la Y
    int latox = (int)((pageFormat.getImageableWidth() - pageFormat.getImageableX() * 2) * 6 / 100);
    scorr.x = latox;

    oggetti = fun.stampaTestoInRiquadroPercentuale(g2d, pageFormat, scorr.x, metro, 46, 0, "left", jcPostgreSQL.query.getString("nome").trim(), true, false);
    scorr.x += oggetti.x;
    scorr.y = oggetti.y;

    oggetti = fun.stampaTestoInRiquadroPercentuale(g2d, pageFormat, 0, metro, 6, scorr.y, "center", Integer.toString(jcPostgreSQL.query.getInt("listin oid")), true, false);

    oggetti = fun.stampaTestoInRiquadroPercentuale(g2d, pageFormat, scorr.x, metro, 10, scorr.y, "right", jcFunzioni.formattaPrezzo(jcPostgreSQL.query.getDo uble("p_vendita")), true, false);
    scorr.x += oggetti.x;
    oggetti = fun.stampaTestoInRiquadroPercentuale(g2d, pageFormat, scorr.x, metro, 4, scorr.y, "center", jcPostgreSQL.query.getString("um"), true, false);
    scorr.x += oggetti.x;
    oggetti = fun.stampaTestoInRiquadroPercentuale(g2d, pageFormat, scorr.x, metro, 7, scorr.y, "center", Double.toString(jcPostgreSQL.query.getDouble("qnt" )), true, false);
    scorr.x += oggetti.x;
    temp = (jcPostgreSQL.query.getDouble("p_vendita") - jcPostgreSQL.query.getDouble("sconto")) * jcPostgreSQL.query.getDouble("qnt");
    oggetti = fun.stampaTestoInRiquadroPercentuale(g2d, pageFormat, scorr.x, metro, 10, scorr.y, "right", jcFunzioni.formattaPrezzo(jcPostgreSQL.query.getDo uble("sconto")), true, false);
    scorr.x += oggetti.x;
    oggetti = fun.stampaTestoInRiquadroPercentuale(g2d, pageFormat, scorr.x, metro, 10, scorr.y, "right", jcFunzioni.formattaPrezzo(temp), true, false);
    scorr.x += oggetti.x;
    oggetti = fun.stampaTestoInRiquadroPercentuale(g2d, pageFormat, scorr.x, metro, 7.33, scorr.y, "center", Double.toString(jcPostgreSQL.query.getDouble("iva" )) + " %", true, false);

    metro += scorr.y;
    oggettiStampati++;

    if (metro>fun.FINEPAGINA)
    return Printable.PAGE_EXISTS;

    }
    e se in poche parole non supera la lunghezza fun.FINEPAGINA fa
    return Printable.NO_SUCH_PAGE;
    il fatto è che mi stampa una pagina bianca ... io da bravo programmatore ho fatto un debug e ho notato che il parametro pageIndex aumenta di 1 dopo aver eseguito 2 volte la funzione print ... è normale ??

    grazie Sascha
    Follow The White Rabbit !!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] processo print

    Originariamente inviato da papini.sascha
    il fatto è che mi stampa una pagina bianca ... io da bravo programmatore ho fatto un debug e ho notato che il parametro pageIndex aumenta di 1 dopo aver eseguito 2 volte la funzione print ... è normale ??
    La stampa con la Printing API funziona così: tu definisci una classe che implementa Printable e in cui fornisci una implementazione del metodo print().
    Quando sarà giunto il momento di stampare, il framework invocherà consecutivamente il print() del tuo Printable passando un pageIndex che si incrementa di volta in volta. Se tu sai che c'è quella pagina da stampare, la stampi e ritorni PAGE_EXISTS, se sai che non c'è più nessuna pagina, ritorni NO_SUCH_PAGE e tutto il lavoro di stampa termina lì.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    96

    Precisazione

    Come hai notato su ogni pagina passa due volte: la prima per vedere se la pagina esiste, la seconda per stamparla.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Precisazione

    Originariamente inviato da dyuhs
    Come hai notato su ogni pagina passa due volte: la prima per vedere se la pagina esiste, la seconda per stamparla.
    No assolutamente.

    Esempio in cui verranno stampate 2 pagine:

    - Il print() viene invocato con pageIndex=1
    Il Printable "sa" che c'è qualcosa da stampare sulla pagina 1, quindi stampa sul Graphics e ritorna PAGE_EXISTS.

    - Il print() viene invocato con pageIndex=2
    Il Printable "sa" che c'è qualcosa da stampare sulla pagina 2, quindi stampa sul Graphics e ritorna PAGE_EXISTS.

    - Il print() viene invocato con pageIndex=3
    Il Printable "sa" che non c'è più alcuna pagina da stampare, quindi non stampa nulla e ritorna subito NO_SUCH_PAGE. La stampa e la invocazione di print() terminano qui.

    Questo è il concetto di funzionamento.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ciao andbin
    scusa se riapro una discussione vecchia , ma se devo passare un intero che mi conta le righe che ho stampato, da una pagina all'altra in modo che a fina stampa ho il totale, come faccio?

    es :

    stampo 2 pagine. con 1 righa a pagina.

    il risultato dorebbe essere 2, ma non è cosi perchè il valore è 5.

    spiego sul tuo esempio:
    Esempio in cui verranno stampate 2 pagine:

    - Il print() viene invocato con pageIndex=1
    Il Printable "sa" che c'è qualcosa da stampare sulla pagina 1 (+1), quindi stampa sul Graphics(+1) e ritorna PAGE_EXISTS.

    - Il print() viene invocato con pageIndex=2
    Il Printable "sa" che c'è qualcosa da stampare sulla pagina 2(+1), quindi stampa sul Graphics(+1) e ritorna PAGE_EXISTS.

    - Il print() viene invocato con pageIndex=3
    Il Printable "sa" che non c'è più alcuna pagina da stampare(+1), quindi non stampa nulla e ritorna

    in coclusione come faccio a passare un parametro da una paggina all'altra?

    ciao grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcorsa
    scusa se riapro una discussione vecchia , ma se devo passare un intero che mi conta le righe che ho stampato, da una pagina all'altra in modo che a fina stampa ho il totale, come faccio?
    Non è che devi "passare" qualcosa. Tu hai un oggetto che implementa Printable e su cui viene invocato (dal framework) il print().
    Ma l'oggetto Printable è sempre quello, che hai passato tu in precedenza al framework. Quindi ti basta semplicemente lavorare con dei campi di "istanza" per tenere e aggiornare lo stato che ti serve.

    L'unica cosa da capire e tenere presente è la sequenza delle invocazioni di print() in relazione alle pagine. Per motivi che riguardano la determinazione dell'output o delle sue dimensioni o ad esempio la rasterizzazione in "bande", il framework potrebbe invocare più volte il print() con lo stesso numero di pagina.

    Se devi aggiornare uno stato, devi tenerlo presente. Ma è comunque gestibile con poca logica.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    si ma per contare le righe nel metodo print :

    public int print(Graphics g, PageFormat pf, int pageIndex){
    count++
    }

    somma sempre due volte.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcorsa
    somma sempre due volte.
    L'ho detto prima e riporto quanto detto qui:

    "The print method for a given page may be invoked multiple times so that the print subsystem can gather metrics about the page or rasterize bands of the page."
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    [cite]
    Ma è comunque gestibile con poca logica.
    [/cite]

    come potrei fare?

    grazie

  10. #10
    il mio problema è che devo contare le righe stampando il numero di riga.
    ora se alla pagina fissiamo un numero di righe fisso (es 20) con il numero di pagina posso calcolare nelle pagine successive il numero della prima riga cioè la 21 , 42, ecc...

    ma se in ogni pagina stampo un numero di righe che può variare, come faccio a calcolare il numero della pagina successiva.

    es se nella prima pagina stampo 20 e nella seconda 30 righe, come calcolo il numero della prima righa della 3 pagina?

    grazie per i suggerimenti!

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.