Archivio Mensile: novembre 2008

Tips: stampare PDF in windows *da Java*

Come promesso, adesso vi mostrerò un metodo per aggirare il problema di stampare file PDF da java in windows (sempre che non abbiate una stampante che accetta direttamente i PDF, nel qual caso questo post non vi serve).
Come potete notare nel titolo ho messo in evidenza “da Java”, infatti tecnicamente non sarà più Java a stampare il pdf ma AcrobatReader. Quello che vi mostrerò è un modo per avviare AcrobatReader e lanciarne la funzionalità di stampa all’interno di un programma Java.

Prima di tutto sfrutteremo le opzioni di avvio che accetta AcrobatReader:

  • /n: serve per lanciare una nuova istanza di AcrobatReader
  • /h: serve per aprire AcrobatReader in una finestra ridotta ad icona
  • /p: serve per mostrare subito la finestra di stampa

Tramite queste opzioni è quindi possibile aprire AcrobatReader per stampare i nostri PDF.
Ma vediamo come farlo da Java:

Process print;
if(print != null)
print.destroy();
print = Runtime.getRuntime().exec("Path2AcrobatReader/AcroRd32.exe /n /s /p " + "nomefile");

ed il gioco è fatto!
(l’IF serve per uccidere una eventuale istanza precedente di AcrobatReader)

EOF

Saa7134-alsa: inviare l’audio al PC senza “cavo-ponte”

In questo (probabilmente) ultimo post sulla scheda TV PCMCIA che ho recentemente acquistato, mostrerò come redirigere l’audio direttamente alle casse del vostro pc, senza l’ausilio di cavi esterni di collegamento tra l’uscita della scheda TV ed il microfono/line-in della scheda audio.

NB: questo metodo serve solamente per il ricevitore analogico, mentre per il dvb-t il problema non si presenta

Per far questo utilizzeremo il modulo saa7134-alsa che nel primo post sull’argomento vi avevo detto di compilare nel kernel.
Prima di tutto quindi, carichiamo questo modulo:

modprobe saa7134-alsa

Ora sistemiamo il volume di uscita della scheda:

alsamixer -c 1

(contando che abbiate solamente 1 scheda audio, oltre alla scheda TV, altrimenti usate -c X, con X pari al numero della scheda audio corrispondente alla scheda TV).

Infine aggiungete queste opzioni per mplayer:

-tv alsa:adevice=hw.1,0:amode=1:audiorate=32000:forceaudio\
:volume=100:immediatemode=0

Come per magia ora avrete anche l’audio!

EOF

DVB-T: ricerca dei canali senza file di configurazione

Nel precedente post su come abilitare il DVB-T, mostravo come effettuare una scansione delle frequenze partendo da un file preconfigurato fornito con le dvb-apps.

Vediamo oggi come effettuare una ricerca su tutte le frequenze disponibili, nel caso in cui nessuno dei file preconfigurati vada bene.

Per prima cosa è necessario installare w_scan, per esempio in gentoo basta un semplice:

emerge w_scan

quindi si crea un proprio file di configurazione tramite il comando:

w_scan -x > it-Città

in questo modo verrà creato un vostro personale file, che potrete usare per creare il vostro channel.conf, utilizzando dvbscan, come mostrato nel mio precedente post (link all’inizio del post).

Ecco fatto!

EOF

V4L: cercare il card number e il tuner number

Come visto nei precendenti post sull’argomento TV & Linux, per poter utilizzare le schede TV è necessario impostare come opzioni dei moduli (della scheda e del tuner) i parametri card number e tuner number.
Con la mia prima scheda TV (una vecchia pinnacle pctv) ricordo di aver perso moltissimo tempo cercando in internet qualche guida che mi indicasse i valori corretti di questi parametri.
Con la mia nuova scheda invece ho scoperto che un elenco molto ricco di questi valori è disponibile all’interno del kernel (o meglio all’interno della sua documentazione)…

matrix_trinidy_tux_jpg

Provate a dare un’occhiata al contenuto di questa dir:

/usr/src/linux/Documentation/video4linux/

noterete la presenza di molti file CARDLIST.* (dove al posto di * compaiono i nomi dei vari moduli: bttv, saa7134,…).
Bene, il contenuto di questi file è proprio un elenco delle schede supportate dal relativo modulo, con l’aggiunta del corrispettivo card number.
Lo stesso vale per il tuner, infatti è presente il file CARDLIST.tuner.

Beh, se avete intenzione di comprare una scheda TV, ora sapete dove trovare un elenco di schede supportate!!!

Java printing & CUPS

Chi di voi abbia avuto necessità di utilizzare il layer di stampa di Java su un sistema con CUPS si sarà ritrovato con una simpatica eccezione di tipo NullPointerException al posto della finestra di dialogo della stampante, questo problema è abbastanza noto in rete (ci sono bug segnalati su vari forum di distro e persino sul sito della SUN), tuttavia non è semplicissimo arrivare ad una soluzione.
Dopo aver girovagato per i meandri della rete per una buona mezz’ora mi sono finalmente imbattuto in questo post (tra l’altro abbastanza recente), che contiene una soluzione molto semplice e rapida al nostro problema.
In pratica il problema sta tutto in un parametro (relativo all’orientamento della pagina) che non viene valorizzato esplicitamente nel file di configurazione di CUPS, quindi basta aggiungere la seguente riga:

<DefaultPrinter Printer>
.
.
.
Option orientation-requested 3
</Printer>

al nostro /etc/cups/cupsd.conf, e come per incanto ecco ricomparire la finestra di dialogo:

Finestra di dialogo della stampante

Finestra di dialogo della stampante


EOF

Scheda TV PCMCIA: attivare il DVB-T

Dopo aver visto come utilizzare il ricevitore analogico della scheda TV PCMCIA, vediamo ora come abilitare anche il ricevitore digitale terrestre (solo canali in chiaro).

DVB-Tux

DVB-Tux


Leggi l’articolo completo

Stampare in Java

Java è un ottimo linguaggio di programmazione ad oggetti, molto semplice da imparare e ben strutturato. Inoltre ci sono ottimi ambienti di sviluppo opensource come eclipse e netbeans, tuttavia se per caso avete bisogno di stampare un report, magari creato con iText allora iniziano i dolori, prima di tutto perché la documentazione scarseggia… vediamo quindi di scrivere due righe sull’argomento.

Servizio di Stampa di Java

Servizio di Stampa di Java


Leggi l’articolo completo

Scheda TV PCMCIA ExtremeTechnology

Oggi ho comprato una scheda TV PCMCIA della ExtremeTechnology, con ricevitore analogico e DVB-T (digitale terrestre), vediamo come utilizzarla con Linux.
pcmcia-tv
Iniziamo dalla TV analogica:

  • Raccolta delle informazioni preliminari

Interrogando lspci ho ottenuto le seguenti indicazioni:

03:00.0 Multimedia controller: Philips Semiconductors SAA7133/SAA7135 Video Broadcast Decoder (rev f0)
Subsystem: KWorld Computer Co. Ltd. Device 7203
Flags: bus master, medium devsel, latency 64, IRQ 20
Memory at 90000000 (32-bit, non-prefetchable) [size=2K]
Capabilities: [40] Power Management version 2

Leggi l’articolo completo

Viva l’umilté

come diceva il buon Arrighe, oggi il Tg1 delle 20 ha mostrato un’umilté straordineria, infatti tra le primissime notizie hanno decantato i brillanti ascolti ottenuti durante i loro speciali sulle elezioni in USA: che notizia essenziale, come avrei potuto vivere senza!!!

Davvero un bell’esempio di umilté e di buona informazione!!! Se poi penso che pago pure il canone per sentire ste cose…

iText: creare facilmente PDF in Java

Recentemente mi è capitato di dover produrre dei report in java, mi sono quindi posto il problema di quale formato utilizzare per facilitarne una successiva stampa.
La prima scelta è ricaduta su HTML, in quanto risulta molto semplice da generare (essendo un formato testuale) e non necessita di librerie aggiuntive, tuttavia la stampa in java di un documento HTML risulta alquanto problematica, infatti l’unico risultato a cui sono giunto è la stampa del sorgente HTML, non della pagina renderizzata.
Mi sono quindi messo a cercare una libreria che mi permettesse di generare programmaticamente un documento PDF, imbattendomi in iText

iText in action

iText in action


iText è una libreria java per la generazione e/o modifica dinamica di documenti PDF, con essa è possibile creare molto velocemente e facilmente report anche complessi contenenti tabelle ed altri tipi di formattazione.
È sufficiente creare un oggetto di tipo Document, ottenere un’istanza di PDFWriter ed iniziare ad aggiungere elementi al documento.
Gli elementi principali sono:

  • Chunk: ovvero il più piccolo elemento di testo che può essere aggiunto, per esempio una frase
  • Paragraph: ovvero una specie di ArrayList di Chunk, Phrase, Image, List,… può contenere testo formattato con stili diversi, e si può specificare un allineamento
  • List: ovvero degli elenchi puntati e/o numerati
  • Image: ovvero immagini, nei più disparati formati
  • Table: ovvero tabelle, per le quali è possibile specificare lo stile dei bordi

Eccovi ora un piccolo esempio:

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(hello.pdf"));
document.open();
Paragraph p = new Paragraph("This is not an hello world!", FontFactory.getFont(FontFactory.HELVETICA, 18));
p.setAlignment(Element.ALIGN_CENTER);
document.add(p);
document.close();

per concludere qualche link:

Buon divertimento!

EOF