Edgars PDF-Klasse - Funktionsaufruf
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Edgars PDF-Klasse - Funktionsaufruf
Hallo,
ich arbeite mit Edgars PDF-Klasse. Der hat natürlich nicht alle Funktionen der QuickPDF-Bibliothek implementiert, das ist einfach zu umfangreich. Was mir da gerade speziell fehlt ist SetInformation. Hat jemand von Euch das mal eingebaut? Bei mir klappt das einfach nicht. Gibt zwar keine Fehlermeldung, aber es passiert auch nichts.
Jan
ich arbeite mit Edgars PDF-Klasse. Der hat natürlich nicht alle Funktionen der QuickPDF-Bibliothek implementiert, das ist einfach zu umfangreich. Was mir da gerade speziell fehlt ist SetInformation. Hat jemand von Euch das mal eingebaut? Bei mir klappt das einfach nicht. Gibt zwar keine Fehlermeldung, aber es passiert auch nichts.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Edgars PDF-Klasse - Funktionsaufruf
Hallo Jan
Ja. MIt der QuickPDF
Damit können Eigenschaften des PDF Files geändert werden. Der Rückgabewert ist 0=.f. oder 1=.t.
Die Funktioen benötigt 3 Parameter: (InstanceID, Key, Neuer Wert als String)
Key :
0 = PDF Version
1 = Author
2 = Title
3 = Subject
4 = Keywords
5 = Creator
6 = Producer
7 = CreationDate
8 = ModDate
Ja. MIt der QuickPDF
Damit können Eigenschaften des PDF Files geändert werden. Der Rückgabewert ist 0=.f. oder 1=.t.
Die Funktioen benötigt 3 Parameter: (InstanceID, Key, Neuer Wert als String)
Key :
0 = PDF Version
1 = Author
2 = Title
3 = Subject
4 = Keywords
5 = Creator
6 = Producer
7 = CreationDate
8 = ModDate
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Hallo Carlo,
all das weiß ich auch. Die Frage war: Hat jemand diesen Aufruf mit Edgars Klasse schon mal erfolgreich umgesetzt.
Jan
all das weiß ich auch. Die Frage war: Hat jemand diesen Aufruf mit Edgars Klasse schon mal erfolgreich umgesetzt.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Edgars PDF-Klasse - Funktionsaufruf
Ja. Auch mit Edgars Klasse funktionerte und funktionert das. Soeben nochmals getestet.
Hier die entsprechende Zeile: ( Setzt den Author)
Code: Alles auswählen
oDoc := xbppdf():New()
...
...
oDoc:qCall("SetInformation", oDoc:oPdf, 1, cSzAnsi2Wide('Auto Yxcdkk') )
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Hallo Carlo,
interessant. Wenn ich das so mache moniert der als Laufzeitfehler das qCall unbekannt sei
Jan
interessant. Wenn ich das so mache moniert der als Laufzeitfehler das qCall unbekannt sei
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Hallo Carlo,
OK, ich seh den Unterschied. Du arbeitest mit xpppdf, ich mit XbpGraPdf. Das sind bei Edgar zwei unterschiedliche Klassen. Die Unterschiedlich viel können. Und offenbar intern so unterschiedlich arbeiten, daß dieser Aufruf bei Dir klappt und bei mir nicht.
Jan
OK, ich seh den Unterschied. Du arbeitest mit xpppdf, ich mit XbpGraPdf. Das sind bei Edgar zwei unterschiedliche Klassen. Die Unterschiedlich viel können. Und offenbar intern so unterschiedlich arbeiten, daß dieser Aufruf bei Dir klappt und bei mir nicht.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Jan,
der Aufruf sollte so sein
pObj:qCall("EncryptA",pObj:oPdf,cOwnerPW, cUserPW, 2, 12845065)
Die Aufrufe lauten z.b.
Musste aber auf obige Syntax anpassen
// PDF Title
pObj:SetInformation(2 , rTrim(cPdfTitle))
// PDF Subject
pObj:SetInformation(3 , rTrim(cPdfSubject))
// PDF Keyword(s)
pObj:SetInformation(4 , "HKABR-Win "+ pObj:LibraryVersion())
// PDF Creator
pObj:SetInformation(5 , "HKABR-Win "+hkaversion())
// PDF Producer
pObj:SetInformation(6 , cCompany)
IF nPDFAModus > 0
pObj:SetPDFAMode(nPDFAModus)
ENDIF
der Aufruf sollte so sein
pObj:qCall("EncryptA",pObj:oPdf,cOwnerPW, cUserPW, 2, 12845065)
Die Aufrufe lauten z.b.
Musste aber auf obige Syntax anpassen
// PDF Title
pObj:SetInformation(2 , rTrim(cPdfTitle))
// PDF Subject
pObj:SetInformation(3 , rTrim(cPdfSubject))
// PDF Keyword(s)
pObj:SetInformation(4 , "HKABR-Win "+ pObj:LibraryVersion())
// PDF Creator
pObj:SetInformation(5 , "HKABR-Win "+hkaversion())
// PDF Producer
pObj:SetInformation(6 , cCompany)
IF nPDFAModus > 0
pObj:SetPDFAMode(nPDFAModus)
ENDIF
Gruß
Klaus
Klaus
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Klaus,
wie ich oben schon anmerkte: Das gilt für Edgars xpppdf. Nicht aber für seine xbpgradf.
Jan
wie ich oben schon anmerkte: Das gilt für Edgars xpppdf. Nicht aber für seine xbpgradf.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Edgars PDF Klasse ist die XppPDF und nutzt eine alte Version 7.xx der QuickPDF (zumindest als ich mich damit beschäftigt habe), diese nutzt meist ANSI Strings.Jan hat geschrieben: ↑Mi, 27. Jan 2021 8:22 ich arbeite mit Edgars PDF-Klasse. Der hat natürlich nicht alle Funktionen der QuickPDF-Bibliothek implementiert, das ist einfach zu umfangreich. Was mir da gerade speziell fehlt ist SetInformation. Hat jemand von Euch das mal eingebaut? Bei mir klappt das einfach nicht. Gibt zwar keine Fehlermeldung, aber es passiert auch nichts.
Von einer XbpGraPdf() hab ich noch nix gehört, ob die auch auf die alte QuickPDF zugreift, weiß ich nicht, aber alles was die 7.11 Version kann, kann man auch aufrufen.
Wenn beim Aufruf kein Fehler erscheint, muss die Funktion zumindest vorhanden sein, das würde auf einen Fehler der Parameter hindeuten.
Dies ist die Methode aus meiner Klasse, welche die Funktion aufruft:
Code: Alles auswählen
METHOD HBPrintPDF:SetInformation(nKey, NewValue) // *HB* return .t. / .f.
NewValue := ::ForceUTF8(NewValue)
return 0 # FpQCall( {::_hdll_,"QuickPDFSetInformation"} ,"__sl__sl__sl__pt",::_id_,nKey, NewValue)
In meiner Klasse kann man den Aufruf der Funktion nachsehen, bei mir funktioniert es.
Aber wie so oft ist kein Quellcode erkennbar, bei dem man was prüfen könnte
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Hubert,
XbpGraPdf ist eine erweiterte xpppdf. Hat z. B. eine Vorschau eingebaut.
Edgar ist bei seinen Klassen inzwischen bei der 6.1 angekommen mit QuickPf 18.1.
Jan
XbpGraPdf ist eine erweiterte xpppdf. Hat z. B. eine Vorschau eingebaut.
Edgar ist bei seinen Klassen inzwischen bei der 6.1 angekommen mit QuickPf 18.1.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Jan,
ich benutze nur xpppdf.
Was benutzt Du ? Finde in Deinen Beiträgen nicht, dass Du XbpGraPdf benutzt .
Das einfachste wäre Du fragst Edgar.
ich benutze nur xpppdf.
Was benutzt Du ? Finde in Deinen Beiträgen nicht, dass Du XbpGraPdf benutzt .
Das einfachste wäre Du fragst Edgar.
Gruß
Klaus
Klaus
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Klaus,
Beitrag 6 in diesem Thread.
Edgar hatte ich vergangenes Jahr schon gefragt. Beide Beispiele die er mir gegeben hat, funktionieren nicht. Deswege hatte ich die Hoffnung, das hier jemand das hinbekommen hätte.
Jan
Beitrag 6 in diesem Thread.
Edgar hatte ich vergangenes Jahr schon gefragt. Beide Beispiele die er mir gegeben hat, funktionieren nicht. Deswege hatte ich die Hoffnung, das hier jemand das hinbekommen hätte.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Basierend auf
oGrapdf := xbpGraPDF():New()
oGraPDF:Create()
oGraPDF:qCall("EncryptA",oGraPDF:oGraPDF,cOwnerPW, cUserPW, 2, 12845065)
Tip:
Falls noch nicht passiert
entweder die Doku zu QuickPDF oder HBPRINTPDF schauen was es alles für Funktionen gibt.
oGrapdf := xbpGraPDF():New()
oGraPDF:Create()
oGraPDF:qCall("EncryptA",oGraPDF:oGraPDF,cOwnerPW, cUserPW, 2, 12845065)
Tip:
Falls noch nicht passiert
entweder die Doku zu QuickPDF oder HBPRINTPDF schauen was es alles für Funktionen gibt.
Gruß
Klaus
Klaus
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Klaus,
den Funktionsaufruf kenne ich ja schon. Der tut nur nichts.
Und die Funktionsübersicht habe ich natürlich auch.
Jan
den Funktionsaufruf kenne ich ja schon. Der tut nur nichts.
Und die Funktionsübersicht habe ich natürlich auch.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Edgars PDF-Klasse - Funktionsaufruf
Jan
die XbpGraPDF Klasse funktioniert anders. Nicht auf Basis eines PDF-Files es wird anderes gerendert deshalb laufen dir die gewünschten Funktionen auch ins leere. Es gibt verschiedene möglichkeiten die Infos zu setzten. Am einfachsten ist es das PDF durch die GraPDF Klasse zu erstellen und danach mit der XbpPDF Klasse zu laden und die gewünschten Angaben zu setzten und zu speichern.
die XbpGraPDF Klasse funktioniert anders. Nicht auf Basis eines PDF-Files es wird anderes gerendert deshalb laufen dir die gewünschten Funktionen auch ins leere. Es gibt verschiedene möglichkeiten die Infos zu setzten. Am einfachsten ist es das PDF durch die GraPDF Klasse zu erstellen und danach mit der XbpPDF Klasse zu laden und die gewünschten Angaben zu setzten und zu speichern.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Es hat sich herausgestellt, das in dem letzten XbpGraPdf.dll-Release von Edgar zwei Fehler waren. Einer betraf die die Erzeugung der PDF selber. Der andere die Ausführung von Funktionen, die Edgar nicht direkt implementiert hat, die aber manuell aufrufbar sind (hier war das halt SetInformation).
Die aktuelle version 6.1 ist freigegeben und kann herunter geladen werden.
Der Hauptunterschied zwischen der 6.0 und der 6.1 ist, das in der 6.0 die Quickpdf 17 mitgeliefert wurde, in der 6.1 dagegen die 6.1. Der für uns größte Unterschied für uns zwischen den beiden QuickPDF-Versionen liegt darin, das die 17 nur ZUGFeRD 1 unterstützt hat, die 18 dagegen auch die 2.0 und die 2.1.
Jan
Die aktuelle version 6.1 ist freigegeben und kann herunter geladen werden.
Der Hauptunterschied zwischen der 6.0 und der 6.1 ist, das in der 6.0 die Quickpdf 17 mitgeliefert wurde, in der 6.1 dagegen die 6.1. Der für uns größte Unterschied für uns zwischen den beiden QuickPDF-Versionen liegt darin, das die 17 nur ZUGFeRD 1 unterstützt hat, die 18 dagegen auch die 2.0 und die 2.1.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Edgars PDF-Klasse - Funktionsaufruf
Nachtrag: In XbpGraPdf sieht der Aufruf einer von Edgar nicht direkt implementierten Funktion so aus (Achtung: Wir reden hier von XbpGraPdf, bei XppPdf sieht das anders aus! Da geht das wie hier mehrfach beschrieben per oGraPdf:qCall("SetInformation", oGraPdf:oGraPdf, 1, cSzAnsi2Wide("Der Autor"))):
Das bedeutet aber, das man OT4XB benötigt (das Edgars Klasse ohnehin benötigt, er versucht aber gerade das so weit möglich zu eliminieren).
Wenn man mit Xbase++ 2.0 arbeitet kann man das mit Bordmitteln machen:
Jan
Code: Alles auswählen
oGraPdf:pdf("qCall", "SetInformation", "PDF", 1, cSzAnsi2Wide("Der Autor"))
Wenn man mit Xbase++ 2.0 arbeitet kann man das mit Bordmitteln machen:
Code: Alles auswählen
oGraPdf:pdf("qCall", "SetInformation", "PDF", 1, Str2Unicode("Der Autor"))
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Edgars PDF-Klasse - Funktionsaufruf
Danke für das Update.
Ich habe gerade einen Auftrag ein Programm umzubauen. Auch da muss auch ot4xb raus. Aber auch Edgars Klasse. Sie soll durch List&Label ersetzt werden. Der Auftraggeber ist der Meinung: "Es kann ja heute nicht mehr sein dass ich für jede kleine Anpassung an einem Ausdruck einen Programmierer brauche ....." (List&Label und die gestalterischen Möglichkeiten kennt er aus seiner Buchhaltung)
Ich habe gerade einen Auftrag ein Programm umzubauen. Auch da muss auch ot4xb raus. Aber auch Edgars Klasse. Sie soll durch List&Label ersetzt werden. Der Auftraggeber ist der Meinung: "Es kann ja heute nicht mehr sein dass ich für jede kleine Anpassung an einem Ausdruck einen Programmierer brauche ....." (List&Label und die gestalterischen Möglichkeiten kennt er aus seiner Buchhaltung)
Valar Morghulis
Gruss Carlo
Gruss Carlo