Seite 1 von 1

PDF erstellen

Verfasst: 12.01.2018 08:18
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

Re: PDF erstllen

Verfasst: 12.01.2018 08:24
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

Re: PDF erstllen

Verfasst: 12.01.2018 11:03
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.

Re: PDF erstllen

Verfasst: 12.01.2018 11:39
von Andesdaf
allgemein kann PB unter Mac OS inzwischen auch nativ PDFs rendern. Schau mal bei
PdfVectorOutput() bzw. VectorDrawing.

Re: PDF erstllen

Verfasst: 12.01.2018 20:28
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.

Re: PDF erstellen

Verfasst: 12.01.2018 20:56
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 :)