Passa ai contenuti principali

Java, CUPS, GNU\Linux e problemi di stampa

Il problema riscontrato è un bel messaggio di eccezione nella console di Java quando si cerca di aprire la finestra di dialogo di impostazione della stampante o dell'anteprima di stampa. Il messaggio ha questo aspetto:

Caused by: java.lang.NullPointerException: null attribute
at sun.print.IPPPrintService.isAttributeValueSupported(IPPPrintService.java:1147)
at sun.print.ServiceDialog$OrientationPanel.updateInfo(ServiceDialog.java:2121)
at sun.print.ServiceDialog$PageSetupPanel.updateInfo(ServiceDialog.java:1263)
at sun.print.ServiceDialog.updatePanels(ServiceDialog.java:437)
at sun.print.ServiceDialog.initPrintDialog(ServiceDialog.java:195)
at sun.print.ServiceDialog.(ServiceDialog.java:124)
at javax.print.ServiceUI.printDialog(ServiceUI.java:188)
at sun.print.RasterPrinterJob.printDialog(RasterPrinterJob.java:855)
at sun.print.PSPrinterJob.printDialog(PSPrinterJob.java:421)

Si tratta di un problema noto dal Novembre 2007 e sostanzialmente è un bug di integrazione tra Java e il pacchetto CUPS, il più noto server di stampa usato dalle maggiori distribuzioni GNU\Linux. Nel momento in cui scrivo sto usando Ubuntu 9.04, CUPS 1.3.9, JRE 1.6.0_12. I programmatori di CUPS hanno girato il problema alla SUN ed è tracciato in questo ticket. Se siete invece amanti di Launchpad, per ubuntu il bug è tracciato qui.
La causa sta nel fatto che Java si attende un'impostazione della stampante sull'orientamento di stampa che non viene passata di default dal server CUPS. Non esiste quindi una soluzione ufficiale, se non un semplice work-around che per me ha funzionato molto bene. La soluzione proposta da pinkopong è quella di aggiungere manualmente questa impostazione.

Metodo grafico per Gnome

  1. Dal menu in alto cliccare su Sistema -> Amministrazione -> Stampa
  2. Selezionare una alla volta le stampanti
  3. Dall'elenco di sinistra selezionare Opzioni lavoro
  4. Modificare il valore di Orientamento da automatico ad uno qualsiasi
  5. OK per confermare
Metodo da linea di comando (the CLI way)
Aprire il file di configurazione delle stampanti CUPS da terminale con il comando
gksudo gedit /etc/cups/printers.conf
Aggiungere a tutte le stampanti presenti l'opzione di orientamento della pagina prima della chiusura del tag Printer


# Printer configuration file for CUPS v1.3.7
# Written by cupsd on 2008-09-08 11:24
.
.
.
Option orientation-requested 3



Ultimo passo
Dopo aver applicato uno dei due metodi è necessario riavviare il server di stampa con:
sudo invoke-rc.d cups restart

Post popolari in questo blog

Se excel non aggiorna le formule

Oggi in ufficio è capitata una richiesta particolare. In un documento excel dopo aver eseguito un copia-incolla di una formula non si aggiornavano i risultati nelle celle interessate. Dopo attimi di perplessità dal fondo dell'ufficio il capo ci illumina con una funzione ai più sconosciuta e che ha risolto il problema: il tasto F9. Scusate la mia ignoranza in excel ma questo blog è pensato proprio per appuntare esperienze di vita informatica. Tutto sta nel fatto che i "calcolatori d'un tempo" non disponevano di una adeguata potenza di calcolo e nelle operazioni di copia-incolla si verificavano lunghe attese per l'aggiornamento. La soluzione adottata da MS è stata quella di inserire un'opzione per impedire l'aggiornamento automatico e forzarlo con una combinazione di tasti... il tasto F9!
Combinazioni utili per il calcolo delle formule F9 = calcola le formule modificate dall'ultimo calcolo in tutte le cartelle e fogli di lavoro aperte. MAIUSC + F9 = c…

Dove si trova il mio ISP?

Il link di oggi è My IP Address Lookup. Questo servizio spagnolo mostra dove si trova fisicamente il vostro ISP. Quando vi collegate ad internet in realtà prima fate una richiesta (il vostro modem o router) ad una macchina del vostro ISP e poi vi viene assegnato un indirizzo IP. Se volete sapere dove si trova la macchina che vi permette di accedere alla rete visitate pure
http://www.ip-adress.com/

Potrete inoltre conoscere il vostro IP e il provider che ve lo offre

RaspberryPi: Abilitare l'audio analogico

Introduzione
Il mio raspi è collegato ad una vecchia TV CRT che ho convertito in una smartTV. RaspberryPi infatti è un ottimo prodotto per configurare un media center con connessione ad internet ed altre amenità. Se usate una vecchia TV come nel mio cavo potrebbe interessarvi come abilitare l'uscita analogica per l'audio, il jack da 3,5 mm per intenderci. Per fare ciò dobbiamo assicurarci di avere i moduli giusti del kernel caricati e configurare il raspi ad utilizzare la giusta uscita audio, infatti di default utilizza la porta HDMI.

Controllo della presenza del modulo snd_bcm2835
1 Per controllare che il modulo giusto sia presente da linea di comando eseguire

sudo lsmod | grep snd_bcm2835

2 Se non vedete alcun output vuol dire che il modulo non è ancora caricato altrimenti potete passare al prossimo paragrafo.
3 Proviamo a caricare  il modulo con il seguente comando da terminale

sudo modprobe snd_bcm2835

Se l'output del comando è una cosa del genere

FATAL: Module snd_bcm2835…