PDF erstellen

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

PDF erstellen

Beitrag von babelfish »

Hallo Liebe PB'ler

Ich war jetzt einige Zeit ruhig da ich einiges selbst herausgefunden hatte und aber auch sehr wenig Zeit zum programmieren hatte.
Jetzt stehen aber einige Verbesserungen in unserer Software an. (ich hab komplette Kunden-Verwaltung, Faktura und Bankverbindung geschrieben).

Mein aktuelles Problem: Sollte die Rechnungserstellungs-App aktualisieren aber leider macht mir die PDF-Erestellung probleme.
Suche schon seit Tagen aber entweder suche ich falsch oder niemand anderer hat das Problem...

Auf Grund der PDF-Qualität konnte ich bisher damit weiterkommen:
http://forums.purebasic.com/german/view ... 28&t=22708

Aber leider bekomme ich jetzt immer ein:
Native types can't be used with pointers.

Code: Alles auswählen

Declare.l LeggeBMP(FileName.s, Array ImgBuf.b(1), Array ImgColor.b(1), *ImgWidth.l, *ImgHeight.l, *ImgBPP.b, ColorSpace.l = #pdfRGB)
Und lösche ich einfach alle "*" 8) bekomme ich ein Syntax error bei der Font-Beschreibung:

Code: Alles auswählen

TimesNormal: Data.l 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564, 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889, 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333, 469, 500
Gibts ein Workaround - oder hat jemand eine andere Idee?
Einen Druck starten und als PDF abspeichern ist keine Variante da teilweise Rechnungen im Hintergrund per Email versendet werden und andere wiederrum ausgedruckt werden müssen.
Der Druck selbst wäre ja nicht das Problem - aber die Emails... das muss (auf Grund der Menge) automatisch ablaufen.

Daher wird erst ein PDF erzeugt (auch als Rechnungskopie nötig) und dann entweder gemailt oder gedruckt.
Und bei 5000 Rechnungen im Jahr muss es automatisch ablaufen ... Dateiname usw

Das Programm läuft weiterhin - aber ich kann nicht neu kompilieren und damit eingie nötige aktualisierung nicht durchführen.
Letzte mal wurde es im Juli 2016 kompiliert (nach Dateidatum jedenfalls - mit Kommentare leider in dieser hinsicht gespart :)

Hab auch schon versucht alte Compiler einzusetzen... Selbe Fehler.

Danke und Grüße

Robert
Hauptsächlich Purebasic für OSX
Benutzeravatar
Kiffi
Beiträge: 10620
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PDF erstllen

Beitrag von Kiffi »

babelfish hat geschrieben:[...] bekomme ich ein Syntax error bei der Font-Beschreibung:

Code: Alles auswählen

TimesNormal: Data.l 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564, 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889, 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333, 469, 500
Gibts ein Workaround - oder hat jemand eine andere Idee?
einfach einen Zeilenumbruch einfügen:

Code: Alles auswählen

TimesNormal:
Data.l 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333, 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564, 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889, 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333, 469, 500
Grüße ... Peter
Hygge
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: PDF erstllen

Beitrag von NicTheQuick »

babelfish hat geschrieben:Native types can't be used with pointers.

Code: Alles auswählen

Declare.l LeggeBMP(FileName.s, Array ImgBuf.b(1), Array ImgColor.b(1), *ImgWidth.l, *ImgHeight.l, *ImgBPP.b, ColorSpace.l = #pdfRGB)
Du darfst nicht die * weg machen, sondern musst die nativen Typen weg machen:

Code: Alles auswählen

Declare.l LeggeBMP(FileName.s, Array ImgBuf.b(1), Array ImgColor.b(1), *ImgWidth, *ImgHeight, *ImgBPP, ColorSpace.l = #pdfRGB)
Zumindest denke ich, dass es eher so gedacht ist. Wer weiß ich ja nicht von deinem Code.
Bild
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: PDF erstllen

Beitrag von Andesdaf »

allgemein kann PB unter Mac OS inzwischen auch nativ PDFs rendern. Schau mal bei
PdfVectorOutput() bzw. VectorDrawing.
Win11 x64 | PB 6.00 (x64)
babelfish
Beiträge: 57
Registriert: 08.07.2009 10:53

Re: PDF erstllen

Beitrag von babelfish »

einfach einen Zeilenumbruch einfügen:
Ernsthaft? mehr nicht?
LoL - ok... ich bin ja kein Profi-Programmierer und das Zeugs ist mir schon zu stark.
Darum muss ich auch:
Du darfst nicht die * weg machen, sondern musst die nativen Typen weg machen:
Aaaaahaaaaa :)

Andesdaf hat geschrieben:allgemein kann PB unter Mac OS inzwischen auch nativ PDFs rendern. Schau mal bei
PdfVectorOutput() bzw. VectorDrawing.
Genau das hab ich gesucht...
Das wäre mir die liebste Lösung. Bin ja damals ausgewichen da die Qualität der erzeugten PDF's mehr als Sch... war.

Danke an alle für den Schubs... jetzt kann ich wieder selbst-studium betreiben.
Ich probiert gleich alles aus.
Hauptsächlich Purebasic für OSX
babelfish
Beiträge: 57
Registriert: 08.07.2009 10:53

Re: PDF erstellen

Beitrag von babelfish »

ja genau...

Natives PDF-Rendering funktioniert schon sehr gut:

Einfacher Test der, für mich, wichtigsten Funktionen:

Code: Alles auswählen

LoadFont(0, "Times New Roman", 20)

UsePNGImageDecoder();

  If StartVectorDrawing(PdfVectorOutput("/Users/DeinUserName/Desktop/test.pdf", 595, 842))  
    VectorFont(FontID(0), 25)
    
    MovePathCursor(20, 20)
    DrawVectorText("This is page 1... 20/20")
    
    VectorFont(FontID(0), 12)

    MovePathCursor(20, 40)
    DrawVectorText("This is page 1... 20/40")
    
    VectorFont(FontID(0), 12)
    VectorSourceColor(RGBA(0, 0, 0, 80))
    MovePathCursor(100, 100)
    DrawVectorText("This is page 1... 100/50")
    
    NewVectorPage()
    
    MovePathCursor(20, 20)
    DrawVectorText("This is page 2...")      
    
      LoadImage(0, "/Users/DeinUserName/Desktop/test.png")
      DrawVectorImage(ImageID(0) , 127 , ImageWidth(0) / 2, ImageHeight(0)/2)
      
      For i = 1 To 4
        AddPathLine(80, 0, #PB_Path_Relative)
        AddPathLine(0, 40, #PB_Path_Relative)
      Next i
      VectorSourceColor(RGBA(255, 0, 0, 255))
      StrokePath(1, #PB_Path_RoundCorner)
  
    StopVectorDrawing()
  EndIf


Danke - es geht los...
Tauche unter und vergrabe mich im Coder-room :)
Hauptsächlich Purebasic für OSX
Antworten