Gambas-it

Piattaforme => Linux => Topic aperto da: andy60 - 05 Settembre 2010, 08:37:00

Titolo: [Risolto] pdfwriter+evince
Inserito da: andy60 - 05 Settembre 2010, 08:37:00
Posso ridimensionare la finestra di evince? non trovo su internet istruzioni su evince con linea di comando? :hard: :hard: thx


Codice: [Seleziona]
evince -w
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: dex - 05 Settembre 2010, 20:46:07
ciao andy60

non uso evince in quanto mi dava errori su una stampante oki.

con pdfwriter non sei obbligato ad usare per forza evince, puoi usare qualsiasi altro visualizzatore, io uso acroread della adobe, ma anche quello di kde (ora mi sfugge il nome) funziona alla grande.
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: andy60 - 05 Settembre 2010, 21:48:48
ciao andy60

non uso evince in quanto mi dava errori su una stampante oki.

con pdfwriter non sei obbligato ad usare per forza evince, puoi usare qualsiasi altro visualizzatore, io uso acroread della adobe, ma anche quello di kde (ora mi sfugge il nome) funziona alla grande.

non riesco a stampare il codice contenuto in PUBLIC FUNCTION Data(), uso il comando cell....ma non compare nulla, boh :'(
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: Golia - 05 Settembre 2010, 22:11:40
Prova scrivere, dentro la funzione data una cosa semplice come questa
Codice: gambas [Seleziona]
ME.Cell(10, 5, "Tuo testo'", TRUE, 0, "C", FALSE)


Al limite posta un pò di codice che proviamo ad aiutarti
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: dex - 05 Settembre 2010, 22:37:05
sicuramente c'è un errore sul codice

dipende dall'errore:
se ti da errore vedi il codice errore che forse si riesce a capire
se invece non ti da nessun errore e il visualizzatore vede una pagina bianca hai sbagliato le coordinate x e y

in alternativa come ha detto golia posta il codice che si risolve
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: andy60 - 05 Settembre 2010, 22:40:03
sicuramente c'è un errore sul codice

dipende dall'errore:
se ti da errore vedi il codice errore che forse si riesce a capire
se invece non ti da nessun errore e il visualizzatore vede una pagina bianca hai sbagliato le coordinate x e y

in alternativa come ha detto golia posta il codice che si risolve


mi piacerebbe capire con un test dove in Data() ci sia solo 'hello world' all'inizio della pagina..ma non riesco

Codice: [Seleziona]
' Gambas class file

INHERITS PdfWriter


PUBLIC SUB Header()
 
 
 
END

PUBLIC FUNCTION Data()
ME.AddPage
ME.SetFont("Arial", "B", 10)
ME.Cell(40, 10, "Hello world")
END

PUBLIC FUNCTION Footer()
 
 
 
END
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: Golia - 05 Settembre 2010, 22:53:23
Sbagli a scrivere cell
scrivi così
ME.Cell(40, 10, "Hello World'", TRUE, 0, "C", FALSE)
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: andy60 - 05 Settembre 2010, 22:55:50
non va questo è il codice:

Codice: [Seleziona]
' Gambas class file

INHERITS PdfWriter


PUBLIC SUB Header()
 ME.SetX(0)
  ME.SetY(5)
  ME.SetFont("Arial", "B", 10)
  ME.Cell(160, 6, "Rubrica", FALSE, 0, "L", FALSE)
  ME.SetLineWidth(0.2)     
  ME.Line(10, 10, 200, 10)
 
 
END

PUBLIC FUNCTION Data()
ME.AddPage
ME.SetFont("Arial", "B", 10)
ME.Cell(40, 10, "Hello World", TRUE, 0, "C", FALSE)
END

PUBLIC FUNCTION Footer()
 
 
 
END
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: dex - 05 Settembre 2010, 23:04:36
modifica in questo modo:

in PUBLIC FUNCTION Data()
dopo ME.AddPage

iserisci

Codice: [Seleziona]
ME.SetXY(25, 20)

Edit: Anche in PUBLIC SUB Header() le coordinate sono sbagliate prova a mettere  ME.SetXY(15, 10)

Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: Golia - 05 Settembre 2010, 23:11:48
Ho fatto una prova con il codice che hai scritto e funziona.
Ho copiato il tuo codice dentro la classe "Class1"

poi ho lanciato la stampa così:
Codice: gambas [Seleziona]

PUBLIC SUB stampaprova()
      DIM hStampa AS Process
    DIM pdf AS Class1
   RANDOMIZE
  pdf = NEW Class1("Portrait", "mm", "A4")
  pdf.Open()
  pdf.AliasNbPages()
  pdf.Data
  pdf.Output(User.Home & "/report.pdf", FALSE)

' hStampa = SHELL ("Okular " & User.Home & "/report.pdf")

END
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: dex - 05 Settembre 2010, 23:17:19
in pdfwriter le coordinate per le celle sono per l'asse x:
°) impostate di default a 10, ma le puoi cambiare quando vuoi con  ME.SetX(15), attenzione pero che dopo un me.(ln) si resettano a 10 per la cella successiva.
°) per l'asse y partono dal punto che tu hai impostato dalla cella precedente, nel tuo caso non avendo una cella precedente devi impostare l'asse, e con me(ln) vanno a capo utilizzando il valore y inserito nella cella precedente

Citazione
ME.Cell(40, valore y, "Hello World", TRUE, 0, "C", FALSE)

per le linee e gli oggetti il discorso è diverso, usano i valori che tu inserisci e non si spostano se sopra ci sono altri oggetti o celle.
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: andy60 - 05 Settembre 2010, 23:30:40
@golia

funge, ma che fatica x scrivere na cosa...mi sa che prendo l'esempio che trovo su g2 printer
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: Golia - 05 Settembre 2010, 23:47:53
Sono contento che ci sei riuscito :)
Vedi te, a parere mio adesso che hai capito il meccanismo è tutto facile.

P.S. uno di questi giorni devo guardare il tuo programma  :)
Ma non a livello codice, ma a livello di utilità ;)
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: andy60 - 07 Settembre 2010, 18:07:18
Sono contento che ci sei riuscito :)
Vedi te, a parere mio adesso che hai capito il meccanismo è tutto facile.

P.S. uno di questi giorni devo guardare il tuo programma  :)
Ma non a livello codice, ma a livello di utilità ;)


a tua disposizione per qualunque info sull'utilizzo della dieta a zona.

Ritorno un attimo sulla Function Data(): la mie necessità è fare 3 semplici tipo di report
1) tabella di 8 colonne che prende i dati da un recordset
2)    "          1                            "
3)  altra tabella uguale alla seconda

Ho visto su wiki che si parla di multicell, devo usare quella funzione?

thx
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: Golia - 07 Settembre 2010, 22:45:31
Per fare 3 tipi di report, io farei 3 classi, le puoi clonare e cambiare solo la griglia.
Se nella griglia avrai dati che ci stanno nello spazio che imposti (cioè senza andare a capo) puoi usare semplicemente Me.Cell
Ecco l'esempio per 8 colonne:
Codice: gambas [Seleziona]

          FOR EACH MyRS ' MyRS = recordeset
                  ME.Cell(10, 5, MyRS!val1, TRUE, 0, "C", FALSE)
                  ME.Cell(21, 5, MyRS!val2, TRUE, 0, "C", FALSE)
                  ME.Cell(22, 5, MyRS!val3, TRUE, 0, "C", FALSE)
                  ME.Cell(23, 5, MyRS!val4, TRUE, 0, "C", FALSE)
                  ME.Cell(24, 5, MyRS!val5, TRUE, 0, "C", FALSE)
                  ME.Cell(25, 5, MyRS!val6, TRUE, 0, "C", FALSE)
                  ME.Cell(26, 5, MyRS!val7, TRUE, 0, "C", FALSE)
                  ME.Cell(27, 5, MyRS!val8, TRUE, 0, "C", FALSE)
                  ME.Ln()
          NEXT


Se hai dati che non ci stanno nella cella, quindi devi andare a capo, devi usare Multiriga (Attenzione questa funzione non è presente nel PdfWriter che trovi nella sezione download, ma dagli esempi che erano stati fatti quì http://www.gambas-it.org/smf/index.php?action=dlattach;topic=1056.0;attach=630 (http://www.gambas-it.org/smf/index.php?action=dlattach;topic=1056.0;attach=630). Inoltre nella prossima versione che MD9327 metterà a disposizione cambierà nome)
Ecco come fare con Multiriga:
Codice: gambas [Seleziona]

          FOR EACH MyRS ' MyRS = recordeset
                  ME.MultiRiga(10, 5, MyRS!val1, FALSE, "L", FALSE)
                  ME.MultiRiga(21, 5, MyRS!val2, FALSE, "L", FALSE)
                  ME.MultiRiga(22, 5, MyRS!val3, FALSE, "L", FALSE)
                  ME.MultiRiga(23, 5, MyRS!val4, FALSE, "L", FALSE)
                  ME.MultiRiga(24, 5, MyRS!val5, FALSE, "L", FALSE)
                  ME.MultiRiga(25, 5, MyRS!val6, FALSE, "L", FALSE)
                  ME.MultiRiga(26, 5, MyRS!val7, FALSE, "L", FALSE)
                  ME.MultiRiga(27, 5, MyRS!val8, FALSE, "L", FALSE)

                  ME.MultiRect(10, 21, 21, 23, 24, 25, 26, 27, 0, 0 ,0) ' questo serve per disegnare la griglia, i valori sono gli stessi che hai utilizzato per il valore x di multiriga
                  ME.Lnm() ' attenzione usare questo solo per multiriga
          NEXT


Per una colonna soltanto puoi usare "multicell" (và anche a capo)
Codice: gambas [Seleziona]

          FOR EACH MyRS ' MyRS = recordeset
                  ME.multicell(120, 6, MyRS!val1, TRUE, "L", FALSE)
                  ME.Ln()
          NEXT
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: andy60 - 07 Settembre 2010, 23:41:56
grazie sei un mito :2birre:...sarai ricompensato con il programma :2birre:
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: Golia - 07 Settembre 2010, 23:45:48
 ;D grazie
P.S da dove posso scaricarlo?
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: andy60 - 08 Settembre 2010, 21:30:25
sto ancora 'workinprogress'...devo finire una form e limare i casini che trovo, i report ora vanno grazie a te
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: Golia - 08 Settembre 2010, 22:22:06
Bene  :ok:
Fammi sapere quando è pronto  :2birre:
Titolo: Re: [Risolto] pdfwriter+evince
Inserito da: andy60 - 08 Settembre 2010, 23:23:43
Bene  :ok:
Fammi sapere quando è pronto  :2birre:

pronto è un parolone...posso uplodare una beta :'(