jamirokwai hat geschrieben:
Hast Du schon mal ein Bild eingefügt?
Bin mir gerade nicht sicher, ob ich das schon mal gemacht hatte. Aber falls... Vielleicht kannst Du ein Beispiel posten?
Gruß
J.
Hm. Ob ich Fred und Team mal vorschlage, PDF-Export als Standardfunktion in PB einzubauen? Das wäre doch mal eine super Möglichkeit. Aber ob das lizenzrechtlich möglich ist?
Ja - Standardfunktion wäre super...
Nun - ich mach gleich ein kleines howto...
1.) Include der PDF-Prozeduren...
Zu erhalten unter:
http://kc2000labs.110mb.com/pb/pb_eng.htm (Create pdf files 1.3)
In dem File die untersten Zeilen (If openwindow... bis zum ende auskommentieren) und im Projektverzeichnis abspeichern.
2.) Initialisieren des PDF's (mit dynamischen Filenamen aus Datum und Version falls schon vorhanden)
Dabei wird auch gleich der Header der Rechnungen für alle Seiten definiert.
Code: Alles auswählen
; ######################
; #
; # Start des PDF's
;{#
path$ = "/Volumes/Staroffice/PDF-Rechnungen/"+jahr$+"/"+monat$+"/"
fileversion = 0
While FileSize(path$+file$+"_"+Str(fileversion)+".pdf") > 0
fileversion +1
Wend
strFile.s = path$+file$+"_"+Str(fileversion)+".pdf" ;write the name of the file you want to create, including the path.
Title ("Rechnung")
ScaleMode(#pdfCentimeter)
PaperSize(#pdfA4)
Margin(0)
Orientation(#pdfPortrait)
InitPDFFile(strFile.s)
LoadFnt("Fnt1", "Arial")
LoadFnt("Fnt2", "Arial",#pdfItalic)
LoadFontStandard("Fnt3", "Arial",#pdfBold)
; Hier werden die Bilder geladen. (Im Projektverzeichnis abgelegt.
LoadImgFromBMPFile ("Img1", "oben.bmp");use your own bmp image file here.
LoadImgFromBMPFile ("Img2", "rechts.bmp");use your own bmp image file here.
; Objekte auf allen Seiten "aufdrucken"
StartObject ("Item1", #pdfAllPages)
SetColorFill (-240)
SetTextHorizontalScaling (120)
DrawTxt (4, 0, "Test-Rechnungen", "Fnt1", 80, #pdfAlignRight, 60)
SetColorFill (0)
; Hier wird das Bild angezeigt:
DrawImg ("Img1", 0, 29.5, 20, 2.43)
DrawImg ("Img2", 18.5, 27.05, 0.81, 17.50)
EndObject()
;} #
;}###################################
3.) Der eigentliche Inhalt:
Code: Alles auswählen
BeginPage()
; ########################################################################################################################################################################
; #
; # Rechnungsdruck
;{#
; ####################################################################################
; #
; # Ausrichtungslinien (Debug)
; #
;{
; For xa =0 To 25 Step 1
; For ya = 0 To 31 Step 1
; SetLineCap (0)
; SetLineWidth (0.01)
; SetColorStroke (RGB(200, 200, 200))
; MoveTo (xa, 0)
; LineTo (xa, 31)
;
; SetLineCap (0)
; SetLineWidth (0.01)
; SetColorStroke (RGB(200, 200, 200))
; MoveTo (0, ya)
; LineTo (25, ya)
; If xa = ya Or (ya > 20 And xa = 20)
; DrawTxt (xa, ya, Str(xa)+"/"+Str(ya) , "Fnt2", 12, #pdfAlignRight)
; EndIf
; Next
; Next
;}
; ####################################################################################
; #
; # Rechnungsempfänger
; #
DrawTxt (1, 24, "Anrede" , "Fnt1", 12, #pdfAlignRight)
DrawTxt (1, 23.5, "Leer" , "Fnt1", 12, #pdfAlignRight)
DrawTxt (1, 23.0, "Name" , "Fnt1", 12, #pdfAlignRight)
DrawTxt (1, 22.5, "Adresse1" , "Fnt1", 12, #pdfAlignRight)
DrawTxt (1, 22.0, "PLZ Ort" , "Fnt1", 12, #pdfAlignRight)
; ####################################################################################
; #
; # Rechnungsheader
; #
DrawTxt (1, 19.5, "Rechnung Nr.: "+renum$ , "Fnt3", 10, #pdfAlignRight)
DrawTxt (7, 19.5, "KdNr.: "+kdnr$ , "Fnt3", 10, #pdfAlignLeft)
DrawTxt (7, 19.5, "KdNr.: "+kdnr$ , "Fnt3", 10, #pdfAlignRight)
DrawTxt (1, 19.0, "Für Objekt: " , "Fnt3", 10, #pdfAlignRight)
DrawTxt (1, 18.5, "Zeitraum:" , "Fnt3", 10, #pdfAlignRight)
DrawTxt (15, 19.5, "Wels am " + heute$, "Fnt3", 10, #pdfAlignRight)
; ####################################################################################
; #
; # Tabelle zeichnen
; #
SetLineCap (0)
SetLineWidth (0.01)
SetColorStroke (RGB(0, 0, 0))
; Rundherum
MoveTo (1.5, 18)
LineTo (18, 18)
MoveTo (1.5, 18)
LineTo (1.5, 13.5)
MoveTo (1.5, 13.5)
lineto (18, 13.5)
MoveTo (18, 12.9)
lineto (18, 18)
; vertikal
MoveTo (10.5, 18)
lineto (10.5, 12.9)
MoveTo (13.5, 18)
lineto (13.5, 13.5)
MoveTo (16, 18)
lineto (16, 12.9)
MoveTo (16, 18)
lineto (16, 13.5)
; horizontal
MoveTo (1.5, 17.5)
lineto (18, 17.5)
MoveTo (1.5, 17)
lineto (18, 17)
MoveTo (1.5, 16.5)
lineto (18, 16.5)
MoveTo (1.5, 16)
lineto (18, 16)
MoveTo (1.5, 15.5)
lineto (18, 15.5)
MoveTo (1.5, 15)
lineto (18, 15)
MoveTo (1.5, 14.5)
lineto (18, 14.5)
MoveTo (1.5, 14)
lineto (18, 14)
MoveTo (1.5, 13.5)
lineto (18, 13.5)
MoveTo (10.5, 13)
lineto (18, 13)
MoveTo (10.5, 12.9)
lineto (18, 12.9)
; Beschriftung
DrawTxt (4, 17.6, "Beschreibung ", "Fnt3", 9, #pdfAlignRight)
DrawTxt (11, 17.6, "Einzelpreis", "Fnt3", 9, #pdfAlignRight)
DrawTxt (14.5, 17.6, "Anzahl", "Fnt3", 9, #pdfAlignRight)
DrawTxt (16.5, 17.6, "Summe", "Fnt3", 9, #pdfAlignRight)
DrawTxt (11, 13.1, "Brutto-Summe = Zahlbetrag", "Fnt3", 9, #pdfAlignRight)
4.) Seitenwechsel
Bei Bedarf wieder Punkt 3 oder ähnliches
5.) Schliessen des PDF's
6.) PDF gleich öffnen damit es z.b. gedruckt werden kann.
Code: Alles auswählen
RunProgram("open", path$+file$+"_"+Str(fileversion)+".pdf","")
Was vielleicht etwas ungewohnt ist:
Die Koordinaten werden vom linken unteren Eck gerechnet...
Ich hoffe ich hab keine Fehler drinnen - ich hab nur Teile aus meinen Progi kopiert (Datenbanksachen und Variablen (Namen etc.) ausgelassen) - und es dann nicht mehr getestet.
Ein wenig Probleme hab ich noch mit anderen Schriftarten (OCR)...
Und eben der Feinschliff fehlt noch (meinerseits) - aber sonst ists genial.
Die Zeilen die auskomentiert wurden (Punkt1) kann man als Beispiel ansehen.
Nicht recht kommentiert - aber selbstredend.
bis dann