Gambas-it

Programmazione => Progetti degli utenti => Topic aperto da: dex - 03 Maggio 2010, 00:49:36

Titolo: Report con PdfWriter
Inserito da: dex - 03 Maggio 2010, 00:49:36
ciao raga
sotto la minaccia di un coccodrillo (prima aveva i baffi ed era più simpatico  ;D) io ed il povero Golia mio compagno di disavventura abbiamo cominciato a creare un progetto per spiegare come si creano Report con PdfWriter.

Per evitare di essere bannati Speriamo nel vostro aiuto per completare il progetto.
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 03 Maggio 2010, 11:23:33
Citazione
sotto la minaccia di un coccodrillo (prima aveva i baffi ed era più simpatico  Ghigno)
Si si , e adesso che è pentito di ciò che ha fatto, si è vestito da bambino per farsi perdonare :P :P :P :P :P :P

Dex hai fatto tutto il lavoraccio,
Stasera guardo tutto
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 03 Maggio 2010, 12:24:27
ciao raga
sotto la minaccia di un coccodrillo (prima aveva i baffi ed era più simpatico  ;D)....

::)
Titolo: Re: Report con PdfWriter
Inserito da: fsurfing - 04 Maggio 2010, 12:58:15
ottima iniziativa, per completare il tutto potreste anche scrivere qualcosa in proposito sul wiki  :P
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 04 Maggio 2010, 13:06:45
ottima iniziativa, per completare il tutto potreste anche scrivere qualcosa in proposito sul wiki  :P

Senta Lei, lasci fare questo lavoro a chi lo sa fare e chi lo fa da anni...non tutti possono dire di scrivere sul wiki copn la tenacia e la rottura di balle con cui lo dico io....pivello!!!
Titolo: Re: Report con PdfWriter
Inserito da: fsurfing - 04 Maggio 2010, 23:05:18
Citazione
Senta Lei, lasci fare questo lavoro a chi lo sa fare e chi lo fa da anni...non tutti possono dire di scrivere sul wiki copn la tenacia e la rottura di balle con cui lo dico io....pivello!!!
si infatti si vedono i risultati....... forse è meglio che vai in pensione  :P
Titolo: Re: Report con PdfWriter
Inserito da: dex - 05 Maggio 2010, 00:20:57
eccoli li il gatto e la volpe  :D.

sentite un pò voi due invece di fare i perditempo a stuzzicarvi perchè non ci date una mano?
visto che io e golia abbiamo seri problemi di approccio al wiki ripartiamo i compiti?
noi ci occupiamo del progetto e di riempirlo con tutta una serie di esempi e voi due buttate giù qualche riga nel wiki?
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 05 Maggio 2010, 00:38:22
Ho creato la pagina delle guide e quella più utile a noi...

Guide della comunità: http://www.gambas-it.org/wiki/index.php/Guide_della_comunit%C3%A0

report con PdfWriter: http://www.gambas-it.org/wiki/index.php/Guida_ai_report
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 05 Maggio 2010, 00:50:38
Grazie Ceskho, ho inserito qualcosa, ma non è formattata proprio bene...adesso vado a nanna ;D
Titolo: Re: Report con PdfWriter
Inserito da: dex - 05 Maggio 2010, 00:51:36
bravo Ceskho, quando vuoi sei asso.

in allegato posto la versione 2, nei ritagli di tempo ne posterò altre.
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 05 Maggio 2010, 00:53:27
ora devo andare ma domani do un'occhiata...
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 05 Maggio 2010, 10:31:07
Ho iniziato a modificare quanto scritto da Golia (graficamente....i contenuti no)

Ovviamente è un wiki e pertanto se ho fatto castronate potete benissimo cambiare....

Comunque se volete una wikizzazione ottima del pezzo rivolgetevi a quel vecchio wikionario di Leo....Lui ci scrive la lista della spesa con wikipedia!!!  :D
Titolo: Re: Report con PdfWriter
Inserito da: leo72 - 05 Maggio 2010, 18:17:13
Veramente in questi giorni sto creando/modificando le pagine di alcuni algoritmi di ordinamento sulla Wiki italiana  ;D
(tipo questa (http://it.wikipedia.org/wiki/Smoothsort)
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 06 Maggio 2010, 00:19:51
Ciao,
Ho aggiunto qualcosa anch'io, ho aggiunto un database sqlite per creare un esempio di griglia, mostrando le funzioni Multiriga e Multirect (già fatto da Dex). Ho aggiunto "Info PdfWriter", lo stesso contenuto che trovate nel Wiki.
Ciao
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 07 Maggio 2010, 00:45:43
Ho fatto una piccola modifica alla griglia.
@Dex
Ho cambiato i percorsi dell'imagine, ho usato l'immagine presente nel progetto con percorso Application.path così non va in errore. Se ho sbagliato rimetto apposto.

@Ceskho
Grazie che mi hai sistemato il wiki.

Ciao buon lavoro, e mi raccomando!! inserite esempi ;)
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 07 Maggio 2010, 02:44:32
@Ceskho
Grazie che mi hai sistemato il wiki.

Si, scusa se ho scritto qualche castroneria ma non ho mai usato il componente e perciò non lo conosco... ;)
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 12 Maggio 2010, 00:36:27
Grazie al pronto intervento di milio ho convertito l'esempio per Gambas3
Eccolo quà
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 20 Agosto 2010, 16:43:58
Ho reintracciato questo thread, in modo da non crearne ulteriori inutilmente.

Oggi ho ridato un'occhiata alla libreria PdfWriter, anche spinto da una mail proveniente dall'altro capo del modo, nella quale mi si chiedevano ulteriori aggiornamenti.
E' passato un bel pò di tempo, e questa libreria, dato che non avevo al momento nessun scopo per aggiornarla, ma ora ho notato che quella da cui sono partito, FPDF, è passata di release.

Dato anche che, ultimamente, mi sono messo a sistemare classi e librerie che avevo creato, ma mai pubblicato, e che stò aggiornando anche il presente forum, con la pubblicazione di un certo numero di cose del genere, ho pensato che era pure il caso di riprendere in mano PdfWriter.

Per un certo tempo non sono stato molto presente nel sito, e cercando quà e là, ho ritrovato questo thread.
Ho dato una letta ai messaggi, e ho notato che c'è stato un pò di movimento sul codice della libreria. Non che questo mi dispiaccia, anzi, solo che mi piacerebbe conoscere le eventuali modifiche e implementazioni che sono fatte, in modo da poter aggiornare la libreria che è ufficialmente distribuita su sourceforge.net, così da rendere gli aggiornamenti disponibili anche a livello globale.

Ho notato anche con piacere che la libreria sul sito sourceforge è stata scaricata molte volte (700/800 downloads).

Insomma, mettendo mano agli ultimi sorgenti (versione 0.0.3), ho solo dato qualche ripulita, e ho impostato la libreria come un componente, in particolare aggiungendo un paio di eventi in sostituzione/parallelo ai due metodi Header e Footer.
In parole povere, ora è possibile creare oggetti derivati da PdfWriter, senza costruirli con INHERITS, ma gestendo i due eventi all'interno di altri classi (ad esempio una Form). Restano comunque attivi e validi, per questioni di compatibilità, i due metodi, consentendo di usare il sistema precedente.
L'introduzione degli eventi rende svincolato l'oggetto dal resto del codice applicativo.

Per finire, e sistemare la classe con eventuali features introdotte da Voi, mi aspetto gentilmente qualche spiegazione e che cosa è stato cambiato o implementato, così da integrarlo nella nuova versione.

Al momento la release pubblicata ufficla eè la 0.0.4.

Resto in attesa.

Un ciao e un grazie a tutti!  :2birre:
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 20 Agosto 2010, 18:26:39
Non puoi caricare pdfwriter su servizi come git o svn in modo che chi di noi vuole collaborare fa dei semplici commits e tutti ne usufruiscono?

Ultimamente grazie a dei progetti a cui lavoro ho scoperto la potenzialità enorme di questi strumenti e mi chiedo come ho fatto fino ad ora a non usarli......vaglia questa possibilità così avrai ta le mani sicuramente un arma a tuo favore.....my2cents.... ;)
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 21 Agosto 2010, 14:40:00
@md9327
Ciao, adesso sono in ferie, però non riuscendo a stare lontano dal forum mi sono trovato un'internet point. ;D

Ho apportato delle modifiche in tua assenza, quando vedrai il codice ti verrà da ridere...intanto mi sono arrangiato per quello che mi serviva ;)
Allora, intanto non riuscivo a fare andare il simbolo dell'euro, e ho risolto con un semplice replace (mi sembra almeno perchè adesso non ho il programma per vederlo).
Se scarichi l'esempio di questo 3d vedrai che ho aggiunto delle funzioni, "multiriga" che in accoppiata con "multirect" mi ha servito per creare una griglia con il testo che può andare a capo. Ho modificato (clonato) cell e multicell in quanto non riuscivo a creare la griglia come volevo. Forse non avevo capito come funziona multicell, comunque ho raggiunto il risultato che volevo.
Sono contento che riprendi in mano questa classe che considero fantastica e utilissima per chi deve creare report, io e Dex abbiamo anche provato a pubblicizzarla :D
Io torno tra 1 settimana e sono disponibile per chiarirti bene quello che ho implementato, e sarò comunque contento se sostituirai tu (o mi spiegherai se era già fatto :D) la funzione che ho fatto.
Ciao a presto


P.S. le funzioni che ho aggiunto sono in fondo alla classe
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 23 Agosto 2010, 13:27:14
Per cesko:
hai ragione, per pgDesigner l'ho fatto, ma per PdfWriter no. Mò ci penso e vedo di inserire la libreria sia svn, sempre su sf.net (visto che c'è, e funziona pure bene...).
Comunque, per qualsiasi cosa, il mio indirizzo è presente nei sorgenti, per cui basta inviarmi un email e collabora.

Ad ogni modo, quello che ho scritto mica era un rimprovero, ma dato che qualcuno aveva avuto qualche idea e implementato qualche funzione, mi pareva corretto e giusto sistemare la libreria con queste cose.
Aricomunque, ho visto che sul sito ufficiale di FPDF è uscita la versione 1.6. Non sò che cosa cambia, dovrei comfrontarla con la 1.53 da cui ho fatto il porting. Inoltre, avevo anche inserito molte funzionalità carine, mie, ma soprattutto portate da quelle pubblicate dagli utenti sul sito fpdf, tra cui se non ricordo male proprio la MultiCell.

Nella versione 0.0.4 era stata aggiunta anche una cosetta suggerita da un utente di sf.net, ma che poi non ha funzionato più nelle ultime release di Gambas2, per cui l'ho dovuta commentare, e relativa proprio ai conversione di caratteri NON UTF8. E' probabile che proprio questa cosa poteva risolvere il problema di Milio.

Per MilioSe mi dici dovè il codice, provo a valutarlo per inserirlo definitivamente nel pacchetto da pubblicare. ALtrimenti puoi indicarmi i soli pezzi inseriti e/o modificati.
Tieni però conto che prima devo valutare che siano modifiche non legate a specifiche tue esigenze del programma, perchè in quel caso non andrebbero egrale nella libreria.bene. Ad ogni modo, se sono corrette, posso anche vedere di modificarle in modo anonimo e integrarle nella liberia.
Fammi sapere.  :2birre:
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 25 Agosto 2010, 14:23:40
Ciao Md9327
Citazione
Per MilioSe mi dici dovè il codice..
Penso fosse rivolto am me :D
Se scarichi questo esempio che abbiamo fatto io e Dex,
http://www.gambas-it.org/smf/index.php?topic=1056.msg11752#msg11752 (http://www.gambas-it.org/smf/index.php?topic=1056.msg11752#msg11752)
Trovi le funzioni aggiuntive in fondo al codice, inoltre c'è già pronto un esempio con sqlite3, il database è nella cartella dovrebbe funzionare senza che controlli niente (se hai installato sqlite3). Fammi sapere ciao
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 25 Agosto 2010, 14:48:54
Perdona... Golia! Ho confuso i nick... sai, l'età... e combattere con cesko stresserebbe chiunque...  :P

Appena ho un attimo, vedo di capirci qualcosa... e ritorno qua... forse... mah, non sò... ma si, và... :-)

Scherzo! Ve ne parliamo! Bye
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 30 Agosto 2010, 23:07:55
@MD9327
Ciao, ho allegato l'immagine per farti vedere il risultato ottenuto con multiriga.
Se questo risultato si ottiene già con PdfWriter il discorso si può chiudere  :)
..a patto che mi spieghi  ;D , scherzo, fammi sapere ciao
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 31 Agosto 2010, 10:36:29
Scusa, ma la cosa non veniva già fatta da multicell?
A meno che la separazione delle stringhe non debba seguire logiche particolari, come ho fatto in qualche mio progetto, multicell dovrebbe fare la stessa cosa... sbaglio? eventualmente quale problema dà?

P.S.: devo ancora andare a spulciare le differenze nella nuova FPDF... purtroppo il tempo e le occasioni sono poche...
Titolo: Re: Report con PdfWriter
Inserito da: dex - 31 Agosto 2010, 17:20:38
@md9327
si in effetti multicell faceva la stessa cosa ma una sola cella per riga, in pratica sulla stessa riga non si potevano mettere più celle e bisognava andare a capo.
A meno che non siamo riusciti a settare bene multicell.

Tienici aggiornati che pdfwriter ci interessa moltissimo.
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 31 Agosto 2010, 17:40:00
Citazione
si in effetti multicell faceva la stessa cosa ma una sola cella per riga, in pratica sulla stessa riga non si potevano mettere più celle e bisognava andare a capo.
A meno che non siamo riusciti a settare bene multicell
Esatto, inoltre se fosse possibile inserire più celle nella stessa riga, i rettangoli verrebbero con altezze diverse.
Come ha detto Dex siamo molto interessati a questa classe. Ciao grazie  :2birre:
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 01 Settembre 2010, 11:35:16
Bè, ragazzi, sicuramente continuo a metterci mano, ma se avete la possibilità, di certo potete contribuire.

Credo che, se avete qualche modifica e/o implementazione, come ho pure scritto prima, basta che me lo dite.
Vedrò poi di cercare di attivare l'svn su sf.net, in modo che possiate inviare gli aggiornamenti direttamente nel repository, ma ad ogni modo poi dovrò comunque validarli.

Riguardo a MultiCell, in effetti non ricordo che ci fosse quel tipo di problema. In effetti io l'ho usato in modo controllato, ovvero praticamente usavo Cell e mi gestivo io il contenuto e il contorno... almeno per quanto mi ricordo...  :-\

Se avete codice da inviarmi, potete anche inviarmelo direttamente alla mia email.

Bye
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 02 Settembre 2010, 22:58:42
Ciao, ti riporto quello che ho aggiunto a PdfWrite qui sotto (clonando Cell e Multicell)

Codice: gambas [Seleziona]
PRIVATE $lasthmulti AS Integer


Codice: gambas [Seleziona]
PUBLIC SUB Cell2(w AS Float, OPTIONAL h AS Float = 0, OPTIONAL txt AS String = "", OPTIONAL border AS Variant = FALSE, OPTIONAL ln AS Integer = 0, OPTIONAL align AS String = "", OPTIONAL fill AS Boolean = FALSE, OPTIONAL slink AS String = "")
  DIM k, x, y, ws, dx, wmax, wlink AS Float
  DIM s, op, txt2 AS String
  'Output a cell
  k = $k

  IF (w = 0) THEN w = $w - $rMargin - $x
  s = ""
  IF (IsBoolean(border)) THEN
    IF (fill OR border) THEN
      op = IIf(fill, IIf(border, "B", "f"), "S")
      s = _stringFloat($x * k, "0.00") & " " &
          _stringFloat(($h - $y) * k, "0.00") & " " &
          _stringFloat(w * k, "0.00") & " " &
          _stringFloat(- h * k, "0.00") & " re " & op & " "
    END IF
  ELSE IF (IsString(border)) THEN
    x = $x
    y = $y
    IF (InStr(border, "L")) THEN
      s &= _stringFloat(x * k, "0.00") & " " &
           _stringFloat(($h - y) * k, "0.00") & " m " &
           _stringFloat(x * k, "0.00") & " " &
           _stringFloat(($h - (y + h)) * k, "0.00") & " l S "
    END IF
    IF (InStr(border, "T")) THEN
      s &= _stringFloat(x * k, "0.00") & " " &
           _stringFloat(($h - y) * k, "0.00") & " m " &
           _stringFloat((x + w) * k, "0.00") & " " &
           _stringFloat(($h - y) * k, "0.00") & " l S "
    END IF
    IF (InStr(border, "R")) THEN
      s &= _stringFloat((x + w) * k, "0.00") & " " &
           _stringFloat(($h - y) * k, "0.00") & " m " &
           _stringFloat((x + w) * k, "0.00") & " " &
           _stringFloat(($h - (y + h)) * k, "0.00") & " l S "
    END IF
    IF (InStr(border, "B")) THEN
      s &= _stringFloat(x * k, "0.00") & " " &
           _stringFloat(($h - (y + h)) * k, "0.00") & " m " &
           _stringFloat((x + w) * k, "0.00") & " " &
           _stringFloat(($h - (y + h)) * k, "0.00") & " l S "
    END IF
  END IF
  IF (txt <> "") THEN
    SELECT CASE align
    CASE "R"
      dx = w - $cMargin - ME.GetStringWidth(txt)
    CASE "C"
      dx = (w - ME.GetStringWidth(txt)) / 2
    CASE "FJ" 'Justify
      'Set word spacing
      wmax = (w - 2 * $cMargin)
      $ws = (wmax - ME.GetStringWidth(txt)) / (Split(txt, " ").Count - 1)
      _out(_stringFloat($ws * $k, "0.000") & " Tw")
      dx = $cMargin
    DEFAULT
      dx = $cMargin
    END SELECT
    IF ($ColorFlag) THEN s &= "q " & $TextColor & " "
    txt2 = Replace(Replace(Replace(txt, "\\", "\\\\"), "(", "\\("), ")", "\\)")

      txt2 = convcharacters(txt2)

    
    s &= "BT " & _stringFloat(($x + dx) * k, "0.00") & " " &
                 _stringFloat(($h - ($y + 0.5 * h + 0.3 * $FontSize)) * k, "0.00") & " Td (" & txt2 & ") Tj ET"
    IF ($underline) THEN s &= " " & _dounderline($x + dx, $y + 0.5 * h + 0.3 * $FontSize, txt)
    IF ($ColorFlag) THEN s &= " Q"
    'IF (slink) THEN ME.Link($x + dx, $y + 0.5 * h - 0.5 * $FontSize, ME.GetStringWidth(txt), $FontSize, slink)
    IF (slink) THEN
      IF (align = "FJ") THEN
        wlink = wmax
      ELSE
        wlink = ME.GetStringWidth(txt)
      END IF
      ME.Link($x + dx, $y + 0.5 * h - 0.5 * $FontSize, wlink, $FontSize, slink)
    END IF
  END IF
  IF (s) THEN _out(s)
  IF (align = "FJ") THEN
    'Remove word spacing
    _out("0 Tw")
    $ws = 0
  END IF
  $lasth = h
  IF (ln > 0) THEN
    'Go to next line
    $y += h
    IF (ln = 1) THEN $x = $lMargin
  ELSE
    $x += w
  END IF
END

PUBLIC SUB MultiRiga(w AS Float, h AS Float, txt AS String, OPTIONAL border AS Variant = FALSE, OPTIONAL align AS String = "J", OPTIONAL fill AS Boolean = FALSE)
  DIM cw AS Integer[]
  DIM wmax AS Float
  DIM s, b, b2, c AS String
  DIM nb, sep, i, j, l, ns, nl, ls AS Integer
  DIM numeroriga AS Integer
  DIM salva$y AS Integer
  DIM hriga AS Integer
  
  salva$y = $y
  numeroriga = 0
  'Output text with automatic or explicit line breaks
  cw = $CurrentFont["cw"]
  IF (w = 0) THEN w = $w - $rMargin - $x
  wmax = (w - 2 * $cMargin) * 1000 / $FontSize
  s = Replace(txt, "\r", "")
  nb = Len(s)
  IF (nb > 0) AND IF (Mid(s, nb, 1) = "\n") THEN DEC nb
  b = 0
  IF (IsBoolean(border) OR IsInteger(border)) THEN
    IF (border) THEN
      border = "LTRB"
      b = "LRT"
      b2 = "LR"
    END IF
  ELSE IF (IsString(border)) THEN
    b2 = ""
    IF (InStr(border, "L")) THEN b2 &= "L"
    IF (InStr(border, "R")) THEN b2 &= "R"
    b = IIf(InStr(border, "T"), b2 & "T", b2)
  END IF
  sep = -1
  i = 1
  j = 1
  l = 0
  ns = 0
  nl = 1
  WHILE (i <= nb)
 
    'Get next character
    c = Mid(s, i, 1)
    IF (c = "\n") THEN
      'Explicit line break
      IF ($ws > 0) THEN
        $ws = 0
        _out("0 Tw")
      END IF
      numeroriga += 1
      ME.Cell2(w, h, Mid(s, j, i - j), b, 2, align, fill)
      INC i
      sep = -1
      j = i
      l = 0
      ns = 0
      INC nl
      IF (IsBoolean(border) OR IsInteger(border)) THEN
        IF (border AND nl = 2) THEN b = b2
      ELSE IF (IsString(border)) THEN
        IF (NOT IsNull(border) AND nl = 2) THEN b = b2
      END IF
      CONTINUE
    END IF
    IF (c = " ") THEN
      sep = i
      ls = l
      INC ns
    END IF
    l += cw[Asc(c)]
    IF (l > wmax) THEN
      'Automatic line break
      IF (sep = -1) THEN
        IF (i = j) THEN INC i
        IF ($ws > 0) THEN
          $ws = 0
          _out("0 Tw")
        END IF
        numeroriga += 1
        ME.Cell2(w, h, Mid(s, j, i - j), b, 2, align, fill)
      ELSE
        IF (align = "J") THEN
          $ws = IIf(ns > 1, (wmax - ls) / 1000 * $FontSize / (ns - 1), 0)
          _out(_stringFloat($ws * $k, "0.000") & " Tw")
        END IF
        numeroriga += 1
        ME.Cell2(w, h, Mid(s, j, sep - j), b, 2, align, fill)
        i = sep + 1
      END IF
      sep = -1
      j = i
      l = 0
      ns = 0
      INC nl
      IF (IsBoolean(border) OR IsInteger(border)) THEN
        IF (border AND nl = 2) THEN b = b2
      ELSE IF (IsString(border)) THEN
        IF (NOT IsNull(border) AND nl = 2) THEN b = b2
      END IF
    ELSE
      INC i
    END IF
  WEND
  'Last chunk
  IF ($ws > 0) THEN
    $ws = 0
    _out("0 Tw")
  END IF
  IF (IsString(border)) THEN
    IF (NOT IsNull(border) AND InStr(border, "B")) THEN b &= "B"
  END IF
  ME.Cell2(w, h, Mid(s, j, i - j), b, 2, align, fill)

  IF numeroriga = 0 THEN
  hriga = h
  ELSE IF numeroriga = 1 THEN
  hriga = (h * 2)
  ELSE IF numeroriga = 2 THEN
  hriga = (h * 3)
  ELSE IF numeroriga = 3 THEN
  hriga = (h * 4)
  ELSE IF numeroriga = 4 THEN
  hriga = (h * 5)  
  ENDIF

  $lasthmulti = Max($lasthmulti, hriga)
  
   $y = salva$y

  $x += w

END

PUBLIC SUB Lnm()
  'Line feed; default value is last cell height
  DIM k, x, y, ws, dx, wmax, wlink AS Float
    IF ($y + $lasthmulti > $PageBreakTrigger AND NOT $InFooter AND AcceptPageBreak()) THEN
    'Automatic page break
    x = $x
    ws = $ws
    IF (ws > 0) THEN
      $ws = 0
      _out("0 Tw")
    END IF
    ME.AddPage($CurOrientation)
    $x = x
    IF (ws > 0) THEN
      $ws = ws
      _out(_stringFloat(ws * k, "0.000") & " Tw")
    END IF
  END IF
  $x = $lMargin
  $y += $lasthmulti
  $lasthmulti = 0
END

PUBLIC SUB MultiRect(w1 AS Float, w2 AS Float, w3 AS Float, w4 AS Float, w5 AS Float, w6 AS Float, w7 AS Float)  
  IF w1 > 0 THEN ME.Rect($lMargin, $y, w1, $lasthmulti, "")
  IF w2 > 0 THEN ME.Rect($lMargin + w1, $y, w2, $lasthmulti, "")
  IF w3 > 0 THEN ME.Rect($lMargin + w1 + w2, $y, w3, $lasthmulti, "")
  IF w4 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3, $y, w4, $lasthmulti, "")
  IF w5 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4, $y, w5, $lasthmulti, "")
  IF w6 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4 + w5, $y, w6, $lasthmulti, "")
  IF w7 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4 + w5 + w6, $y, w7, $lasthmulti, "")
END



E uso così multiriga con multirect

Codice: gambas [Seleziona]
FOR EACH MyRS
  ME.MultiRiga(10, 5, MyRS!quantita, FALSE, "L", FALSE)
  ME.MultiRiga(32, 5, MyRS!codice, FALSE, "L", FALSE)            
  ME.MultiRiga(108, 5, MyRS!descrizione, FALSE, "L", FALSE)
  ME.MultiRiga(20, 5, MyRS!prezzo, FALSE, "R", FALSE)  
  ME.MultiRiga(20, 5, MyRS!prezzo * MyRS!quantita, FALSE, "R", FALSE)              
  ME.MultiRect(10, 32, 108, 20, 20, 0, 0)          
  ME.Lnm()
NEXT
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 02 Settembre 2010, 23:01:08
Dimenticavo, per risolvere il problema del simbolo "€" ho fatto questa funzione che ho sempre inserito in PdfWriter

Codice: gambas [Seleziona]
PUBLIC SUB convcharacters(stringa AS String) AS String
stringa = Replace(stringa, "!", Chr(33))
stringa = Replace(stringa, "#", Chr(35))
stringa = Replace(stringa, "$", Chr(36))
stringa = Replace(stringa, "%", Chr(37))
stringa = Replace(stringa, "&", Chr(38))
stringa = Replace(stringa, "'", Chr(39))
stringa = Replace(stringa, "(", Chr(40))
stringa = Replace(stringa, ")", Chr(41))
stringa = Replace(stringa, "*", Chr(42))
stringa = Replace(stringa, "+", Chr(43))
stringa = Replace(stringa, ",", Chr(44))
stringa = Replace(stringa, "-", Chr(45))
stringa = Replace(stringa, ".", Chr(46))
stringa = Replace(stringa, "/", Chr(47))
stringa = Replace(stringa, "0", Chr(48))
stringa = Replace(stringa, "1", Chr(49))
stringa = Replace(stringa, "2", Chr(50))
stringa = Replace(stringa, "3", Chr(51))
stringa = Replace(stringa, "4", Chr(52))
stringa = Replace(stringa, "5", Chr(53))
stringa = Replace(stringa, "6", Chr(54))
stringa = Replace(stringa, "7", Chr(55))
stringa = Replace(stringa, "8", Chr(56))
stringa = Replace(stringa, "9", Chr(57))
stringa = Replace(stringa, ":", Chr(58))
stringa = Replace(stringa, ";", Chr(59))
stringa = Replace(stringa, "<", Chr(60))
stringa = Replace(stringa, "=", Chr(61))
stringa = Replace(stringa, ">", Chr(62))
stringa = Replace(stringa, "?", Chr(63))
stringa = Replace(stringa, "@", Chr(64))
stringa = Replace(stringa, "A", Chr(65))
stringa = Replace(stringa, "B", Chr(66))
stringa = Replace(stringa, "C", Chr(67))
stringa = Replace(stringa, "D", Chr(68))
stringa = Replace(stringa, "E", Chr(69))
stringa = Replace(stringa, "F", Chr(70))
stringa = Replace(stringa, "G", Chr(71))
stringa = Replace(stringa, "H", Chr(72))
stringa = Replace(stringa, "I", Chr(73))
stringa = Replace(stringa, "J", Chr(74))
stringa = Replace(stringa, "K", Chr(75))
stringa = Replace(stringa, "L", Chr(76))
stringa = Replace(stringa, "M", Chr(77))
stringa = Replace(stringa, "N", Chr(78))
stringa = Replace(stringa, "O", Chr(79))
stringa = Replace(stringa, "P", Chr(80))
stringa = Replace(stringa, "Q", Chr(81))
stringa = Replace(stringa, "R", Chr(82))
stringa = Replace(stringa, "S", Chr(83))
stringa = Replace(stringa, "T", Chr(84))
stringa = Replace(stringa, "U", Chr(85))
stringa = Replace(stringa, "V", Chr(86))
stringa = Replace(stringa, "W", Chr(87))
stringa = Replace(stringa, "X", Chr(88))
stringa = Replace(stringa, "Y", Chr(89))
stringa = Replace(stringa, "Z", Chr(90))
stringa = Replace(stringa, "[", Chr(91))
stringa = Replace(stringa, "\\", Chr(92))
stringa = Replace(stringa, "]", Chr(93))
stringa = Replace(stringa, "^", Chr(94))
stringa = Replace(stringa, "_", Chr(95))
stringa = Replace(stringa, "`", Chr(96))
stringa = Replace(stringa, "a", Chr(97))
stringa = Replace(stringa, "b", Chr(98))
stringa = Replace(stringa, "c", Chr(99))
stringa = Replace(stringa, "d", Chr(100))
stringa = Replace(stringa, "e", Chr(101))
stringa = Replace(stringa, "f", Chr(102))
stringa = Replace(stringa, "g", Chr(103))
stringa = Replace(stringa, "h", Chr(104))
stringa = Replace(stringa, "i", Chr(105))
stringa = Replace(stringa, "j", Chr(106))
stringa = Replace(stringa, "k", Chr(107))
stringa = Replace(stringa, "l", Chr(108))
stringa = Replace(stringa, "m", Chr(109))
stringa = Replace(stringa, "n", Chr(110))
stringa = Replace(stringa, "o", Chr(111))
stringa = Replace(stringa, "p", Chr(112))
stringa = Replace(stringa, "q", Chr(113))
stringa = Replace(stringa, "r", Chr(114))
stringa = Replace(stringa, "s", Chr(115))
stringa = Replace(stringa, "t", Chr(116))
stringa = Replace(stringa, "u", Chr(117))
stringa = Replace(stringa, "v", Chr(118))
stringa = Replace(stringa, "w", Chr(119))
stringa = Replace(stringa, "x", Chr(120))
stringa = Replace(stringa, "y", Chr(121))
stringa = Replace(stringa, "z", Chr(122))
stringa = Replace(stringa, "{", Chr(123))
stringa = Replace(stringa, "|", Chr(124))
stringa = Replace(stringa, "}", Chr(125))
stringa = Replace(stringa, "~", Chr(126))
stringa = Replace(stringa, "", Chr(127))
stringa = Replace(stringa, "€", Chr(128))
stringa = Replace(stringa, "", Chr(129))
stringa = Replace(stringa, "‚", Chr(130))
stringa = Replace(stringa, "ƒ", Chr(131))
stringa = Replace(stringa, "„", Chr(132))
stringa = Replace(stringa, "…", Chr(133))
stringa = Replace(stringa, "†", Chr(134))
stringa = Replace(stringa, "‡", Chr(135))
stringa = Replace(stringa, "ˆ", Chr(136))
stringa = Replace(stringa, "‰", Chr(137))
stringa = Replace(stringa, "Š", Chr(138))
stringa = Replace(stringa, "‹", Chr(139))
stringa = Replace(stringa, "Œ", Chr(140))
stringa = Replace(stringa, "", Chr(141))
stringa = Replace(stringa, "Ž", Chr(142))
stringa = Replace(stringa, "", Chr(143))
stringa = Replace(stringa, "", Chr(144))
stringa = Replace(stringa, "‘", Chr(145))
stringa = Replace(stringa, "’", Chr(146))
stringa = Replace(stringa, "“", Chr(147))
stringa = Replace(stringa, "”", Chr(148))
stringa = Replace(stringa, "•", Chr(149))
stringa = Replace(stringa, "–", Chr(150))
stringa = Replace(stringa, "—", Chr(151))
stringa = Replace(stringa, "˜", Chr(152))
stringa = Replace(stringa, "™", Chr(153))
stringa = Replace(stringa, "š", Chr(154))
stringa = Replace(stringa, "›", Chr(155))
stringa = Replace(stringa, "œ", Chr(156))
stringa = Replace(stringa, "", Chr(157))
stringa = Replace(stringa, "ž", Chr(158))
stringa = Replace(stringa, "Ÿ", Chr(159))
stringa = Replace(stringa, " ", Chr(160))
stringa = Replace(stringa, "¡", Chr(161))
stringa = Replace(stringa, "¢", Chr(162))
stringa = Replace(stringa, "£", Chr(163))
stringa = Replace(stringa, "¤", Chr(164))
stringa = Replace(stringa, "¥", Chr(165))
stringa = Replace(stringa, "¦", Chr(166))
stringa = Replace(stringa, "§", Chr(167))
stringa = Replace(stringa, "¨", Chr(168))
stringa = Replace(stringa, "©", Chr(169))
stringa = Replace(stringa, "ª", Chr(170))
stringa = Replace(stringa, "«", Chr(171))
stringa = Replace(stringa, "¬", Chr(172))
stringa = Replace(stringa, " ", Chr(173))
stringa = Replace(stringa, "®", Chr(174))
stringa = Replace(stringa, "¯", Chr(175))
stringa = Replace(stringa, "°", Chr(176))
stringa = Replace(stringa, "±", Chr(177))
stringa = Replace(stringa, "²", Chr(178))
stringa = Replace(stringa, "³", Chr(179))
stringa = Replace(stringa, "´", Chr(180))
stringa = Replace(stringa, "µ", Chr(181))
stringa = Replace(stringa, "¶", Chr(182))
stringa = Replace(stringa, "·", Chr(183))
stringa = Replace(stringa, "¸", Chr(184))
stringa = Replace(stringa, "¹", Chr(185))
stringa = Replace(stringa, "º", Chr(186))
stringa = Replace(stringa, "»", Chr(187))
stringa = Replace(stringa, "¼", Chr(188))
stringa = Replace(stringa, "½", Chr(189))
stringa = Replace(stringa, "¾", Chr(190))
stringa = Replace(stringa, "¿", Chr(191))
stringa = Replace(stringa, "À", Chr(192))
stringa = Replace(stringa, "Á", Chr(193))
stringa = Replace(stringa, "Â", Chr(194))
stringa = Replace(stringa, "Ã", Chr(195))
stringa = Replace(stringa, "Ä", Chr(196))
stringa = Replace(stringa, "Å", Chr(197))
stringa = Replace(stringa, "Æ", Chr(198))
stringa = Replace(stringa, "Ç", Chr(199))
stringa = Replace(stringa, "È", Chr(200))
stringa = Replace(stringa, "É", Chr(201)) 
stringa = Replace(stringa, "Ê", Chr(202))   
stringa = Replace(stringa, "Ë", Chr(203)) 
stringa = Replace(stringa, "Ì", Chr(204))
stringa = Replace(stringa, "Í", Chr(205)) 
stringa = Replace(stringa, "Î", Chr(206))   
stringa = Replace(stringa, "Ï", Chr(207))   
stringa = Replace(stringa, "Ð", Chr(208))
stringa = Replace(stringa, "Ñ", Chr(209))
stringa = Replace(stringa, "Ò", Chr(210))
stringa = Replace(stringa, "Ó", Chr(211))
stringa = Replace(stringa, "Ô", Chr(212))
stringa = Replace(stringa, "Õ", Chr(213))
stringa = Replace(stringa, "Ö", Chr(214))
stringa = Replace(stringa, "×", Chr(215))
stringa = Replace(stringa, "Ø", Chr(216))
stringa = Replace(stringa, "Ù", Chr(217))
stringa = Replace(stringa, "Ú", Chr(218))
stringa = Replace(stringa, "Û", Chr(219))
stringa = Replace(stringa, "Ü", Chr(220))
stringa = Replace(stringa, "Ý", Chr(221))
stringa = Replace(stringa, "Þ", Chr(222))
stringa = Replace(stringa, "ß", Chr(223))
stringa = Replace(stringa, "à", Chr(224))
stringa = Replace(stringa, "á", Chr(225))
stringa = Replace(stringa, "â", Chr(226))
stringa = Replace(stringa, "ã", Chr(227))
stringa = Replace(stringa, "ä", Chr(228))
stringa = Replace(stringa, "å", Chr(229))
stringa = Replace(stringa, "æ", Chr(230))
stringa = Replace(stringa, "ç", Chr(231))
stringa = Replace(stringa, "è", Chr(232))
stringa = Replace(stringa, "é", Chr(233))
stringa = Replace(stringa, "ê", Chr(234))
stringa = Replace(stringa, "ë", Chr(235))
stringa = Replace(stringa, "ì", Chr(236))
stringa = Replace(stringa, "í", Chr(237))
stringa = Replace(stringa, "î", Chr(238))
stringa = Replace(stringa, "ï", Chr(239))
stringa = Replace(stringa, "ð", Chr(240))
stringa = Replace(stringa, "ñ", Chr(241))
stringa = Replace(stringa, "ò", Chr(242))
stringa = Replace(stringa, "ó", Chr(243))
stringa = Replace(stringa, "ô", Chr(244))
stringa = Replace(stringa, "õ", Chr(245))
stringa = Replace(stringa, "ö", Chr(246))
stringa = Replace(stringa, "÷", Chr(247))
stringa = Replace(stringa, "ø", Chr(248))
stringa = Replace(stringa, "ù", Chr(249))
stringa = Replace(stringa, "ú", Chr(250))
stringa = Replace(stringa, "û", Chr(251))
stringa = Replace(stringa, "ü", Chr(252))
stringa = Replace(stringa, "ý", Chr(253))
stringa = Replace(stringa, "þ", Chr(254))
stringa = Replace(stringa, "ÿ", Chr(255))
RETURN stringa
END


Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 03 Settembre 2010, 12:30:18
Appena ho un attimo, cerco di integrare il tutto nella nuova release. Avete fatto un bel lavoro!  :ok:

Due appunti, anche per il futuro:

1) il nome delle funzioni, metodi e proprietà, meglio scriverle sempre in inglese; questo perchè PdfWriter viene scaricato a livello internazionale.
2) bella la funzione di conversione, e immagino tu ti sia ucciso col gas, dopo che l'hai terminato. Ti ricordo però, se non lo sai, che i caratteri da 0 a 127 sono standardizzati a livello mondiale, mentre la seconda tabella che va da 128 e oltre no. Questo ti permette di agire su un set più limitato. Però, tieni conto che la tabella che hai usato si riferisce alla tabella ISO italiana (non ricordo ora il codice esatto), e quindi diventa non più valida con un'impostazione di lingua diversa. In realtà, quei caratteri speciali, dovrebbero essere individuabili con le funzioni Conv di Gambas, ma non lo avevo implementato a causa di qualche problema che avevo riscontrato.
Titolo: Re: Report con PdfWriter
Inserito da: dex - 03 Settembre 2010, 14:40:37
@MD9327
Edit: il lavoro lo ha fatto tutto elia!

Per multicell ho notato che l'opzione giustifica non funziona su tutte le righe ma solo sull'ultima della cella.
per esempio: avendo 4 righe in una multicella solo la 4° è giustificata.

In pdfwriter sarebbe comodo avere:
la possibilità di usare i caratteri installati nel sistema e i caratteri sottolineati.

aggiornaci appena pubblichi la nuova release.
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 03 Settembre 2010, 16:22:43
Grazie, comunque so benissimo che adesso PdfWriter è in buone mani :ok:  ;D

@Dex
Citazione
il lavoro lo ha fatto tutto elia!
ELIA?..e cosa sono diventato un profeta adesso??  ???
 :2birre: :D
Ciao
Titolo: Re: Report con PdfWriter
Inserito da: dex - 03 Settembre 2010, 22:15:18
Grazie, comunque so benissimo che adesso PdfWriter è in buone mani :ok:  ;D

@Dex
Citazione
il lavoro lo ha fatto tutto elia!
ELIA?..e cosa sono diventato un profeta adesso??  ???
 :2birre: :D
Ciao

sorry  :'(

la colpa è dei moderatori che fanno girare nik strani su questo forum, secondo dovrebbero assegnare nomi facili come astrubaldo, arcingetorige, cesarotonite ecc..
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 03 Settembre 2010, 22:51:20
 :) si si, sempre colpa dei moderatori  ;D
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 04 Settembre 2010, 00:49:53
:) si si, sempre colpa dei moderatori  ;D

8)

Ottimo lavoro, ragazzi.....
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 04 Settembre 2010, 10:26:03
Grazie capo  8)
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 06 Settembre 2010, 21:37:50
Sentite...

E' vero che il progetto l'ho messo in piedi io, convertendo il lavoro di un'altro, e il lavoro di implementazione fatto da questi ragazzi credo sia da valutare, stavo pensando... (sò che la cosa è difficile, ma a volte ci riesco...  ;D )...

Visto il poco tempo che ho a disposizione, perchè non ufficializzare la collaborazione, ovvero rendere pubbliche le vostre aggiunte/modifiche, e far sì di aggiornare il repository ufficiale di sf.net? Ovviamente se siete d'accordo...  :2birre:

L'unica cosa che non mi piace, ma è un mio pensiero, è quello di veder creare dei fork, però limitati solo a quì...
Sò che è bello veder popolato il repository di questo forum, ma la visibilità è piuttosto ridotta rispetto a quella fornita da sf.net. Ovviamente si può mettere un link, come fatto per pgDesigner, ma renderemmo maggior visibilità alla libreria, oltre al fatto che darebbe anche pubblicità al nostro sito.

Che ne dite?
Io sono disposto a fornire accesso al repository ufficiale come collaboratore, restando comunque il validatore delle modifiche...
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 06 Settembre 2010, 22:06:16
Per me è solo che un piacere  :-*
Citazione
L'unica cosa che non mi piace, ma è un mio pensiero, è quello di veder creare dei fork
Lo penso anch'io, e sono sicuro che crea confusione anche solo nel nostro forum.
Secondo me la strada da seguire e sistemare i Multicell. In fondo avevo fatto solo Multiriga che è una clonazione di Multicell, va solo un pò aggiustata. E poi il discorso dei bordi (rettangoli) si può usare comunque Multirect con Multicell. Questo è un mio parere, ma è giusto che decidi tu cosa fare.
Per quello che posso fare..io sono disponibile  :2birre:
Grazie
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 07 Settembre 2010, 10:33:04
Allora, vedrò di sistemare la cosa a livello repository, ma ad ogni modo si dovrà sistemare un pochino il lavoro che avete fatto:

1) il nome della funzione Multiriga deve cambiare nome in lingua inglese, magari anche MultiCell2
2) stessa cosa per tutte le funzioni, private e pubbliche, che sono state inserite
3) non ho modo di farlo io, ma sarebbe il caso di testare la modifica che avevo proposto pocanzi, ovvero quella di aggiungere una piccola PROPERTY o metodo per impostare il set di caratteri. Indi per cui modificare la stampa delle stringhe iusando sì Conv, ma usando come parametro la nuova variabile (vedi nuova property).

AL momento credo che questi punti possano aggiustare il tutto in modo da rendere la prox release generalmente usabile, ovvero non solo da noi del sito, ma anche da persone di altri paesi. Ricordo ancora che PdfWriter viene usato un pò in giro per il globo, per cui sarebbe il caso di rendere internazionali le vostre modifiche... Lo sò, chiedo troppo...  :-*

Inoltre, eviatet di postare direttamente il codice qui nella discussione, sarebbe preferibile allegarlo come file, magari di testo, con le sole aggiunte, più o meno come avete fatto in precedenza, ma sarebbe più gestibile e posso più facilmente integrarlo nel progetto.

P.S.: Non dite che sono palloso...  :D
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 07 Settembre 2010, 22:17:14
Citazione
1) il nome della funzione Multiriga deve cambiare nome in lingua inglese, magari anche MultiCell2
Non ho tanta fantasia e non conosco bene l'inglese.. potrebbe andar bene "Multigrid" e "GridCell" ?
Poi c'è "Lnm()" che si comporta diversamente da "Ln()". Può andare "Lngrid()"
Multirect mi sembra appropriato.
Citazione
2) stessa cosa per tutte le funzioni, private e pubbliche, che sono state inserite
C'è una funzione pubblica "$lasthmulti" serve per memorizzare l'altezza massima delle celle in una riga. $max_y ?
Funzioni private riguardanti Multigrid:
Al momento "numeroriga" serve a contare quante volte va a capo, per conoscere quante righe ci sono in una cella, io direi "lines"
Al momento "salva$y" serve per memorizzare $y che durante la funzione cambia di valore, per poi tornare a fine funzione come in origine. "mem$y" ?
Citazione
3) non ho modo di farlo io, ma sarebbe il caso di testare la modifica che avevo proposto pocanzi, ovvero quella di aggiungere una piccola PROPERTY o metodo per impostare il set di caratteri. Indi per cui modificare la stampa delle stringhe iusando sì Conv, ma usando come parametro la nuova variabile (vedi nuova property).
Scusa quà mi perdo qualcosa.. quale nuova property?
Fammi sapere che sistemo il codice e te lo mando. Ciao grazie

Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 08 Settembre 2010, 10:43:08
1) Non ci sono problemi con i nomi, purchè sia in inglese, e ce indichino più o meno cosa fà la funzione. Io penso che, dato che è una variante di MultiCell, di chiamarla anche MultiCell2, non ci sono imposizioni in questo...  :-\

2) Devi perdonarmi, ma anche se rispondo a questi thread, ho poco tempo e possibilità di lavorare su PdfWriter, per cui non ho ancora visto le tue modifiche. Comunque, per le variabili non c'è problema, basta che non vengano utilizzate quelle esistenti, a meno che non sia necessario, onde evitare che questo provochi problemi in altre funzioni. Per il nome, idem come per i metodi...

3) Riguardo alla nuova property, la mia idea era quella di impostare una variabile privata, ad esempio "$charConv", associarla ad una sua property o ad una funzione di lettura/scrittura, ad esempio "SetCharConv(newSet AS String)" a cui passare appunto la stringa corrispondente al set di caratteri scelto, ad esempio "UTF-8" o "ISO-xxxx-xx", e poi quando serve convertire le stringhe del testo tramite la funzione di gambas "Conv()", passandogli come parametro di conversione per la destinazione, la variabile "$charConv". Questo permette di slegare la libreria dal sistema, demandando all'applicazione, o l'utente, il compito di settare la giusta impostazione di lingua.
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 08 Settembre 2010, 14:37:01
1) Non ci sono problemi con i nomi, purchè sia in inglese, e ce indichino più o meno cosa fà la funzione. Io penso che, dato che è una variante di MultiCell, di chiamarla anche MultiCell2, non ci sono imposizioni in questo...  :-\

Fa schifo..... ;D
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 08 Settembre 2010, 22:20:29
Ok, multicell2 va benissimo per me :)
Citazione
3) Riguardo alla nuova property, la mia idea era quella di impostare una variabile privata, ad esempio "$charConv", associarla ad una sua property o ad una funzione di lettura/scrittura, ad esempio "SetCharConv(newSet AS String)" a cui passare appunto la stringa corrispondente al set di caratteri scelto, ad esempio "UTF-8" o "ISO-xxxx-xx", e poi quando serve convertire le stringhe del testo tramite la funzione di gambas "Conv()", passandogli come parametro di conversione per la destinazione, la variabile "$charConv". Questo permette di slegare la libreria dal sistema, demandando all'applicazione, o l'utente, il compito di settare la giusta impostazione di lingua.
Scusa ma non ho capito niente  :rolleyes:..guarda che io sono un programmatore della domenica :D
Se mi fai un esempietto penso di arrivarci... ;D
Per il resto di codice appena l'ho sistemato te lo mando. Ciao
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 09 Settembre 2010, 11:33:43
E vabbè, ma allora perchè mi rispondi il giovedì?  ;D

[Per cesko]
Ma come ti permetti?!?!?!?!?!?!?!?!?!?!  :evil: :P

Scusa l'intemezzo cazziatore a cesko, e ritornando a bomba sull'argomento...
Immaginavo che non ci avessi capito nulla, infatti non l'ho capito neanche io... :rolleyes:

Scherzi a parte, l'idea ad occhio è questa:
Codice: [Seleziona]
'###aggiunte nella libreria PdfWriter
PRIVATE $charSet AS String = "UTF-8"
PUBLIC SUB SetLanguage(code as String)
  $charSet = code
END

'###modifica della funzione di scrittura
...
$row = Conv($row, "UTF-8", $charSet)
...

Ora la funzione di scrittura di PdfWriter non mi sovviene il nome, mi pare _out(), ma ad ogni modo basta individuare l'istruzione che hai inserito con la funzione Conv(). L'unica cosa da fare è sostituire il terzo parametro con la variabile privata $charSet.
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 09 Settembre 2010, 22:51:12
Ho provato e funziona, però solo per i caratteri fino al 127.
Dal 128 "€" compreso sballa. Almeno se non ho sbagliato qualcosa
Titolo: Re: Report con PdfWriter
Inserito da: sotema - 10 Settembre 2010, 09:10:55
Solo una considerazione; visto che lo sviluppo di gb3 procede velocemente e che Benoit suggerisce caldamente la migrazione, ed in considerazione della enorme potenzialità di PDFWriter, varrebbe la pena di apportare modifiche lalla libreria, che risultino compatibili con la nuova versione di gambas.
Ho dato una occhiata veloce ed ho scoperto che nella SUB Codabar viene passato il parametro Ends. Questa in gb3 è una parola chiave utilizzata per verificare se una stringa termina con uno specifico carattere ( la funzione Begins per l'inizio della stringa). Suggerirei di sostituire il parametro con (ad esempio) Ending o Endss.

Titolo: Re: Report con PdfWriter
Inserito da: Golia - 10 Settembre 2010, 10:29:34
Milio aveva già fatto andar bene PdfWriter per G3, non sò dirti come, lo vedi quà http://www.gambas-it.org/smf/index.php?topic=1056.msg11928#msg11928 (http://www.gambas-it.org/smf/index.php?topic=1056.msg11928#msg11928).
Penso che adesso MD9327 porterà le modifiche alla classe per G2, poi si potrà farla andare anche per G3.
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 10 Settembre 2010, 10:51:15
Riguardo ai parametri, cosa che ho già notato provandolo su pgDesigner, non è necessario cambiargli nome, basta racchiudere la variabile tra parentesi graffe (es. {ends}).

Questo era valido per la 2, ma resta valido anche per la 3.
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 15 Settembre 2010, 22:02:43
Ho sistemato Multicell2 :)
In allegato il file txt con solo quello da aggiungere a PdfWriter.
Ho inserito anche la tua funzione "SetLanguage" ma come ti ho scritto nel post precedente
Citazione
Ho provato e funziona, però solo per i caratteri fino al 127.
Dal 128 "€" compreso sballa. Almeno se non ho sbagliato qualcosa
Forse ho sbagliato a usarla, non so.. fammi sapere
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 15 Settembre 2010, 23:36:49
Ho scaricato e gli ho dato un'occhiata veloce, ma vedo un buon lavoro... Bravo!

Il poco tempo che ho a disposizione lo utilizzo maggiormente per pgDesigner, ma da domani vedo di approfondire con PdfWriter.

Riguardo alla conversione di lingua, devo verificare se, per caso, non abbia gestito le stringhe in modo standard, senza usare l'oggetto String.
Provvederò a fare un controllo, perchè ho un certo dubbietto. Ad ogni modo l'idea era quella che tu hai riportato correttamente a codice.

Ti faccio sapere!
Grazie
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 16 Settembre 2010, 00:05:06
Piccola domandina: cosa ti risponde il seguente comando di gambas "PRINT System.Charset"?

Nel mio caso, che uso Fedora basata su RedHat, mi ritorna UTF-8, ma dalla doc sembra che altre distro usino diversi charset.

Ad ogni modo, hai un esempio con cui provare, sia i nuovi metodi che la conversione?
Dato che creato queste nuove funzioni, credo sia più opportuno provarlo su una cosa reale, prima di inventarmi qualcosa io... :-\

Inoltre, mi sembra giusto che tu venga inserito sia nel ChangeLog come riferimento delle modifiche, e tra gli autori e i contributori del progetto. Quindi, se non hai nulla in contrario, mi puoi dare (anche con msg privato) il tuo nome reale ?
 
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 16 Settembre 2010, 00:12:50
Uso Kubuntu lucid, e anche a me mi ritorna UTF-8
Ti posto l'esempio domani, perchè devo un pò sitemarlo, adesso  :sleepy:
Il mio nome reale è Franco Cappellaro, grazie è proprio un onore :2birre:
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 16 Settembre 2010, 18:21:58
Mi puoi spiegare, in sintesi, cosa fanno e che modifiche introducone le funzioni?
Questo per scrivere qualche nota in testa alle stesse nel codice e nel ChangeLog.  :ok:

Inoltre, mi spieghi meglio la funzione MultiRect(), della quale non comprendo bene tutti quei parametri.
Forse è possibile aggiustarla un pochettino, per renderla più dinamica.
Ma potrei aver capito male la sua funzione...  :-\
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 16 Settembre 2010, 22:16:24
Multicell2 a differenza di Multicell sposta la coordinate x ($x) a dx, cioè dopo un'inserimento di Multicell2 la coordinata x si sposta della misura x della cella, questo per creare una normale griglia. La coordinata x viene poi riportata a sx (margine definito) dopo il comando Ln2(). Inoltre salva nella variabile $max_y l'altezza (y) massima utilizzata da più Multicell2, che viene resettata poi col comando Ln2(). Fatto questo se impostiamo il border "TRUE" il rettangolo verrà disegnato in ogni cella della misura y in base al contenuto, quindi il risultato estetico non sarà il massimo perchè nella stessa riga potrebbero esserci altezze diverse. Quindi impostando il border a FALSE non disegno il rettangolo, e vado poi a richiamare la funzione multirect dopo aver inserito tutti i Multicell2 e prima di cambiare riga con Ln2().
Avendo salvato l'altezza massima con $max_y posso crearmi la mia griglia tutta bella dritta :).
Lo sò che non è tanto elegante, perchè è impostato per 10 colonne,
Citazione
ME.MultiRect(10, 32, 108, 20, 20, 0, 0, 0, 0, 0)
In questo esempio ho 5 colonne che passo solo il parametro x (uguale alla larghezza Multicell2). Per le colonne che non si devono fare il valore è 0

Dimenticavo, la funzione Cell2 serve per Multicell2, non và usata da sola.
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 16 Settembre 2010, 23:11:24
Ti ho sistemato l'esempio, e ho aggiunto anche un form che puoi editare quello che viene stampato nella griglia così puoi fare le prove dei caratteri.
Nell'esempio c'è un database sqlite, basta che hai installato sqlite3.

Nel file txt che ti ho postato ho fatto un'errore, la funzione Multirect.
Quella giusta è questa:
Codice: gambas [Seleziona]

PUBLIC SUB MultiRect(w1 AS Float, w2 AS Float, w3 AS Float, w4 AS Float, w5 AS Float, w6 AS Float, w7 AS Float, w8 AS Float, w9 AS Float, w10 AS Float) 
  IF w1 > 0 THEN ME.Rect($lMargin, $y, w1, $max_y, "")
  IF w2 > 0 THEN ME.Rect($lMargin + w1, $y, w2, $max_y, "")
  IF w3 > 0 THEN ME.Rect($lMargin + w1 + w2, $y, w3, $max_y, "")
  IF w4 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3, $y, w4, $max_y, "")
  IF w5 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4, $y, w5, $max_y, "")
  IF w6 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4 + w5, $y, w6, $max_y, "")
  IF w7 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4 + w5 + w6, $y, w7, $max_y, "")
  IF w8 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4 + w5 + w6 + w7, $y, w8, $max_y, "")
  IF w9 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4 + w5 + w6 + w7 + w8, $y, w9, $max_y, "")
  IF w10 > 0 THEN ME.Rect($lMargin + w1 + w2 + w3 + w4 + w5 + w6 + w7 + w8 + w9, $y, w10, $max_y, "")
END
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 17 Settembre 2010, 10:21:14
Ti pare che io non abbia sqlite installato? Ma per chi mi hai preso?  ;D

Scherzi a parte, credo che sul mio pc manchi solo il DB2 di IBM, e poi c'è praticamente tutto...

Riguardo all'implementazione, mi sembra corretta, anche se non mi ero accorto della differenza di altezza delle celle durante la stampa... boh?
Ad ogni modo in questo week proverò con il tuo esempio...

Riguardo alla MultiCell, io credo sia meglio passargli un'array, invece di un numero di parametri fissi, in modo da svincolare la cosa, ed evitare problemi nel caso di più colonne. Ci penserò, l'aggiusto, e poi ti dico...  8)

P.S.: ho scaricato ieri sera la versione FPDF 1.6, e stò vedendo le differenze con la precedente, dalla quale ho effettuato il porting. Da una prima occhiata non sembrano esserci profonde differenze, ma la cosa è relativa. E non vorrtei avessero sistemato lo stesso problema che hai sistemato tu...  :rotfl: ...sarebbe da ridere... insomma...  :-\


Dai, ti faccio sapere...
Titolo: Re: Report con PdfWriter
Inserito da: dex - 17 Settembre 2010, 13:41:49
raga siamo tutti in attesa della versione definitiva.   :ok: :ok:
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 17 Settembre 2010, 13:57:59
A sìììì???

L'attesa costa!  ;D ;D ;D

Non voglio deludervi, ma è probabile che la conversione non sia così facile e immediata...

Ad ogni modo, sò dove andare a chiedere se mi servono dei beta-tester...  :D
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 17 Settembre 2010, 17:59:30
Citazione
Ti pare che io non abbia sqlite installato? Ma per chi mi hai preso? 
Perdono!! ;D
Siamo disponibili per fare i beta-tester....anche se chiamiamo fuori Roma :rotfl:
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 17 Settembre 2010, 20:05:28
Allora...

Ho analizzato le differenze tra la versione 1.53 e 1.6 di FPDF, e ho fatto le opportune modifiche.
Ho inserito anche le tue, ma ho dei dubbi, e ti prego di controllare attraverso l'esempio incluso nel pacchetto, la pagina n.6 del pdf che crea, nota bene la griglia creata.

Comunque, sono state fatte delle modifiche all'interno di alcune funzioni, e in alcune sono stati aggiunti dei parametri, legato appunto al charset, ma li ho testati.
La conversione fatta tramite Conv non funziona, e oltretutto và in errore, per cui mi toccherà vederla in modo più approfondito. Devo dire che le funzioni Conv di Gambas mi hanno dato sempre problemi, e non funzionano assolutamente con alcuni charset (es. il giapponese).

Ad ogni, in allegato tovate il tar con la nuova versione che, al momento non pubblico su soirceforge.net, perchè da testare in modo serio.
Da quello che ho visto, con l'esempio allegato, è che sembra non sia cambiato nulla, tantomento peggiorato, quindi la cosa mi odora di buono.

Fondamentalmente le variazioni tra le due versioni sono sulla memorizzazione delle dimensioni, pagina per pagina, che prima venivano gestite in maniera in effetti anomala. In questa versione è possibile modificare la pagina singolarmente, quindi è un miglioramento.

Attendo le vostre considerazioni e i test che, oltre ad essere molto graditi, sono anche propedeutici al rilascio.
Non penso ci vorrà molto a farli, come ho detto, alla prima occhiata sembra che tutto funzioni, almeno quello che prima funzionava.

Ora stò analizzando gli script pubblicati dagli utenti sul sito FPDF, se trovo qualcosa di utile, lo inserisco direttamente in questa release.

Fatemi sapere e, un grazie a tutti per la collaborazione, oltre ad essere orgoglioso che questa libreria sia molto usata dagli utenti di questo sito. Questo mi paga del lavoro fatto, anche se la base l'ha fatta qualcun'altro...  :P

Titolo: Re: Report con PdfWriter
Inserito da: dex - 17 Settembre 2010, 21:02:34
ho scaricato la beta e la inserisco nel mio progetto.  :2birre:
vi terrò informati di eventuali errori o anomalie. 
Titolo: Re: Report con PdfWriter
Inserito da: dex - 17 Settembre 2010, 21:14:22
riscontrato prime anomalia su caratteri

scritta: dell'art. ris. dell’art
scritta: N° risult. N°

inoltre mi ha spostato la coordinata y su alcuni rettangoli.
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 17 Settembre 2010, 22:55:15
Citazione
Ho inserito anche le tue, ma ho dei dubbi, e ti prego di controllare attraverso l'esempio incluso nel pacchetto, la pagina n.6 del pdf che crea, nota bene la griglia creata
Si ho visto, sembra fare la stessa cosa. Sinceramente mi ero già accorto dopo aver fatto le modifiche a multicell, però non ero riuscito a capire bene come funzionava e quindi non ho più approfondito, visto che il risultato l'avevo raggiunto lo stesso  :-[
Comunque mi interessa capire come funziona e se le mie modifiche sono solo un doppione non importa..ho fatto un pò di pratica ;D
Allora, stasera ho riprovato e per adesso le domande sono 2:
Queste sono le prove che ho fatto
Codice: gambas [Seleziona]

  ME.SetColumnWidths([10.0, 30.0, 110.0, 40.0])
   FOR n = 1 TO 10
    ME.Row(["gino", "pino", "lino", "rino"])
   NEXT

Questa funziona

Codice: gambas [Seleziona]

  ME.SetColumnWidths([10.0, 30.0, 110.0, 40.0])    
   FOR EACH MyRS
    ME.Row([MyRS!quantita, MyRS!codice, MyRS!descrizione, MyRS!colore])
   NEXT

Questa no, sicuramente il risultato del recordset và scritto diversamente, ma non sò come  :hard:
seconda domanda, con questo sistema si può cambiare allineamento del testo di una colonna, tipo per la colonna prezzo?

Intanto continuo a provare  ;D
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 18 Settembre 2010, 16:13:05
Nei miei programmi ho sempre usato Cell(), con cui posso decidere l'allineamento...

Riguardo alle due anomalie riscontrate, state usando le vostre funzioni ? Ovvero MultiCell2, e via dicendo?

E' probabile che mi sia sfuggita qualche variazione sulle originali, e che non ho riportato sulle vostre...
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 22 Settembre 2010, 21:49:04
Ho provato alcuni caratteri speciali, compreso "€" usando un semplice "Cell", niente non và.

Se per caso servisse, ho riscritto la funzione Multirect
Codice: gambas [Seleziona]

PUBLIC SUB MultiRect(wrect AS Integer[])
DIM ind AS Integer
DIM mylMargin AS Integer = $lMargin
  FOR ind = 0 TO wrect.Count - 1
   ME.Rect(mylMargin, $y, wrect[ind], $max_y, "")
   mylMargin += wrect[ind]
  NEXT
END
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 23 Settembre 2010, 10:10:19
...a meno che, a pensarci bene, mi erano scappate di mente, le funzioni relative ai font, che si basano su strutture che non sono, ovviamente, di Gambas, bensì legate a codici acrobat...

E' possibile che determinati caratteri non siano stati implementati o, comunque rappresentati con tabelle diverse...

Tocca studiare la cosa...  :bad:
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 02 Ottobre 2010, 02:16:04
Ragazzi comunque la documentazione su questa libreria è ancora scarsa....sto provando ad usarla per un mio progetto e mi tocca studiare da quello di fpdf....che in alcuni punti non è uguale.....

Dovremmo migliorare il wiki e, a mio modesto parere, creare anche un documento pdf da scaricare..ne sto iniziando a scrivere uno. Se volete collaborare ditemelo e lo allego...
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 08 Ottobre 2010, 01:27:04
Scusate se ho perso qualche passaggio ma volevo chiedere: per inserire lettere accentate senza  che mi vengano restituiti strani caratteri, come dovrei fare?
Titolo: Re: Report con PdfWriter
Inserito da: dex - 08 Ottobre 2010, 22:08:16
Scusate se ho perso qualche passaggio ma volevo chiedere: per inserire lettere accentate senza  che mi vengano restituiti strani caratteri, come dovrei fare?

usa questa versione che stampa tutte le lettere accentati e simboli € £ $ % &
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 09 Ottobre 2010, 00:36:40
si grazie... :)
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 09 Ottobre 2010, 14:59:17
Ho corretto un piccolo errore, introdotto con nel porting da fpdf 1.6.

In allegato nuovamente i sorgenti di PdfWriter 0.0.5

Attendo esito dei test, in modo da pubblicare questa nuova release su sf.net

Ciao
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 09 Ottobre 2010, 16:04:12
Ho fatto una prova veloce, il simbolo € non và.  :-\
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 09 Ottobre 2010, 16:09:56
Ho visto che hai mantenuto multicell2 ( :D gracias)
Avevo riscritto la funzione multirect, è meglio se la sostituisci con questa
Codice: gambas [Seleziona]

   1. PUBLIC SUB MultiRect(wrect AS Integer[]) 
   2. DIM ind AS Integer 
   3. DIM mylMargin AS Integer = $lMargin 
   4.  FOR ind = 0 TO wrect.Count - 1 
   5.   ME.Rect(mylMargin, $y, wrect[ind], $max_y, "") 
   6.   mylMargin += wrect[ind] 
   7.  NEXT   
   8. END 


Ciao grazie
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 11 Ottobre 2010, 11:09:18
Ok, vedo di aggiungere la tua modifica.

Riguardo ai caratteri, io credo che questo dipenda anche dalla gestione dei font contenuta nella libreria, in cui probabilmente non sono definiti alcuni caratteri, e forse è per questo che Conv non funziona. Ma è un'ipotesi che devo verificare.
Purtroppo, non è possibile utilizzare la gestione forn di Gambas, perchè non compatibile con quella pdf...

Spero di trovare il problema...
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 19 Ottobre 2010, 17:31:50
Esiste la possibilità (o la si può implementare) di inserire un immagine in una cella?
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 19 Ottobre 2010, 18:38:25
Cosa intendi per inserirla in una cella? L'immagine puoi inserirla con le dimensioni che vuoi nelle coordinate che imposti.

Questo è per inserire un'immagine
Codice: gambas [Seleziona]
ME.Image(Application.Path & "/logo.png", 10, 10, 80, 35, "png")
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 20 Ottobre 2010, 00:08:03
Cosa intendi per inserirla in una cella? L'immagine puoi inserirla con le dimensioni che vuoi nelle coordinate che imposti.

Questo è per inserire un'immagine
Codice: gambas [Seleziona]
ME.Image(Application.Path & "/logo.png", 10, 10, 80, 35, "png")


Si lo so....io volevo inserire l'immagine in una cella come si fa con il trsto in modo da poter fare tutto ciò che faresti con il testo: bordo, allineamento, etc...
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 20 Ottobre 2010, 00:24:23
allora non so..aspetta MD
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 12 Novembre 2010, 15:46:01
Ovvero, vorresti che l'inserimento dell'immagine venga fatto in modo dinamico dalla gestione della tabella?

No.
Ma la cosa credo sia relativamente semplice da implementare, visto che comunque hai a disposizione le coordinate attuali di ogni riga.
Titolo: Re: Report con PdfWriter
Inserito da: Ceskho - 12 Novembre 2010, 18:48:18
Ovvero, vorresti che l'inserimento dell'immagine venga fatto in modo dinamico dalla gestione della tabella?

No.
Ma la cosa credo sia relativamente semplice da implementare, visto che comunque hai a disposizione le coordinate attuali di ogni riga.

cioè?
Titolo: Re: Report con PdfWriter
Inserito da: dex - 12 Novembre 2010, 21:29:12
Ovvero, vorresti che l'inserimento dell'immagine venga fatto in modo dinamico dalla gestione della tabella?

No.
Ma la cosa credo sia relativamente semplice da implementare, visto che comunque hai a disposizione le coordinate attuali di ogni riga.

interessante, il problema si pone per intercettare le coordinate della cella in quanto ogni cella si colloca utilizzando le coordinate della precedente, su un foglio con solo celle si possono calcolare le coordinate, su un foglio con Multicell o Multiriga (di golia) no.
Oppure esiste da codice la possibilità di prelevare le coordinate della singola cella?
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 15 Novembre 2010, 12:44:04
Potrei anche dire una castronneria, visto che è un pò che non metto mano al codice, ma anche per la MultiCell, dato che viene calcolata, credo esista la possibilità di carpirne le coordinate usate.

Dobbiamo immaginare un documento pdf più come una drawingarea, e non un documento di testo. Le funzioni di disegno utilizzano sempre le coordinate del foglio attivo. Finchè non viene cambiata la pagina, si può disegnare qualsiasi cosa su qualsiasi punto del foglio, comprese anche stringhe di testo.

PdfWriter per le sue variabili interne usa il sistema delle funzioni (Get/Set), e in base al tipo di dato permettono di leggere e scrivere i relativi valori nelle variabili interne, similarmente alle PROPERTY _Read/_Write di norma usate con gambas.
Come per la Cell(), anche la Multicell() utilizza le stesse variabili di coordinata, per cui è possibile definire dove la riga verrà stampata, ma anche dove "è stata stampata", risalendo alle coordinate virtuali precedenti, e successive al calcolo di dimensionamento della MultiCell.
Giocando con questi fattori, credo si possa determinare dovè situato il cursore virtuale della tabella sul foglio, e agire di conseguenza.
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 08 Dicembre 2010, 18:29:52
Una informazione...

Sapete se si può configurare la stampante?

A me serve che il PDF che verrà stampato non venga adattato ai margini di stampa della stampante, ma che la stampa sia esattamente quella del foglio PDF creato da PDFWriter.

Non m'importa se la stampa taglierà il testo... tanto li ho già calcolati e rientrano nei limiti di stampa.

PS. non voglio farlo ogni volta dalla finestra di dialog della stampante... ma preferirei che lo faccia da predefinito, cambiando l'impostazione della stampante che è quella di "ruota e centra"... Non so, magari c'è qualche comando da SHELL...
Titolo: Re: Report con PdfWriter
Inserito da: dex - 08 Dicembre 2010, 20:29:22
potresti provare a stamparlo direttamente, senza passare dalla finestra di dialogo della stampante.

prova con:

Citazione
DIM hStampa AS Process
hStampa = SHELL ("lpr " & "percorso") WAIT
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 09 Dicembre 2010, 09:53:32
Grazie Dex,
ma la cosa si verifica sia usando il printer di evince, sia usando il comando da SHELL lpr...
Quindi mi sono incuriosito ed ho provato a stampare un disegno fatto con InkScape (grafica vettoriale) con gli stessi margini e, con mia grande sorpresa, anche questo viene ridimensionato in maniera identica.

A questo punto credo che sia il CUPs che ridimensiona automaticamente il file che spedisce alla stampante...

La stampante è un di quelle che può stampare a margine 0, ossia tutto il foglio...
Cmq, ho provato a togliere completamente i margini dal mio disegno ed il risultato è che, per un foglio senza margini, me lo stampa con 3mm Left, 3mmRight, 3mmBottom, e 0mmTop... in pratica viene ridotto di circa il 104% da dx a sn e circa del 102% dall'alto in basso.

Teoricamente potrei risolvere usando uno Me.Scale(X%,Y%) sul disegno generato da PdfWriter... che mi genera un PDF più grande... solo che poi devo settare tutti i valori in X... va bè... un po' un casino ma la soluzione (a verso) si trova.

Se qualcuno di voi sa come risolvere direttamente da CUPs sarebbe meglio! Io a parte la GUI "stampa" sotto il pannello Amministrazione (Ubuntu10.04) e/o la guida su "lpr" non ho trovato granché...  :-\
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 09 Dicembre 2010, 10:15:45
Ho risolto!

In pratica nelle impostazioni della mia stampante, tra le opzioni generali c'è un "Shrink Page If Necessary to Fit Borders:"

Settando questo parametro a "Crop (preserve dimension)" la stampante non aggiusta più il file in maniera predefinita (come era nelle opzioni di base).

Sapete se questo parametro si possa configurare anche da Cups, cioè da "lpr"? Ho provato a cercare tra le opzioni di "Lpr" ma non lo trovo...
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 14 Dicembre 2010, 16:57:38
Sempre alla ricerca di miglioramenti... di questo meraviglioso progetto!

Se non ho capito male, credo che il Font predefinito di FPDF sia codificato in cp1252 (Western Europe), il quale ha solamente 255 caratteri disponibili...

Analizzando la ottima modifica apportata da Golia ho pensato di aggiungere direttamente una Function che restituisce la stringa modificata con tutti i Replace apportati. Ho aggiunti anche altri Replace, infatti io ho la necessità di stampare anche caratteri greci.
Il fatto è che finora mi sono limitato a sostituire "α", "β", "γ", ecc... con "a", "b", "g", ecc.

Codice: gambas [Seleziona]
Private Function convCP1252($txt As String) As String
  'righe aggiunte da golia
  $txt = Replace($txt, "€", Chr(128))
  $txt = Replace($txt, "‚", Chr(130))
  $txt = Replace($txt, "ƒ", Chr(131))
  $txt = Replace($txt, "„", Chr(132))
  $txt = Replace($txt, "…", Chr(133))
  $txt = Replace($txt, "†", Chr(134))
  $txt = Replace($txt, "‡", Chr(135))
  $txt = Replace($txt, "ˆ", Chr(136))
  $txt = Replace($txt, "‰", Chr(137))
  $txt = Replace($txt, "Š", Chr(138))
  $txt = Replace($txt, "‹", Chr(139))
  $txt = Replace($txt, "Œ", Chr(140))
  $txt = Replace($txt, "Ž", Chr(142))
  $txt = Replace($txt, "‘", Chr(145))
  $txt = Replace($txt, "’", Chr(146))
  $txt = Replace($txt, "“", Chr(147))
  $txt = Replace($txt, "”", Chr(148))
  $txt = Replace($txt, "•", Chr(149))
  $txt = Replace($txt, "–", Chr(150))
  $txt = Replace($txt, "—", Chr(151))
  $txt = Replace($txt, "˜", Chr(152))
  $txt = Replace($txt, "™", Chr(153))
  $txt = Replace($txt, "š", Chr(154))
  $txt = Replace($txt, "›", Chr(155))
  $txt = Replace($txt, "œ", Chr(156))
  $txt = Replace($txt, "ž", Chr(158))
  $txt = Replace($txt, "Ÿ", Chr(159))  
  $txt = Replace($txt, "é", Chr(233))
  $txt = Replace($txt, "è", Chr(232))  
  $txt = Replace($txt, "£", Chr(163))
  $txt = Replace($txt, "à", Chr(224))    
  $txt = Replace($txt, "ç", Chr(231))
  $txt = Replace($txt, "ì", Chr(236))    
  $txt = Replace($txt, "ò", Chr(242))
  $txt = Replace($txt, "°", Chr(176))        
  $txt = Replace($txt, "ù", Chr(249))
  $txt = Replace($txt, "§", Chr(167))
  'fine righe golia
  
  ' aggiunti da me...
  $txt = Replace($txt, "À", Chr(192))
  $txt = Replace($txt, "È", Chr(200))
  $txt = Replace($txt, "É", Chr(201))
  $txt = Replace($txt, "Ò", Chr(210))
  $txt = Replace($txt, "Ù", Chr(217))
  $txt = Replace($txt, "Ì", Chr(204))
  
  $txt = Replace($txt, "α", "a") '"alfa")
  $txt = Replace($txt, "β", "b") '"beta")
  $txt = Replace($txt, "γ", "g") '"gamma")
  $txt = Replace($txt, "δ", "d") '"delta")
  $txt = Replace($txt, "ε", "e") '"epsilon")
  $txt = Replace($txt, "μ", "micron")
  $txt = Replace($txt, "ω", "o") '"omega")
  
  Return $txt
End


Poi in ogni procedura che richiama un "txt" faccio fare immediatamente la conversione, così ho modificato cell, cell2, text, multicell, rotatetext... con una sola riga da inserire appena prima viene richiamata la prima "txt" nella procedura...
In questo modo il codice è più snello, e se volete modificare/aggiungere dei caratteri lo fate una volta sola in tutte le procedure.

Codice: gambas [Seleziona]
txt = convCP1252(txt)


Cercando un po' su internet poi ho scoperto che c'è una libreria identica a FPDF, la UFPDF, che ha come differenza quella di accettare la codifica UT8... molto più completa.

La mia domanda è... Si potrebbe sostituire la libreria FPDF con UFPDF oppure è un lavorone?

PS. perché non vedo come sia possibili poter stampare i caratteri greci usando la FPDF (se non cambiando l'encode del carattere, ma a quel punto dovrei rivedere tutti i caratteri normali se combaciano...). Ho visto che la FDPF accetta anche il cp1253 (ossia la codifica greca...)
Nel caso, come si cambia l'enc di un font in FPDF?

PPS. sempre in tema di caratteri, come faccio ad aggiungerne uno nuovo font oltre a quelli che già ci sono predefiniti?
Ho visto che c'è un comando addFont... ma non ho capito bene come usarlo da gambas (mi pare che sia predisposto per essere usato in PHP).
 :)
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 14 Dicembre 2010, 23:35:40
Ciao perseo
Grazie per aver apprezzato il mio lavoro :2birre:
Però da quello che vedo non hai l'ultima versione, avevo aggiustato la funzione per i caratteri e anche multirect.
Comunque il lavoro che avevo fatto è provvisorio, MD stava lavorando per rimediare il problema.
Ti allego il mio pdfwriter, ciao :2birre:
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 16 Dicembre 2010, 17:00:18
Certo Golia! Evidentemente avevo scaricato una versione non troppo aggiornata! Ho visto che hai aggiunti tutti i caratteri, fino al 255°.  ;)

Copio/incollo quelli mancanti sul mio PdfWriter, dove ho fatto qualche altra modifica personale, e non vorrei commettere dimenticanze.  :ok:


Quello che mi chiedevo... ho notato che MD ha fatto il porting di una libreria php in gambas. Ma, conoscendo il linguaggio da cui attingere, lo stesso lavoro si può fare anche per altre librerie? Cioè, io posso anche importarne di altre oppure ci sono dei comandi da rispettare...

Molto più semplicemente... come si fa il porting da una libreria di un linguaggio per un altro?
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 16 Dicembre 2010, 17:47:02
Golia,

credo di aver appena intuito una cosa eccezionale! Se è come penso stasera ti/vi racconto!  ;)
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 16 Dicembre 2010, 20:21:32
Niente...  :hard:

Ero convinto di aver trovato un metodo rapido per inserire i caratteri greci. Invece ancora niente...

cmq ho trovato la libreria tfpdf, un'altra variante di fpdf, che accetta i caratteri unicode.
Purtroppo io non so fare il porting da php, quindi bisogna aspettare se MD ha voglia di implementare questa funzione ulteriore.
Per chi fosse capace metto qui il link.

metto qui il link:
http://www.phpcompta.be/doc/classtFPDF.html
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 17 Dicembre 2010, 11:37:23
A "perseo"!!! Ma mi vuoi proprio far lavorare, eh?!?  :evil:

Mò gli dò un'occhiata, ma solo quella però...  ;D

Nota: tradurre da php non è un grosso problema, solo che alcune funzioni tocca simularle, e altre proprio riscriverle perchè impossibili. Il problema maggiore, però, è quella di capire come e che cosa fà il programma, e l'integrazioni tra oggetti e file...
Tradurre PdfWriter non è stato semplice, e l'ho dovuta riscivere da zero più di una volta, ma alla fine, capita la logica, la cosa è andata bene.
Devo dire che rifare la cosa daccapo non mi esalta molto...  ;D
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 17 Dicembre 2010, 11:45:30
Ho dato giusto un'occhio or ora, e mi pare che la cosa più importante e utile, siano le due funzioni in fondo al sorgente, relative alla conversione, appunto, dei caratteri UTF.
A parte studiare il come poi è integrato il tutto, bisigna capire se è necessario modificare anche i font...

Farò sapere...
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 17 Dicembre 2010, 12:44:47
Se può esserti utile, io ho scaricato un programma per il confronto dei testi. Sicuramente lo conoscerai già, si chiama MELD (altrimenti anche Diffuse...). In pratica mette a confronto due (anche tre) file di testo e ti dice le aggiunte/modifiche sia dell'uno e dell'altro...

(http://meld.sourceforge.net/meld_file1.png)

Io ho messo a confronto i due file: fpdf.php e tfpdf.php... ed è uscito fuori che le modifiche effettive sono relativamente poche.
Scorrendo con il cursore ti accorgi che la maggior parte delle differenze sono dovute al CaseSensitive, quindi non necessitano di essere ritoccate.

PS. ...senza nessunissima fretta!  :)
Titolo: Re: Report con PdfWriter
Inserito da: md9327 - 20 Dicembre 2010, 13:52:05
Meld lo conosco, ma ill problema non sono le differenze tra i sorgenti dei due progetti in php, quanto più le variazioni che ho applicato (anche obbligatoriamente) nella conversione.

Comunque, grazie per i suggerimenti... Peccato tu non abbia domestichezza con il php, altrimenti potevi entrare nel grande team ufficiale PdfWriter (praticamente sono solo io...  :P )...

Mò ce sò le feste di mezzo, oltre che altri problemi più seri e impellenti, per cui la cosa si protrarrà abbastanza in avanti nel tempo... mi dispiace...
A meno che tu non voglia prendere in mano il progetto...  ;)
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 20 Dicembre 2010, 15:59:23
Citazione
A meno che tu non voglia prendere in mano il progetto...  Occhiolino

Se volevi distruggere il tuo meraviglioso lavoro... potevi dirlo subito... ci metto 3 secondi!  ;D

Scherzi a parte! Se fossi in grado di aiutarti lo farei anche da subito. Ma purtroppo non ne sono proprio capace.  :bad:

PS. ho provato a leggere l'aggiunta in php di TFPDF per l'UTF8... ma non ci ho capito una ...paletta.  :)
Titolo: Re: Report con PdfWriter
Inserito da: doublemm - 26 Dicembre 2010, 23:05:43
ciao, come faccio per creare una pagina di dimensioni personalizzate? devo stampare su di una stampante termica con carta 73x130

cosa devo usare al posto di: pdf = New ClassStampaOrdine("Portrait", "mm", "A4") ?
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 26 Dicembre 2010, 23:18:18
Ciao,
Apri la classe Pdfwriter e alle righe.. circa 260, trovi questo
Codice: gambas [Seleziona]

  CASE "a3"
    $fwPt = 841.89
    $fhPt = 1190.55
  CASE "a4"
    $fwPt = 595.28
    $fhPt = 841.89
  CASE "a5"
    $fwPt = 420.94
    $fhPt = 595.28
  CASE "letter"
    $fwPt = 612
    $fhPt = 792
  CASE "legal"
    $fwPt = 612
    $fhPt = 1008

Ci aggiungi un case con la misura da te desiderata, poi
Codice: gambas [Seleziona]

New ClassStampaOrdine("Portrait", "mm", "NUOVOCASE")
Titolo: Re: Report con PdfWriter
Inserito da: doublemm - 26 Dicembre 2010, 23:24:00
vedo che le misure dei case non corrispondono alle misure reali del formato credo basti fare una proporzione giusto?
Titolo: Re: Report con PdfWriter
Inserito da: Golia - 26 Dicembre 2010, 23:25:51
Penso di si...mai provato ;D
Titolo: Re: Report con PdfWriter
Inserito da: doublemm - 28 Dicembre 2010, 12:14:04
mii trovo con questo problema:

genero il file pdf e lo stampo con una stampante a4= tutto ok

se lo stampo con una stampante citizen termica(quelle per le comande del bar) mi escono tutti caratteri strani.

se importo il pdf in openoffice mi chiede OPZIONI FILTRO ASCII io seleziono il predefinito unicode utf8 e mi escono anche li tutti caratteri strani

come risolvo?
Titolo: Re: Report con PdfWriter
Inserito da: perseo - 28 Dicembre 2010, 19:00:54
Doublemm, la risposta è semplice.

PDFWriter non accetta caratteri UTF-8, ma solo ASCII (256 caratteri). Quindi, per il momento, non può essere usato testo con la codifica UTF-8.
Titolo: Re: Report con PdfWriter
Inserito da: doublemm - 28 Dicembre 2010, 21:36:51
cmq penso che il problemi esuli da pdfwriter perchè il file pdf risulta giusto è poi quando lo stampo che sorgono i problemi
Titolo: Re: Report con PdfWriter
Inserito da: doublemm - 01 Gennaio 2011, 12:38:40
Ho trovato la soluzione al precedente post.
Per stampare i caratteri corretti con la stampante termica citizen devo aprire il pdf prodotto con openoffice su cui ho installato come aggiuntivo il convertitore di pdf.

Ora mi trovo co(n il seguente problema:
ho aggiunto alla classe PdfWriter la seguente riga

Codice: gambas [Seleziona]

$pageFormats.Add([207.12, 368.85], "citizen") 


la pagina si crea con le misure corrette (la carta termica è un rotolo continuo di larghezza 7,3 cm) se inserisco del testo allineato a sinistra lo trovo all'nterno del documento ma se lo scrivo con allineamento center lo trovo fuori del documento
Titolo: Re: Report con PdfWriter
Inserito da: doublemm - 01 Gennaio 2011, 12:42:39
Ciao,
Apri la classe Pdfwriter e alle righe.. circa 260, trovi questo
Codice: gambas [Seleziona]

  CASE "a3"
    $fwPt = 841.89
    $fhPt = 1190.55
  CASE "a4"
    $fwPt = 595.28
    $fhPt = 841.89
  CASE "a5"
    $fwPt = 420.94
    $fhPt = 595.28
  CASE "letter"
    $fwPt = 612
    $fhPt = 792
  CASE "legal"
    $fwPt = 612
    $fhPt = 1008

Ci aggiungi un case con la misura da te desiderata, poi
Codice: gambas [Seleziona]

New ClassStampaOrdine("Portrait", "mm", "NUOVOCASE")


nella mia classe pdfwriter il codice l'ho trovato così

Codice: gambas [Seleziona]

  Case "in"
    $k = 72
  Default
    Error.Raise("Incorrect unit: " & unit)
  End Select
  'Page format
  ' SELECT CASE Lower(form)
  ' CASE "a3"
  '   $fwPt = 841.89
  '   $fhPt = 1190.55
  ' CASE "a4"
  '   $fwPt = 595.28
  '   $fhPt = 841.89
  ' CASE "a5"
  '   $fwPt = 420.94
  '   $fhPt = 595.28
  ' CASE "letter"
  '   $fwPt = 612
  '   $fhPt = 792
  ' CASE "legal"
  '   $fwPt = 612
  '   $fhPt = 1008
  ' DEFAULT
  '   Error.Raise("Unknown page format: " & form)
  ' END SELECT
  ' $fw = $fwPt / $k
  ' $fh = $fhPt / $k
  $pageFormats = New Collection
  $pageFormats.Add([841.89, 1190.55], "a3")
  $pageFormats.Add([595.28, 841.89], "a4")
  $pageFormats.Add([420.94, 595.28], "a5")
  $pageFormats.Add([612, 792], "letter")
  $pageFormats.Add([612, 1008], "legal")
  $pageFormats.Add([207.12, 368.85], "citizen") 
  size = _getpageformat(form)
  If (IsNull(size)) Then
    Error.Raise("Unknown page format: " & form)
  End If


naturalmente il formato citizen l'ho aggiunto io
Titolo: Re: Report con PdfWriter
Inserito da: TheSim1965 - 17 Aprile 2012, 11:57:16
Magari si era capito ma le misure sono espresse in punti tipografici (1/72") quindi per avere le misure in cm la formuletta è: <valore> / 72 * 2.54

Ciao e Buon Lavoro!
Titolo: Re:Report con PdfWriter
Inserito da: Golia - 30 Giugno 2016, 18:14:42
Ciao a tutti
In questi giorni ho avuto modo di riguardarmi questo progetto, e con il consiglio dell'amico Picavbg ho aggiunto un'altro esempio con "Multicell".
Ho rifatto tutto tranne i vecchi esempi e naturalmente Pdfwriter, che però ho un pò ritoccato (spero che Md9327 non me ne voglia :) e spero anche che mi legga).
L'unica modifica sostanziale, che se qualcuno importa la classe Pdfwriter nel proprio progetto con report fatti precedentemente, è la funzione "Multiriga" che avevo fatto io all'epoca e che a MD non piaceva il nome  :). L'ho rinominata "Multicol" visto che effettivamente va a creare colonne....
Comunque basta SOLO rinominare  >Multiriga< con >MultiCol<
Ho rimodernato l'anteprima di stampa "PrintPdf".
Comunque il report d'esempio da guardare è sempre quello di MD, 24 pagine di esempi con testi disegni colori e barcode.
Spero vi possa essere utile  :2birre:
Titolo: Re:Report con PdfWriter
Inserito da: Golia - 13 Settembre 2023, 17:20:45
Versione di oggi
Sostituito il componete gb.pdf con gb.poppler.
Quindi il form per l'anteprima del file (Printpdf) è stato cambiato, il resto funziona come prima