Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17

    Caratteri distorti e spaziature errate nelle stampe di JFrame

    Ciao a tutti.
    Qualcuno sa spiegarmi perché, quando stampo il contenuto di un JFrame (o, a dire il vero, qualsiasi componente swing) ciò che ottengo non è ciò che vedo a video?
    Per stampare ho provato un sacco di soluzioni trovate sul web, ma grossomodo tutte si basano su Graphics2D e paint.
    In pratica gli elementi grafici sono tutti correttamente stampati, ma il testo non appare come lo vedo a video: le spaziature tra i caratteri sono distorte, risultano molto ravvicinati, con l'aumentare della grandezza del font talmente tanto da sovrapporsi...
    Alcuni testi che a video si vedono completamente (e neanche troppo "stretti"), in fase di stampa appaiono come "Inizio del testo e ...." come se il testo eccedesse la grandezza della label, anche se questo a video non succede.
    Ciò è totalmente indipendente dalla stampante che utilizzo (sia essa fisica che su file PDF).
    Come posso ottenere una stampa fedele a ciò che vedo a video?
    Sono l'unico ad avere questi problemi con i testi?
    Ha qualcosa a che fare con i DPI (so che questo è per esempio un antico problema di stampe in excel ad esempio)?
    Grazie in anticipo per le risposte.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Se vuoi un esempio di stampa con la Printing API di un intero JFrame, c'è un mio esempio (fatto molti anni fa) in questa discussione: http://forum.html.it/forum/showthrea...readid=1213773
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17
    Grazie della risposta che però non risolve il mio problema (si presenta anche nel tuo esempio).
    Quello che vedo a video (sul tuo esempio) è:
    App.png
    Mentre ciò che stampo è:
    Stampa.png
    Vedi il rettangolo azzurro? Ti fa capire che il testo non è reso in stampa (sia fisica che su PDF) come appare nello schermo...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da LukeV Visualizza il messaggio
    Vedi il rettangolo azzurro? Ti fa capire che il testo non è reso in stampa (sia fisica che su PDF) come appare nello schermo...
    Sì vedo. Premesso che quel codice che ti ho indicato l'avevo scritto molti anni fa e non mi ricordo che prove avessi fatto all'epoca (né se avessi notato cose "strane"), il codice l'ho riprovato oggi, con l'ultimo PDFCreator che ho al momento (e che tra l'altro ho aggiornato giusto ieri).
    In effetti anche a me risulta che nel PDF "stampato" il testo PRINT vada fuori dalla cornicetta del focus.

    Il problema si può sicuramente spiegare nella differenza sulle "metriche" del font. Se nel codice aggiungo:

    System.out.println(buttonPrint.getFont());

    Vedo che il font del pulsante risulta:

    javax.swing.plaf.FontUIResource[family=Dialog,name=Dialog,style=bold,size=12]

    mentre poi nel PDF generato vedo che il font incorporato è: Helvetica-Bold (Embedded Subset)

    Quindi c'è stata effettivamente una "mappatura" del font. E presumendo appunto che le metriche del font siano leggermente un po' diverse, e questo può certamente causare quel problema.

    Come ovviare? Non è facile. Una soluzione veloce e facile (ma meno "bella") è stampare il frame come "immagine".
    Invece di stampare subito il frame sul Graphics ricevuto dal print(), crei un BufferedImage di dimensione uguale al frame, stampi il frame sul Graphics del BufferedImage e POI infine stampi il BufferedImage sul Graphics della stampante.
    Questo rende la stampa sicuramente più "sgranata" però è sicuramente più fedele a quanto vedi a video.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17
    Dunque, non credo il problema risieda nel font, o, perlomeno, non è tutto li.
    Nella mia applicazione non utilizzo il font di sistema, ma un font che risiede all'interno del pacchetto (e poi del jar generato).
    All'interno del PDF generato risulta il font corretto, anche se con una dimensione in punti differente.
    Ma il problema non è nella dimensione del font in se, ma nella spaziatura tra i caratteri.
    Sul tuo esempio non si vede magari, ma nella mia applicazione è molto evidente, tanto da eliminare lo spazio tra le parole.
    Dimenticavo, la strada della stampa come immagine non è praticabile, vorrei che il testo rimanesse tale in modo che possa essere eventualmente copiato/incollato.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da LukeV Visualizza il messaggio
    Nella mia applicazione non utilizzo il font di sistema, ma un font che risiede all'interno del pacchetto (e poi del jar generato).
    Che font è? È "pubblico", si trova in rete gratuitamente per cui potrei provare anche io?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17
    Semplicissimo Tahoma, ma, come dicevo, dubito che il problema sia nel font, ho provato anche con Arial e Segoe UI senza risolvere nulla.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    17
    Se qualcuno è in ascolto e ha voglia di aiutarmi, qui è un esempio pratico di ciò che succede.
    Questo è quello che vedo a video:
    Video.jpg
    Questo è ciò che ottengo sulla stampante:
    Printer.jpg
    Possibile che sia l'unico a cui succede?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.