Benetz

martedì 20 aprile 2010

Visualizzare un Documento PDF in un PictureBox

Ciao a tutti, in questi giorni mi sono imbattuto in un nuovo problema..

Dovevo visualizzare un documento in PDF in una Windows Form e non c'era verso, anche cercando in internet trovavo molti che chiedevano come fare e nessuno che sapeva rispondere...

Una volta trovata la soluzione ho deciso di metterla qua, sperando che torni utile a qualcuno con il mio stesso problema (facendogli risparmiare un bel po' di tempo).

La soluzione consiste nel ricavare un'immagine per ogni pagina del documento PDF, e di caricarla in un pictureBox. Tutto qui.

Per il nostro progetto avremo bisogno di 1 libreria e 2 classi esterne (rigorosamente OpenSource):

- libreria: gsdll32.dll.
- Classe: Api.cs  Documentazione qui
- Classe: Gs.cs   Documentazione qui


La libreria la trovate su questo sito gratuitamente.E' open source e la documentazione la trovate qua (è di GhostScript).
Questa libreria dovrete copiarla all'interno della cartella System32 (perchè avremo bisogno di importarla per usarla).

Le 2 classi le potete trovare all'interno di questo progetto in questo percorso: PDFSharp-MigraDocFoundation-1_31\PDFsharp\code\PdfSharp.Ghostscript\Ghostscript\  (io le ho trovate qui, dovrebbero essere scaricabili dal sito di GhostScript comunque)


A questo punto il grosso è fatto.. ecco il codice che ci rimane da scrivere:


  //GS è la classe che abbiamo scaricato prima

  GS gs = new GS();
  //mi creo un'immagine del PDF tramite GhostScript
  Image imagePDF = gs.PdfToPng("NomeFilePdf", NumeroPagina, RisoluzioneImmagine);
  pictureBoxAnteprima.Image = imagePDF ;

martedì 26 gennaio 2010

Mittenti inventati!

Tempo fa mi sono imbattuto in un programmino che mi permetteva di inviare delle mail inventando il mittente. Così mi sono informato se questo fosse lecito o no, e  mi sono messo a creare un programmino che mi permette di fare altrettanto.

Il programma è molto semplice, ecco la classe che chiamo per inviare la mail, passandogli i parametri desiderati:

public string Invia(string str_From, string str_To, string str_object, string str_smtpServer, string str_body, MailPriority mail_priority)
        {
            try
            {
                MailMessage mail = new MailMessage(str_From, str_To);
                SmtpClient SmtpMail = new SmtpClient(str_smtpServer);
                mail.Subject = str_object;
                mail.Body = str_body;
                mail.Priority = mail_priority;
                SmtpMail.UseDefaultCredentials = true;
                SmtpMail.Send(mail);
                return "E-mail inviata correttamente";
            }
            catch (Exception ex)
            {
                return "Errore durante l'invio della mail - " + ex.Message;
            }
        }

Ecco fatto!! Semplice no??

Con questo piccolo codice potrete mandare la mail a chiunque con un nome inventato!! Ah, deve cmq essere di questo formato: a@b.c, deve sembrare un indirizzo valido!!

Buon divertimento!

lunedì 25 gennaio 2010

Immagini su database con Linq e C#

Tempo fa cercavo in internet una guida comoda su come salvare e caricare le immagini da database usando Linq e C#, trovando poche e non sempre facili solizioni.

Ho deciso così di inserire qui una guida fatta da me su come salvare e caricare le immagini attraverso Linq e C# su database Sql nel modo più semplice che ho trovato.

Io uso Visual Studio, e uso la ClassToLinq per andare a leggere e scrivere nelle mie tabelle.

Innanzitutto quando portiamo la nostra tabella nella nostra ClassLinqToSql (DataClassesImmaginiDataContext in questo esempio) andiamo a modificare il tipo restituito dal campo di tipo Image, come visualizzato nelle immagini seguenti:

Appena trascinata la nostra tabella nel DataContexImmagini notiamo come il campo restituito dalla colonna Immagine della tabella Immagini sia di tipo Binary (System.Data.Linq.Binary).




Modifichiamo questo tipo in byte[] (System.Byte[]).



Ora il gioco è praticamente fatto! Caricare e salvare le immagini nel nostro database è cosa presto fatta:

Ecco il codice per caricare una immagine già salvata nel database:


private void CaricaImmagine(long idImmagine)

{

if (idImmagine != 0)

{

using (DataClassesImmaginiDataContext dataContext = new DataClassesImmaginiDataContext())

{

var locImmagine = (from locImage in dataContext.Immagini

where locImage.IdImmagine == idImmagine

select locImage).Single();


lblDescrizioneFoto.Text = locImmagine.Descrizione;


if (locImmagine.Immagine != null)

{

object objImmagine = locImmagine.Immagine;

if (objImmagine != null && objImmagine.ToString() != "")

{

byte[] objByte = (byte[])objImmagine;

MemoryStream ms = new MemoryStream(objByte);

Image returnImage = Image.FromStream(ms);

pictureBoxImmagine.Image = returnImage;

}

}

else

{

pictureBoxImmagine.Image = null;

}

}

}

else

{

pictureBoxImmagine.Image = null;

lblDescrizioneFoto.Text = "";

}

}


Ed ecco il codice per inserire una nuova immagine nel database:


private void SalvaImmagine()
{
using (DataClassesImmaginiDataContext dataContext = new DataClassesImmaginiDataContext())
{
Immagini immagineDaSalvare = new Immagini();
immagineDaSalvare.Descrizione = txtDescrizioneImmagine.Text.ToString();
if (pictureBoxImmagine.Image != null)
{
Image locImmage = Image.FromFile(pictureBoxImmagine.ImageLocation);
MemoryStream ms = new MemoryStream();
locImmage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] objByte = ms.ToArray();

immagineDaSalvare.Immagine = objByte;
}

dataContext.Immagini.InsertOnSubmit(immagineDaSalvare);
dataContext.SubmitChanges();
}
}

giovedì 15 ottobre 2009

Windows Seven Enterprise

Tra pochi giorni sarà finalmente l'ora dell'attesissimo Windows Seven!! Dopo essere stato soddisfatto da alcune beta rilasciate da microsoft qualche tempo fa ho deciso di formattare tutto il pc e i vari sistemi operativi per lasciare posto ad un solo grande sistema: Seven.

In questo articolo vi descriverò le mie opinioni riguardo il nuovo OS di Microsoft, pro e contro.

Innanzitutto è da dire che io ho usato a lungo tempo XP, e lo uso tutt'ora per lavoro, mentre nel mio pc di casa è da un pò di tempo che ho installato Vista.

Il pc dove andremo ad installare il nuovo sistema operativo dispone di un processore intel core2 quad CPU @2.50 GHz 2.33 GHz, 4 giga di RAM installata, Scheda video Nvidea GTX260 (896MB GDDR3)

Iniziamo: impostiamo il bios, inseriamo il cd di Windows Seven Enterprise 64bit, facciamo partire il boot da cd.

Da dire che L'installazione del Seven è velocissima. Una ventina di minuti e ce la siamo già cavata, siamo già sul nostro desktop. Molto più veloce sia di Xp che di Vista. Già un punto a favore per il nuovo arrivato.


E qui arriva il primo punto forte: il sistema operativo ha riconosciuto TUTTO il componente harware del mio sistema. Funziona tutto.

Grande..se penso che la prima volta che ho installato Vista a 64 bit non andava nemmeno la scheda audio, e ho dovuto passare ore in internet alla ricerca di driver (non solo della scheda audio!!).

Una volta connesso a internet windows Update si scarica qualche aggiornamento di driver (cosa buona e giusta), e un aggiornamento di silverlight.

Un piccolo particolare:

In questi giorni avevo tanto sentito parlare del "Ballot Screen" ( http://risorsegeek.altervista.org/archives/4590 , http://www.citynewsonline.org/2009/10/08/windows-7-il-ballot-screen-per-scegliere-i-browser/ ), che mi avrebbe dato la possibilità di scegliere un eventuale browser diverso da IE8. Cosa che avrei apprezzato, in quanto amante di Google Chrome.

Niente contro Explorer per carità, ma mi avrebbe risparmiato quei due secondi di andare su google e scaricarmi il nuovo browser (considerando che la prima volta che si apre IE bisogna specificare se usare le
impostazioni consigliate o modificarle.. mettere le consigliate di default no? ).

Comunque tutto sommato sono contento, il sistema NON SEMBRA, E' molto più veloce di Vista, e posso già iniziare a provare la compatibilità con i miei programmi "usuali".


Appena installato Seven si "accontentava" di soli 600 mega di ram, (al contrario di Vista che ne usava quasi un giga), dopo aver installato qualche programma, compreso antivirus e tutto vedremo la ram girare attorno ai 1100, 1200 mega. Sinceramente speravo un pò meno, ma d'altra parte Seven non lo considero un sistema operativo nuovo, ma una "espansione"(Ben riuscita però) del Vista.


Ecco come si presenta il nostro desktop dopo aver installato qualche programma..




La prima cosa che si nota è la nuova barra delle applicazioni.

Un misto tra avvio veloce e una Dock vera e propria: In questa barra è possibile trascinare i nostri programmi più usati, e di lanciarli con un solo click.
Molto utile anche la possibilità di eseguire le ultime operazioni fatte semplicemente cliccando con il tasto destro del mouse sopra l'applicazione, come visualizzato qua sotto:



Se abbiamo più documenti aperti ecco che possiamo vedere dove si trova la cartella aperta, senza dover ridurre a icona le altre per trovarla.. basta spostare il mouse sopra l'anteprima.



E' possibile ripristinare la nostra barra in stile vista, ma io consiglio di non spaventarsi al primo impatto, di provare a vedere come funziona prima di "tornare indietro", soprattutto perchè la trovo molto funzionale e carina da vedere.


La seconda cosa che notiamo è la siderbar scomparsa. Mentre in Vista avevamo la fascia nera in cui inserire i gadget, qui li inseriamo direttamente nel desktop. Anche in Vista si poteva fare certo.. ma una volta trascinati fuori dalla barra li vedavamo "Espansi" i nostri gadget. In Windows Seven invece possiamo sciegliere noi come visualizzarli. Se li spostiamo sulla destra del monitor vedremo che possiamo "Legarli" al desktop, proprio come se esistesse una sidebar "invisibile", in cui andiamo ad inserirli.



Altra cosa da notare: la barra delle applicazioni ora è un pò più grande di quella di Vista, e lascia vedere anche il Giorno oltre che l'ora. Anche nell'area di notifica (system tray) sono state apportate delle modifiche: ora tente a nascondere molto di più le icone. Per visualizzare le nostre icone nascoste dovremo cliccare sulla frecettina che punta verso l'alto. Possiamo ovviamente decidere noi quale icona visualizzare, se visualizzarla sempre, nasconderla sempre, o visualizzarla solo quando ha qualche notifica da visualizzare.




Il menù start sostanzialmente è rimasto lo stesso, con qualche collegamento rapido ai nostri ultimi documenti usati per ogni programma.


Altra cosa interessante sono i collegamenti ai temi e ai gadget direttamente con il click destro sul desktop.


Questo ci permette di aggiungere direttamente i gadget da qui, anzichè dover andare ogni volta in cerca della sidebar.


Windows Seven inoltre dispone di diversi temi che possiamo applicare o modificare.




Un tema può disporre di diversi sfondi, che cambiano a ciclo, e permette inoltre di cambiare il colore delle nostre finestre, per una visualizzazione più piacevole.


Una cosa che ho trovato molto utile è l'XP mode.

Questa non è altro che una macchina virtuale con caricato Windows XP, per far funzionare tutti quei programmi che non sono compatibili con questo nuovo sistema operativo. Un incentivo in più per quegli utenti che ancora utilizzato XP, e che magari non vogliono passare ad altro sistema operativo per paura di perdere programmi molto spesso fondamentali.

Questa macchina virtuale (lo è a tutti gli effetti, richiede infatti l'installazione di microsoft Virtual PC), ci dà la possibilità di virtualizzare non solo i nostri lettori cd, ma anche le nostre prese usb! Essenziali per trasferire dati nelle nostre chiavette.





Microsoft Virtual PC e l'XP mode sono forniti gratuitamente da Microsoft. Non sono inclusi però nell'installazione di Windows Seven, e dobbiamo andarli a scaricare da questo sito:
http://www.microsoft.com/windows/virtual-pc/download.aspx

E' disponibile la versione sia a 32 bit che a 64.

Windows XP Mode possiamo usarla solo con Windows 7 Professional, Ultimate ed Entrerprise.

Windows XP Mode will only run on Windows 7 Professional and Windows 7 Ultimate editions and requires a virtualization engine, such as Windows Virtual PC.

Insomma che dire, un bel sistema operativo, di sicuro migliorato rispetto a Vista. Lo consiglio anche agli utenti Xp, in quanto è sempre bello avere un'interfaccia grafica "bella da vedere" e da usare. Senza rinunciare a niente.



Per domande e informazioni: RobertoBenetton@gmail.com

mercoledì 14 ottobre 2009

Tribook concept


Anche questo non deve essere male.. soprattutto per quelli come me che sono abituati a lavorare su più schermi..

Con questo portatile non dobbiamo più preoccuparci di non avere più posto sul desktop per le nostre icone.. e con il touchpad esteso così andremo benissimo a gestire le finestre in questo ultra wide screen da 21 pollici!! Bella anche l'estetica, sempre in stile mac.



Microsoft Courier

Ho trovato un tablet stupendo!!! Se è tutto vero è mio appena esce!!



Il video è fatto a computer..quindi bisogna vedere quando uscirà come sarà nella realtà..però se è veramente così questo mi sa che lo prendo..molto utile!! soprattutto per chi va all'università e deve prendere appunti su appunti secondo me.. no?
E poi lo vedo molto portatile.. mi ispira proprio..

Lettori fissi