Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Classe clsPDFCreator

  1. #1
    Utente di HTML.it L'avatar di Ivan90
    Registrato dal
    Dec 2005
    Messaggi
    59

    Classe clsPDFCreator

    Salve ragazzi,
    sto cercando tramite visual basic 6 di stampare in un file pdf i dati di una scheda in un archivio ricette che interroga in pratica un database.
    Voglio creare questa funzione stampa, che appunto crea un file pdf con i dati della relativa scheda selezionata.
    Ho utilizzato la classe clsPDFCreator, ho letto numerosi post in merito , ma nessuno riesce a risolvere il mio problema.

    In pratica questa classe permette tra le sue tante funzioni membro di stampare una stringa di testo nel file pdf tramite la DrawText che vuole come parametri le coordinate di X,Y,la stringa, e l'allineamento.

    Il problema è che io ho bisogno di recuperare il testo degli ingredienti e del procedimento che ho in una rich text box e quindi ho bisogno che il testo deve andare a capo, però la funzione DrawText mi stampa tutto su una riga e non va per nulla a capo!!!!!

    Grazie mille in anticipo

  2. #2
    Utente di HTML.it L'avatar di Ivan90
    Registrato dal
    Dec 2005
    Messaggi
    59
    Posto del codice, magari vi può essere di aiuto :


    questa è la funzione DrawText che si trova all'interno della classe clsPDFCreator

    Public Sub DrawText(x As Single, y As Single, strTemp As String, _
    FontName As String, Fontsize As Single, _
    Optional Align As pdfTextAlign = pdfAlignLeft, _
    Optional Rotate As Single = 0)
    Dim rad As Single
    Dim PI As Single
    Dim sTeta As Single
    Dim cTeta As Single
    Dim C As Single
    Dim l As Single

    Select Case Align
    Case pdfAlignLeft

    Case pdfAlignRight
    l = Length(strTemp, FontName, Fontsize)
    x = x - l
    Case pdfCenter
    l = Length(strTemp, FontName, Fontsize)
    x = x - l / 2
    End Select

    WriteObj "BT"
    WriteObj "/" & FontName & " " & ToStr(Fontsize) & " Tf"
    If Rotate <> 0 Then
    PI = 3.141592
    C = PI / 180
    sTeta = Sin(C * Rotate)
    cTeta = Cos(C * Rotate)
    WriteObj ToStr(cTeta) & " " & ToStr(sTeta) & " " & _
    ToStr(-sTeta) & " " & ToStr(cTeta) & _
    " " & ToStr(ToSpace(x)) & " " & ToStr(ToSpace(y)) & " Tm"
    Else
    WriteObj ToStr(ToSpace(x)) & " " & ToStr(ToSpace(y)) & " Td"
    End If
    WriteObj "(" & strTemp & ") Tj"
    WriteObj "ET"
    ' WriteObj "24 TL"
    End Sub


    nella form invece mediante la pressione del tasto stampa, faccio questo.

    Private Sub cmdStampa_Click()
    Dim clPDF As New Class1
    Dim strFile As String

    varTitolo = lblTitolo.Caption
    varPersone = rtbPersone.Text
    varPortata = rtbPortata.Text
    varTempo = rtbTempo.Text
    varDifficolta = rtbDifficolta.Text
    varIngredienti = rtbIngredienti.Text
    varProcedimento = rtbProcedimento.Text

    Dim rs As ADODB.Recordset
    Dim Sql As String

    Dim percorso As String
    percorso = App.Path & "\Foto\"
    Sql = "SELECT IDRicetta,Foto From tblRicette Where IDRicetta=" & frmRicette.lstRicette.SelectedItem.Text
    Set rs = Conn.Execute(Sql)

    If Not rs.EOF Then
    If rs("Foto") <> "" Then
    If Dir(percorso & rs("Foto")) <> "" Then
    varFoto = rs("Foto")
    End If
    End If
    End If
    rs.Close
    Set rs = Nothing

    MsgBox varFoto
    ' Imposta il file di output
    strFile = App.Path & "\" & varTitolo & ".pdf"

    With clPDF
    .Title = "" & varTitolo & "" ' Titolo
    .ScaleMode = pdfCentimeter ' Unità di misura
    .PaperSize = pdfA4 ' Formato pagina
    .Margin = 0 ' Margine
    .Orientation = pdfPortrait ' Orientamento

    .InitPDFFile strFile ' inizializza il file

    ' Definisce le risorse relative ai font
    .LoadFont "Fnt1", "Times New Roman" ' Tipo TrueType
    .LoadFont "Fnt2", "Arial", pdfItalic ' Tipo TrueType
    .LoadFont "Fnt3", "Courier New" ' Tipo TrueType
    .LoadFontStandard "Fnt4", "Courier New", pdfBoldItalic ' Tipo Type1

    ' Definisce le risorse relative alle immagini
    .LoadImgFromBMPFile "Img", App.Path & "\lasagne.bmp"
    .LoadImgFromBMPFile "Img2", App.Path & "\ellemme.bmp" ', pdfGrayScale

    ' Definisce una risorsa comune da stampare solo sulle pagine pari
    .StartObject "Item1", pdfOddPages
    .SetColorFill -240
    .SetTextHorizontalScaling 120
    .DrawText 6, 3, "" & TitoloProgetto & "", "Fnt2", 100, , 60
    .SetColorFill 0
    .EndObject

    ' Inizializza la prima pagina
    .StartPage
    .DrawText 19, 1.5, "pag. " & Trim(CStr(.Pages)), "Fnt1", 12, pdfAlignRight
    .DrawObject "Footers"
    .SetColorFill rgb(255, 0, 0)
    .DrawText 10.5, 28, "" & varTitolo & "", "Fnt1", 48, pdfCenter
    .DrawImg "Img2", 8.5, 27, 4, 4

    .SetTextHorizontalScaling 70
    .SetColorFill rgb(255, 0, 0)
    .DrawText 20, 22, "Tempo", "Fnt2", 24, pdfAlignRight
    .DrawText 1, 22, "Persone", "Fnt2", 24, pdfAlignLeft
    .DrawText 5.5, 22, "Portata", "Fnt2", 24, pdfAlignLeft
    .SetColorFill rgb(0, 0, 0)
    .DrawText 20, 21, "" & varTempo & "", "Fnt2", 24, pdfAlignRight
    .DrawText 1, 21, "" & varPersone & "", "Fnt2", 24, pdfAlignLeft
    .DrawText 5.5, 21, "" & varPortata & "", "Fnt2", 24, pdfAlignLeft
    .SetColorFill rgb(255, 0, 0)
    .DrawText 16, 22, "Difficoltà", "Fnt2", 24, pdfAlignRight
    .SetColorFill rgb(0, 0, 0)
    .DrawText 16, 21, "" & varDifficolta & "", "Fnt2", 24, pdfAlignRight
    .SetTextHorizontalScaling 100


    .SetTextHorizontalScaling 70
    .SetColorFill rgb(255, 0, 0)
    .DrawText 1, 13, "Procedimento", "Fnt2", 24, pdfAlignLeft
    .DrawText 1, 19, "Ingredienti", "Fnt2", 24, pdfAlignLeft
    .SetColorFill rgb(0, 0, 0)
    .DrawText 1, 12, "" & varProcedimento & "", "Fnt2", 12, pdfAlignLeft
    .DrawText 1, 18, "" & varIngredienti & "", "Fnt2", 12, pdfAlignLeft



    '.SetTextHorizontalScaling 50
    '.DrawText 20, 10, "Testo compresso 50%", "Fnt2", 24, pdfAlignRight

    '.SetTextHorizontalScaling 150
    '.DrawText 1, 10, "Testo espanso 150%", "Fnt4", 24, pdfAlignLeft

    '.SetCharSpacing 5
    '.DrawText 1, 8, "Spaziatura caratteri 5", "Fnt3", 16, pdfAlignLeft
    '.SetCharSpacing 0
    '.SetWordSpacing 10
    '.DrawText 20, 7, "Spaziatura fra le parole 10", "Fnt3", 16, pdfAlignRight

    ' Chiude la prima pagina
    .EndPage



    ' Chiude la seconda pagina
    '.EndPage


    ' Definisce una risorsa da stampare su tutte le pagine
    .StartObject "Footers", pdfAllPages
    .DrawText 20, 1.5, "di " & Trim(CStr(.Pages)), "Fnt1", 12, pdfAlignRight
    .EndObject

    ' Chiude il documento
    .ClosePDFFile

    End
    End With

    End Sub


    in pratica qui ho il problema :

    .DrawText 1, 12, "" & varProcedimento & "", "Fnt2", 12, pdfAlignLeft
    .DrawText 1, 18, "" & varIngredienti & "", "Fnt2", 12, pdfAlignLeft

    questa funzione mi scrive il contenuto tutto su una riga, non rispettando la formattazione!!!!

  3. #3
    Utente di HTML.it L'avatar di Ivan90
    Registrato dal
    Dec 2005
    Messaggi
    59
    Nessuno sa aiutarmi???????????????????

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    39
    Scusa ma non ti puoi calcolare lo spazio utile ed andare a capo da solo?
    Dividi cioè TU su due righe.

    Ciao Otti

  5. #5
    Utente di HTML.it L'avatar di Ivan90
    Registrato dal
    Dec 2005
    Messaggi
    59
    Ciao otti,
    grazie per la tua risposta!!! Il problema però è che non lo so fare quello che hai detto
    Potresti magari postarmi un po di codice, appena puoi e se vuoi!!!!

    Grazie mille

    Ciao

  6. #6
    Utente di HTML.it L'avatar di Ivan90
    Registrato dal
    Dec 2005
    Messaggi
    59
    Ragazzi mi aiutate ad andare a capo?????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.