Report Xojo Web

  1. ‹ Older
  2. 3 weeks ago

    Alexis C

    May 5 Pre-Release Testers, Xojo Pro Puerto Rico, USA

    Valentina ADK for XOJO is the easy way to do it Print and PDF and Printing Direct from Web

  3. Massimiliano C

    is not verified May 5 Europe (Italy, Bergamo)

    Almeno questo è gratis....

  4. Thank you Alexis, but I wanted to try something free and the Massimiliano plugin really fuses

  5. 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

  6. Alexis C

    May 5 Pre-Release Testers, Xojo Pro Puerto Rico, USA

    i do not see any free that works good like valentina with hard work

  7. Massimiliano C

    is not verified May 5 Europe (Italy, Bergamo)

    @Enrico LRosa 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

    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

  8. Massimiliano C

    is not verified May 5 Europe (Italy, Bergamo)

    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.

  9. si si ho trovato il problema nello scrivere ho inserito addpage senza le parentesi.... nella fretta... era una stupidata. :)
    grazie sempre

  10. Antonio R

    May 8 Pre-Release Testers, Xojo Pro Europe (Italy)

    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

  11. Massimiliano C

    is not verified May 8 Europe (Italy, Bergamo)

    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.

  12. Antonio R

    May 8 Pre-Release Testers, Xojo Pro Europe (Italy)

    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.

  13. Massimiliano C

    is not verified May 8 Europe (Italy, Bergamo)

    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.

  14. 2 weeks ago

    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!

  15. Massimiliano C

    is not verified May 9 Europe (Italy, Bergamo)

    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 ...

  16. last week

    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%%o<fpdf>ss
    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<WebButton>
    Delegate.IM_Invoke%%o<WebButton>
    AddHandler.Stub.29%%
    WebButton._ExecuteEvent%b%o<WebButton>sA1v
    WebControl.!_ExecuteEvent%b%ssA1v
    WebSession._HandleEvent%%o<WebSession>so<_HTTPServer.HTTPRequestContext>
    WebSession._HandleRequest%i4%o<WebSession>so<_HTTPServer.HTTPRequestContext>
    WebApplication._HandleHTTPRequest%%o<WebApplication>o<_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)
    MsgBox " INIZIO STAMPA PDF"
    t = f.CreateBinaryFile("pdf")
    MsgBox " CREAZIONE FILE STAMPA PDF"
    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

  17. Antonio R

    May 18 Pre-Release Testers, Xojo Pro Europe (Italy)

    Prova a mettere un try/catch
    probabilmente non hai i diritti di scrittura sulla cartella

  18. Ciao Antonio, ora provo, il comportamento è strano ora ho messo un try/catch cosi fatto :

    Try
    f = GetFolderItem(name,0)
    'f = new FolderItem(name,FolderItem.PathTypeShell)
    f = SpecialFolder.Documents.Child(name)
    t = f.CreateBinaryFile("pdf")
    t.Write me.buffer
    t.close
    App.MyFile = WebFile.Open(f)
    App.MyFile.ForceDownload = True
    Session.ShowURL(App.MyFile.URL, TRUE)
    Catch e As NilObjectException
    Exception err as NilObjectException
    MsgBox err.message+" Error No.: "+Str(err.ErrorNumber)
    End Try
    E' corretto?
    Ho rimesso il programma in ftp e non mi da più errore.... il codice non l'ho toccato però
    Faccio un po di test e vediamo.

    Grazie sempre

  19. 7 days ago

    leggera rettifica a quanto sopra, dopo un po di tempo mi ritorna a dare il problema senza che io aggiorni nulla, il server è un Centos7 in cui gira apache, ora con il try/catch non ritorna nulla ma non si blocca il programma, forse a impostare il catch su "NilObjectException" ?

    sempre grazie

  20. Massimiliano C

    is not verified May 19 Europe (Italy, Bergamo)

    Scusami ma oggi non ho avuto tempo di verificare ...
    Devi creare una routine che controlla se il file PDF è già esistente e se è esistente lo cancella.
    Oppute crea un file pdf con un nome univoco; in questo modo volendo puoi archiviarli.

    L'errore NilObjectException viene generato appunto quanto il file è già presente con lo stesso nome.

  21. Antonio R

    May 19 Pre-Release Testers, Xojo Pro Europe (Italy)

    L'errore NilObjectException può essere dato da f, se ad esempio il percorso non è raggiungibile
    da t se non riesce a creare il file

    Essendo un'applicazione web magari sono due utenti che creano lo stesso file.

    Visto che hai identificato l'errore puoi trovare strategie per risolverlo.
    Quando testi un'app web in locale hai, di solito, accesso alle cartelle con tutti i permessi e un utente solo.

    Puoi provare a dividere l'azione tipo:
    dim f as folderItem
    try
    f = GetFolderItem(name,0)
    Catch e As NilObjectException
    MsgBox e.message+" Error No.: "+Str(e.ErrorNumber)
    f=nil
    end try
    if f<>nil then
    dim t as BinaryStream
    try
    t= f.CreateBinaryFile("pdf")
    catch e As NilObjectException
    MsgBox e.message+" Error No.: "+Str(e.ErrorNumber)
    t=nil
    end try
    if t<>nil then
    t.write me.buffer
    end if

    end if

    Non c'è bisogno di chiudere t tanto va fuori scopo

or Sign Up to reply!