Buona sera, ho scritto un appweb ora mi trovo a dover creare un report da una query (mysql) ovviamente mi sono accorto che non pi possibile costruirsi il report come sull’app desktop, dopo aver cercato per tutto il giorno navigando tra Valentina Report, Dyna PDF ecc… chiedo aiuto.
Ero abituato a crearmi i vari report cos :
dim g as graphics
dim p as printerSetup
p=new printerSetup
if p.pagesetupDialog then
g=openprinterdialog§
end if
g.bold=true
g.textsize=15
g.drawstring rs1.Field(“DESC1”).Value,2,20
g.textsize=9
…
…
Chiedo quale strada posso intraprendere per avere un report senza dover installare plugin o programmi terzi
Un saluto e grazie
Enrico
Se vuoi un plugin per generare un PDF ti mando il mio …
Qui c’ il plugin che ti ho promesso, semplice da usare, c’ l’esempio.
Per la guida fai riferimento a FPDF da qui…
Funziona anche a 64 bitty
Nell’esempio c’ tutto quello che ti serve per farlo funzionare, poi ovviamente fai tutte le modifiche che vuoi.
pu anche stampare i barcode CODE 128, 3of9, Ean8, Ean13…
Ciao, direi solo una cosa… UNO SPETTACOLO!!!
Grazie infinitamente!!!
Valentina ADK for XOJO is the easy way to do it Print and PDF and Printing Direct from Web
Thank you Alexis, but I wanted to try something free and the Massimiliano plugin really fuses
Si vero Massimiliano e poi funziona davvero egregiamente, sto solo litigando con la funzione pdf.addpage che in debug non da problemi ma una volta pubblicato mi ritorna un nilobject… ma ci salto fuori!
sempre grazie e spero a buon rendere
i do not see any free that works good like valentina with hard work
[quote=329282:@Enrico La Rosa]Si vero Massimiliano e poi funziona davvero egregiamente, sto solo litigando con la funzione pdf.addpage che in debug non da problemi ma una volta pubblicato mi ritorna un nilobject… ma ci salto fuori!
sempre grazie e spero a buon rendere[/quote]
Roba vecchia, lo sostituisco sempre nello short report di bkeeney al posto di dynapdf. Non mi ricordo se al costrutto di addpage devi fare altro prima o altro dopo il comando. Poi ci guardo e te lo dico
Ho fatto alcune prove e ti confermo che l’unico comando pdf.addpage() che a me funziona su piattaforma MAC OS,
Su windows al momento non ho possibilit di provare.
si si ho trovato il problema nello scrivere ho inserito addpage senza le parentesi… nella fretta… era una stupidata.
grazie sempre
Puoi anche provare DynaPDF (per provarlo gratuito)
Il vantaggio che stabile e hai il pieno e totale controllo del documento PDF in tutte le sue parti
Il problema che a volte per scrivere un software si pagati una miseria e non si hanno risorse ‘monetarie’ tali per affrontare la spesa …
Comunque Enrico,
Prima che finisci al reparto psichiatrico puoi notare che hai a disposizione una modifica di cell che si chiama cellcut; identica a cell ma taglia il contenuto, quindi non effettua il ‘word wrap’ su un’altra cella, ti verr utile…
Getlunghezzatesto che riporta la dimensione di una cella; Millimetrata, che mostra la griglia nel formato ‘carta millimetrata’ che ti sar utile per riempire moduli, e poi come ti dicevo prima Code39, Ean13, Interleave2of5,
Se devi riempire dei moduli io ho adottato il sistema di inserire un’immagine nella pagina come sfondo.
Ovvio che come dice Antonio con DynaPDF puoi compilare i moduli, ma ti serve la versione ‘avanzata’ che haim costa parecchio.
Non solo per le funzionalit avanzate, anche a livello base puoi fare molto (tabelle ad esempio) e molto semplicemente (una volta capito come funziona, ma la documentazione enorme)
Massimiliano, per quanto riguarda i costi una questione di prospettive e di quanto valuti il tuo tempo. Se riesci a completare un lavoro in meno tempo e con meno “grane” devi bilanciare il costo con il tempo risparmiato che puoi rinvestire in altri progetti (guadagnando) o in serenit (che ha sempre il suo bel valore)
Ragionando in questo modo si rischia di finire nel paradosso del venditore: “Non compro nulla cos non ho spese…” per poi non capisce perch nessuno visita il suo negozio … che vuoto!
La versione base costa poco (in termini di ore di lavoro) e sta a te poi sfruttare questa possibilit in altri progetti.
Per carita, abbiamo comperato DYNAPDF, la versione base,
La documentazione enorme, davvero un fiume, ma funziona bene…
Purtroppo la versione base non permette di utilizzare layer o incorporare / scrivere su un pdf esistente,
Tutto sommato per carichiamo come con FPDF un’immagine con il documento da compilare.
Abbiamo acquistato anche short, ho anche fatto una modifica per utilizzare short con FPDF, funziona ugualmente bene.
In effetti mi sto guardando anche DynaPDF che non assolutamente male, per ora visti i tempi stretti mi bastato utilizzare fpdf.
Intanto ne approfitto per chiedere a Massimiliano come ha gestito l’inserimento dell’immagine… in locale ok ho messo il percorso… (pdf.Image(“C:\Users\Henry\Desktop\Esempi Xojo Henry\Web\icone\logo.jpg”,10,10,35,10))ma se lo pubblico? metto il percorso web? (scusa se una domanda un po sciocca).
Grazie a Massimiliano per i PREZIOSI suggerimento !!!
Ringrazio sempre il buon Antonio che sempre disponibile ad aiutare tutti!
allora fpdf un p rognoso …
devi passare alla funzione un percorso assoluto
il codice che riporto quello che utilizzo per stampare le fatture e lo ho messo nell’header della classe report.
if self.nomeimmagine.Trim <> "" then
dim paths as FolderItem
dim nomefilef as FolderItem
dim cartella as string
#if TargetWin32
paths = getfolderitem("")
#elseif TargetMacOS
paths = getfolderitem("")
#elseif TargetLinux
paths = getfolderitem("")
#endif
cartella = paths.ShellPath
dim nomefile as string
nomefile = cartella
#if targetwin32
nomefile = nomefile + "\" + self.nomeimmagine
#elseif TargetLinux
nomefile = nomefile + "/" + self.nomeimmagine
#elseif TargetMacOS
nomefile = nomefile + "/" + self.nomeimmagine
#endif
nomefilef = New FolderItem(nomefile,FolderItem.PathTypeShell)
// 25/03/2016 Aggiunto orientamento di pagina ...
// il parametro viene preso in sola lettura dalla definizione del pdf nel metodo di stampa
if self.DefOrientation = "P" then
if nomefilef.exists = true then
self.Image(nomefile, 0, 0, 210, 297,"jpg")
end if
else
if nomefilef.exists = true then
self.Image(nomefile, 0, 0, 297, 210,"jpg")
end if
end if
end if
self.SetXY(0,0)
self.SetRightMargin(-0.50)
self.SetAutoPageBreak(true,1)
self.Ln(3.5)
Qui in pratica carico l’immagine e la imposto con la dimensione di tutta la pagina.
L’immagine deve essere presente nella cartella dell’APP
Spero ti funzioni al primo colpo …
Ciao Massimiliano,
in realt continuo ad avere un errore quando vado a stampare, mi spiego meglio in realt sono riuscito a isolare la parte che va in errore che nel metodo output, l’errore solo quando pubblico sul server il programma MAI in debug, in debug funziona sempre.
L’errore questo :
Unhandled NilObjectException
Message:
Stack:
fpdf.Output%%oss
Frm_Controlli_Contabili.Frm_Controlli_Contabili.Stampa_Ctr_Cont%%o<Frm_Controlli_Contabili.Frm_Controlli_Contabili>
Frm_Controlli_Contabili.Frm_Controlli_Contabili.Button3_Action%%o<Frm_Controlli_Contabili.Frm_Controlli_Contabili>o
Delegate.IM_Invoke%%o
AddHandler.Stub.29%%
WebButton._ExecuteEvent%b%osA1v
WebControl.!_ExecuteEvent%b%ssA1v
WebSession._HandleEvent%%oso<_HTTPServer.HTTPRequestContext>
WebSession._HandleRequest%i4%oso<_HTTPServer.HTTPRequestContext>
WebApplication._HandleHTTPRequest%%oo<_HTTPServer.HTTPRequestContext>
_CGIGateway.GatewayRequestThread.Event_Run%%o<_CGIGateway.GatewayRequestThread>
Ho messo dei brutali msg box per individuare il punto preciso dove il programma si ferma :
Dim f As FolderItem
Dim t as BinaryStream
//Output PDF to some destination
//Finish document if necessary
if(me.state < 3) then me.Close()
//Normalize parameters
if(name = "Stampa1.Pdf") then
name="doc.pdf"
dest="F"
end if
//Normalize parameters
if(name = "Stampa2.Pdf") then
name="doc.pdf"
dest="F"
end if
select case dest
//Save to local file
case "F","S","P"
f = GetFolderItem(name,0)
'f = new FolderItem(name,FolderItem.PathTypeShell)
f = SpecialFolder.Documents.Child(name)
[b]MsgBox " INIZIO STAMPA PDF"[/b]
t = f.CreateBinaryFile("pdf")
[b]MsgBox " CREAZIONE FILE STAMPA PDF"[/b]
t.Write me.buffer
t.close
App.MyFile = WebFile.Open(f)
App.MyFile.ForceDownload = True
Session.ShowURL(App.MyFile.URL, TRUE)
case else
me.Error("Destinazione output non corretta: " + dest)
'return false
end select
Direi che la stringa incriminata questa : f.CreateBinaryFile(“pdf”), infatti l’errore subito dopo inizio stampa.
Non capisco perch in locale funzioni senza problemi.
Ti mai capitato l’errore?
Ciao e grazie
Enrico