Autore Topic: Report con PdfWriter  (Letto 32724 volte)

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Report con PdfWriter
« Risposta #75 il: 19 Ottobre 2010, 17:31:50 »
Esiste la possibilità (o la si può implementare) di inserire un immagine in una cella?

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #76 il: 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")
« Ultima modifica: 19 Ottobre 2010, 18:49:27 da Golia »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Report con PdfWriter
« Risposta #77 il: 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...

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #78 il: 20 Ottobre 2010, 00:24:23 »
allora non so..aspetta MD

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #79 il: 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.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Report con PdfWriter
« Risposta #80 il: 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è?

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #81 il: 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?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #82 il: 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.

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #83 il: 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...
« Ultima modifica: 08 Dicembre 2010, 18:31:56 da perseo »

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #84 il: 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

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #85 il: 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é...  :-\
« Ultima modifica: 09 Dicembre 2010, 09:55:36 da perseo »

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #86 il: 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...
« Ultima modifica: 09 Dicembre 2010, 10:18:57 da perseo »

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #87 il: 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).
 :)
« Ultima modifica: 14 Dicembre 2010, 17:03:38 da perseo »

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #88 il: 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:

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Report con PdfWriter
« Risposta #89 il: 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?