Italian La prossima settimana, VACANZE... ma per ora vado avanti

LucaMs

Expert
Licensed User
Longtime User
Perché:

1) non è che io ed Erel siamo pappa e ciccia :p

2) perché se ha previsto un chit chat generale, non penso che faccia un'eccezione per noi (altrimenti poi lo chiederanno anche tedeschi, cinesi...)

3) perché il sito di MaxWare non è male, solo che non lo frequentiamo :(
 
D

Deleted member 103

Guest
2) perché se ha previsto un chit chat generale, non penso che faccia un'eccezione per noi (altrimenti poi lo chiederanno anche tedeschi, cinesi...)
Penso che tu abbia raggione.:(
 
D

Deleted member 103

Guest
Calimero.....calispero......ciaoooo dalla Grecia
Buone vacanze.
Sei contento del mangiare greco?
Sono stato 2 anni fa a creta, ma di mangiare greco non ne ho visto.
Il giorno stesso che sono tornato in germania sono andato in un ristorante greco a mangiare.:)
 

LucaMs

Expert
Licensed User
Longtime User
Oh, voi "siete qui"... io anche su b4xitaliagroup!

Sempre solo :(

Ok, vorrà dire che ci scriverò la mia autobiografia (così chi leggerà otterrà subito... i capelli bianchi, hehehe).

Magari anche il mio testamento.
 

luciano deri

Active Member
Licensed User
Longtime User
Di niente. Spero che funzioni, non è che io abbia provato, ovviamente, soltanto mi sembra che abbia una certa logica e possibilità di riuscita.
Funziona quasi, anche con Fonts.COURIER e Typeface.MONOSPACE la dimensione dipende anche dai caratteri e non solo dal loro numero. Comunque la cosa è utile nella stampa dei valori numerici, di seguito la sintesi della soluzione.
B4X:
PDFWriter1.setFont(Fonts.SUBTYPE, Fonts.COURIER)
       str = NumberFormat2(NUMERO,0,2,2,False)
        str = str.Replace(".",",")
        TextWidth = CalcPDFTextWidth(str,Typeface.MONOSPACE,10)
        MarRight = 560 ' margine destro desiderato
        MarLeft = MarRight - TextWidth 'margine sinistro calcolato
        PDFWriter1.addText(MarLeft,580 - (11 * nr),10, str) 'nr indice record letto scorrendo un DB
Public Sub CalcPDFTextWidth(TestoDaStampare As String, TFace As Typeface, FontSize As Float) As Float
    Dim C As Canvas
    C.Initialize(Activity)
    Dim TextWidth As Float
    TextWidth = C.MeasureStringWidth(TestoDaStampare, TFace, FontSize)
    TextWidth = TextWidth * 0.70 ' aggiustamento chissà perchè è necessario un aggiustamento... A occhio questo è il valore giusto
    Return TextWidth
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Beh, affinché funzioni, dovresti usare lo stesso font, sia per il PDF che per B4A.
E' possibile cambiare i font di default di B4A, eh!

(asp che cerco come, perché a memoria sono scarsino, hehehe)


Però sono veloce :D

B4X:
Dim default_font, default_font_bold, default_font_italic As Typeface

SetFont("xxxxxx.ttf")


Private Sub SetFont(FontFileName As String)
    default_font = Typeface.LoadFromAssets(FontFileName) 'ignore
    default_font_bold   = Typeface.CreateNew(default_font, default_font.STYLE_BOLD)
    default_font_italic = Typeface.CreateNew(default_font, default_font.STYLE_ITALIC)
End Sub
 
Last edited:

luciano deri

Active Member
Licensed User
Longtime User
Beh, affinché funzioni, dovresti usare lo stesso font, sia per il PDF che per B4A.
E' possibile cambiare i font di default di B4A, eh!

(asp che cerco come, perché a memoria sono scarsino, hehehe)


Però sono veloce :D

B4X:
Dim default_font, default_font_bold, default_font_italic As Typeface

SetFont("xxxxxx.ttf")


Private Sub SetFont(FontFileName As String)
    default_font = Typeface.LoadFromAssets(FontFileName) 'ignore
    default_font_bold   = Typeface.CreateNew(default_font, default_font.STYLE_BOLD)
    default_font_italic = Typeface.CreateNew(default_font, default_font.STYLE_ITALIC)
End Sub
Non ho capito.
Così scelgo il font di stampa nel PDF
PDFWriter1.setFont(Fonts.SUBTYPE, Fonts.COURIER) ' curier è a dimensione fissa
CalcPDFTextWidth(str,Typeface.MONOSPACE,10) ' calcolo con typeface.monospace, che dovrebbe essere la caratteristica del curier, dimensione 10
PDFWriter1.addText(MarLeft,580 - (11 * nr),10, str) 'stampo con dimensione 10
....
 

LucaMs

Expert
Licensed User
Longtime User
Provo a spiegarmi meglio.

Se decidi di voler stampare parte di una pagina PDF con font "Georgia", userai quel comando di PDFWriter (che, ti ricordo, non conosco!) setFont.

Alla funzione CalcPDFTextWidth dovrai passare TFace, che dovrà essere caricato tramite la funzione setFont che ho pubblicato in #1314
 

luciano deri

Active Member
Licensed User
Longtime User
Provo a spiegarmi meglio.

Se decidi di voler stampare parte di una pagina PDF con font "Georgia", userai quel comando di PDFWriter (che, ti ricordo, non conosco!) setFont.

Alla funzione CalcPDFTextWidth dovrai passare TFace, che dovrà essere caricato tramite la funzione setFont che ho pubblicato in #1314
L'allineamento a destra serve per incolonnare i numeri in modo che ogni cifra sia incolonnata, questo è possibile solo se usiamo un font monospace. Dovrei passare al CalcPDFTextWidth un TFace corrispondente al Curirer visto che evidentemente non corrisponde al generico monospace.
P.S
mi scarico courier.ttf e lo aggiungo ai file della APP, quindi e chiamo SetFont("courier.ttf") nell'activate
 
Last edited:
Top