purepdf unter OSX...

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
babelfish
Beiträge: 57
Registriert: 08.07.2009 10:53

purepdf unter OSX...

Beitrag von babelfish »

Hallo PB'ler

Klar ich weiss - OSX macht selbst auch PDF's.

Aber unter PureBasic bekomme ich immer nur eine Auflösung von 72 DPI zusammen.
Egal ob ich auf einem Drucker ausgebe, eine Preview mache oder ein PDF erstelle.

(siehe http://forums.purebasic.com/german/view ... 28&t=22423)
Ich hoffte das es unter V4.5 besser wird.... /:->

Meine nächste Idee - selbst ein PDF erstellen...
Purepdf gefunden - und es will (wiedermal) nicht klappen... hab im Englischen Forum gelesen das es mal eine Version für osx GAB.
Also scheint es wirklich nur unter Windows funktionieren...

Jemand eine Idee - oder einen Hinweis für mich?

Grüße
Hauptsächlich Purebasic für OSX
jamirokwai
Beiträge: 65
Registriert: 02.06.2008 16:10

Re: purepdf unter OSX...

Beitrag von jamirokwai »

babelfish hat geschrieben:Hallo PB'ler

Klar ich weiss - OSX macht selbst auch PDF's.

Aber unter PureBasic bekomme ich immer nur eine Auflösung von 72 DPI zusammen.
Egal ob ich auf einem Drucker ausgebe, eine Preview mache oder ein PDF erstelle.

(siehe http://forums.purebasic.com/german/view ... 28&t=22423)
Ich hoffte das es unter V4.5 besser wird.... /:->

Meine nächste Idee - selbst ein PDF erstellen...
Purepdf gefunden - und es will (wiedermal) nicht klappen... hab im Englischen Forum gelesen das es mal eine Version für osx GAB.
Also scheint es wirklich nur unter Windows funktionieren...

Jemand eine Idee - oder einen Hinweis für mich?

Grüße
Hi Babelfish,

probier' mal das hier: http://www.purebasic.fr/english/viewtopic.php?t=38879
Da gibt es einen Download für eine PDF-Schreibroutine. Funktioniert super; ich benutze das auch in meinen Programmen...

Zum Thema: Die Druckroutinen unter PB/Mac OS X sind noch unausgegoren. Die Qualität stimmt einfach noch nicht. Ich hoffe immer noch auf Besserung...

Gruß
J.
babelfish
Beiträge: 57
Registriert: 08.07.2009 10:53

Re: purepdf unter OSX...

Beitrag von babelfish »

JAAAAA !!!!
:bounce:

Danke - genau nach sowas hab ich gesucht.
Ich knie mich mal rein... bis dann (gerade wenig Zeit zum coden)
:allright:
Hauptsächlich Purebasic für OSX
babelfish
Beiträge: 57
Registriert: 08.07.2009 10:53

Re: purepdf unter OSX...

Beitrag von babelfish »

Getestet - gecodet - PDF erstellt - PERFEKT!
(jetzt nur noch Feinschliff)

Danke nochmal!
:allright:
Hauptsächlich Purebasic für OSX
jamirokwai
Beiträge: 65
Registriert: 02.06.2008 16:10

Re: purepdf unter OSX...

Beitrag von jamirokwai »

babelfish hat geschrieben:Getestet - gecodet - PDF erstellt - PERFEKT!
(jetzt nur noch Feinschliff)

Danke nochmal!
:allright:
Gerne. Ich benutze es auch in meinem Reisekostenrechner. Hat - glaube ich - etwa 2 Stunden gedauert, um den Ausdruck komplett auf PDF umzubauen...

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?
babelfish
Beiträge: 57
Registriert: 08.07.2009 10:53

Re: purepdf unter OSX...

Beitrag von babelfish »

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...

Code: Alles auswählen

IncludeFile("pdfneuinc.pbi")
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

Code: Alles auswählen

EndPage()
BeginPage()
Bei Bedarf wieder Punkt 3 oder ähnliches



5.) Schliessen des PDF's

Code: Alles auswählen

EndPage()
ClosePDFFile()
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
Hauptsächlich Purebasic für OSX
babelfish
Beiträge: 57
Registriert: 08.07.2009 10:53

Re: purepdf unter OSX...

Beitrag von babelfish »

Nachtrag:

Rechts- und Linksbündig macht auch noch Probleme...
(Jedenfalls mir :freak: )
Hauptsächlich Purebasic für OSX
Antworten