Autore Topic: [Risolto] pdfwriter+evince  (Letto 11000 volte)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
[Risolto] pdfwriter+evince
« il: 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
« Ultima modifica: 05 Settembre 2010, 10:12:52 da andy60 »

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #1 il: 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.

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: [Risolto] pdfwriter+evince
« Risposta #2 il: 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 :'(

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #3 il: 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

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #4 il: 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

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: [Risolto] pdfwriter+evince
« Risposta #5 il: 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

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #6 il: 05 Settembre 2010, 22:53:23 »
Sbagli a scrivere cell
scrivi così
ME.Cell(40, 10, "Hello World'", TRUE, 0, "C", FALSE)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: [Risolto] pdfwriter+evince
« Risposta #7 il: 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

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #8 il: 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)

« Ultima modifica: 05 Settembre 2010, 23:08:14 da dex »

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #9 il: 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

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #10 il: 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.

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: [Risolto] pdfwriter+evince
« Risposta #11 il: 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

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #12 il: 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à ;)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: [Risolto] pdfwriter+evince
« Risposta #13 il: 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

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: [Risolto] pdfwriter+evince
« Risposta #14 il: 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. 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