Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti.
Sto lavorando a un progetto e per creare dei moduli stampabili ho utilizzato questa libreria, a dir poco splendida:
http://www.pdfsharp.net/wiki/MainPage.ashx Per creare il pdf non ci sono problemi, riesco a fare tutto, disegnare, scrivere, salvare ecc
Ora però volevo aggiungere al mio form un oggetto pagepreview, come nel sample a questa pagine:
http://www.pdfsharp.net/wiki/Preview-sample.ashx Nel file di download della libraria sono allegati anche i sorgenti dei sample del sito, ma sono scritti in C#, che conosco molto poco. In più sul mio sistema ho solo il compilatore per VB.NET. Ho provato a cercare di capire come funziona il codice, a convertirlo in vb, ma non potendo eseguirlo in debug, non capisco il meccanismo.
Vi chiedo, qualcuno può aprire il progetto in allegato e salvarmi/convertirmi il sorgente in VB.NET ?
Mi basta questo, poi vedo io di studiarmelo, e capirlo.. grazie mille!
PS: sono necessarie le librerie dll di pdfsharp, reperibili free sul sito
Ultima modifica effettuata da Renny il 22/04/2012 alle 13:23
Ok.. ho trovato un sito dove poter convertire il codice da C# a vb.net.
Quello che non riesco è creare un progetto funzionante in tutte le sue parti perché mi da problemi con gli eventi..
C'è tutta una parte che utilizza i delegate che non conosco..
Se mi dite dove posso caricare il progetto, lo uplodo, così ci date un'occhiata..
...
Ultima modifica effettuata da Renny il 22/04/2012 alle 17:22
lo puoi uppare direttamente qui..
al prossimo post di risposta sotto alla finestra per scrivere il messaggio e ai vari smail c'è il pulsante "Scegli file".
Da lì scegli file e clicchi invia (attento che il formato rar non è valido quindi comprimilo in zip)
p.s. mi sta venendo un dubbio, forse è un'opzione abilitata solo ai membri ma credo di no, comunque prova
Ho impostato il project, in modo che parta su sub main e ok.
Il form di preview è form, render è la classe che contiene l'istruzione sub Disegna, che è quella che hai convertito tu e che contiene del semplice codice per creare il mio pdf. Quello che non mi è chiaro è il passaggio "form.RenderEvent = .." e il fatto che la sub Disegna della classe render ha come parametro di input un oggetto xgraphics, che non so chi glielo passa..
Se riesci a compilare il progetto e a farmi sapere qualcosa.. A me basta utilizzare l'oggetto pagepreview per fargli mostrare il pdf che creo io, di cui ho già tutto il codice fatto..
Grazie
ok, sto provando il sorgente anche se è in C# e non in VB.NET come mi aspettavo (dato che avevi detto che stavi lavorando con vb no?)
comunque sia (a parte un errore di distrazione) vedo che non mi viene riconosciuto PagePreview, è questo l'errore che non ti è chiaro?
Edit: Non so perchè ma è come se mi mancasse una libreria.. mm non gli va bene il framework che ho, ma non capisco come mai con vb 2010 mi referenzia correttamente le librerie..
Ciao
Eh, si, il codice che ho trovato fa parte dei sample delle librerie e sono in C#, linguaggio che conosco poco e del quale non ho il compilatore. A me serviva avere lo stesso progetto scritto in vb.net, in modo da potermelo studiare e capire.
Quello che ho fatto è stato convertire i 2 file del sample, program.cs e previewform.cs tramite questo sito http://www.developerfusion.com/tools/convert/csharp-to-vb/ Ho creato quindi un nuovo progetto in vb.net, nel codice del form ho aggiunto il codice di previewform e in una classe separata ho messo program, dove c'è la sub main che viene eseguita all'avvio del progetto.
Gli errori che rilevo sono qua:
''' <summary>
''' Create a new PDF document and start the viewer.
''' </summary>
Private Sub MakePdf()
Dim filename As String = Guid.NewGuid().ToString().ToUpper() & ".pdf"
Dim document As New PdfDocument(filename)
document.Info.Creator = "Preview Sample"
Dim page As PdfPage = document.AddPage()
page.Size = PageSize.A4
Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
'RaiseEvent renderEvent(gfx) <- non esiste l'evento renderEvent(gfx)
document.Close()
Process.Start(filename)
End Sub
'e in questa funzione
Private Sub PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
Dim graphics As Graphics = ev.Graphics
graphics.PageUnit = GraphicsUnit.Point
Dim gfx As XGraphics = XGraphics.FromGraphics(graphics, PageSizeConverter.ToSize(PageSize.A4))
'RaiseEvent renderEvent(gfx)
ev.HasMorePages = False
End Sub
Quando faccio il debug, commentando le istruzioni, il codice funziona. Quello che non capisco è però perché e come adattarlo. Io ho nel mio progetto una funzione che crea il new document pdf e il gfx conseguente. Vorrei quindi passare il mio gfx per mostrare l'anteprima.
Ora studio io pezzo di codice che hai linkato, anche se ad occhio sembra la conversione in .net di previewform.
Ciao e grazie.
EDIT 1
Allora, ho fatto un po' di prove sono riuscito a far funzionare in parte il controllo pagepreview.
Il nocciolo è questo:
Che imposta l'esecuzione dell'evento render tramite un delegate (giusto?) puntando alla sub renderpage dell'oggetto report.
Su un altro form ho la classe report e la sub renderpage. Come parametro di input la sub prevede un oggetto Xgraphics e al suo interno ho delle istruzioni per disegnare e scrivere sull'oggetto di tipo Xgraphics. Quello che non capisco è
-da dove salta fuori sto oggetto, cioè, dov'è che viene inizializzato? Io ho già il mio oggetto Xgraphics, che uso per creare i miei report, a partire dal documento pdf.
-Come faccio a far mostrare il MIO oggetto Xgraphics, già creato e scritto?
Ultima modifica effettuata da Renny il 23/04/2012 alle 12:06
mm... non ho le idee molto chiare, visto che ora l'hai convertito in vb.net (quindi dovrebbe andare anche a me) ti dispiacerebbe allegarlo così lo provo direttamente?
Testo quotato
Io ho già il mio oggetto Xgraphics, che uso per creare i miei report, a partire dal documento pdf.
-Come faccio a far mostrare il MIO oggetto Xgraphics, già creato e scritto?
mmm.. sottolinei "mio" cioè vuoi dire che mostri un oggetto Xgraphics differente?
Ciao..
Ok, ti allego la prova che sto facendo..
Si, quello che vorrei è utilizzare la preview per mostrare il MIO documento già bello che creato con tutta una serie di altre sub...
Della serie, come si imposta una proprietà: pagepreview.page = myGfx
NB: queste istruzioni non esistono