Benetz
martedì 20 aprile 2010
Visualizzare un Documento PDF in un PictureBox
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!
lunedì 25 gennaio 2010
Immagini su database con Linq e C#
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:
giovedì 15 ottobre 2009
Windows Seven Enterprise









mercoledì 14 ottobre 2009
Tribook concept

