Drucken mit HBPrinter - Was geht wie warum ???

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Wer kennt, nutzt oder verabscheut HBPrinterX ?

Ich nutze HBPrinterX ausschließlich
6
15%
Ich nutze HBPrinterX gelegentlich bzw. zusätzlich
10
26%
HBPrinterX habe ich früher mal genutzt
1
3%
geprüft, aber für mich ungeeignet
1
3%
der Schrott gehört verboten
0
Keine Stimmen
In nutze grundsätzlich keine Fremdprodukte
0
Keine Stimmen
Noch nie gehört oder kein Interesse
1
3%
Ich nutze Reportgeneratoren oder ähnliches
10
26%
Ich nehme XbpPrinter() pur
10
26%
 
Insgesamt abgegebene Stimmen: 39

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1668
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern » Do, 07. Sep 2017 11:44

Servus Uwe,

bitte. Du könntest auch die Schrift um 1 oder 2 Punkte kleiner machen, bis es passt?
es grüßt euch

Werner

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14799
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh » Fr, 08. Sep 2017 11:04

Ok ich denke eine maximale Zeilenanzahl sollte leicht umsetzbar sein. Mal sehen.
Gruß
Hubert

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1668
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern » Mo, 23. Okt 2017 10:42

Servus Hubert,

eine kleine Erweiterung bei _HBPrinter:PrintMemo

Code: Alles auswählen

    lNeedBox := .f.
    
    if ! empty(cArt)
       cArt := alltrim(upper(cArt))
       if cArt = "B"         // BOX zeichnen
          lNeedBox := .t.
          cArt  := NIL        // für PrintText() sperren
       endif
    endif
Damit können Memos dann auch unterstrichen, durchgestrichen etc. gedruckt werden - siehe :PrintText, Parameter cArt.
es grüßt euch

Werner

Benutzeravatar
Schorsch
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: So, 21. Sep 2008 19:21
Wohnort: Sinsheim im Kraichgau

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Schorsch » Di, 30. Apr 2019 12:00

Hallo,
Ich würde gerne dem Druckdokument, wenn ich es über einen PDF-Drucker ausgebe einen eigenen Namen mitgeben (aktuell wird immer HB-Printer verwendet).
Ich habe dies mit startdoc() geschafft - aber wenn ich die Methoden Print/Prinform verwende kann ich startdoc() nicht verwenden, das dies wohl an einer Stelle implizit verwendet wird, die ich nicht beeinflussen kann. (ich habe nur die Variable cAktivSpoolJobName gefunden)

Bitte um Hinweis, wie ich dem Dokument einen Namen mitgeben kann.

Ich nutze die Version HBPrinterklasse 1.40 mit Alaska 1.9 als auch 2.0.

Herzlichen Dank
Gruß
Schorsch

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14799
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh » Mi, 01. Mai 2019 19:19

cAktivSpoolJobName ich weiß nicht wo, aber die Richtung stimmt ;-)

schau mal im Beispiel Test-BOLD.PRG da wird der Wert einfach vorgegeben und intern dann an StartDoc() weiter gereicht ...

Code: Alles auswählen

oHBPrinter := MyHBPrinter():New():create()
if oHBPrinter:IsPrinterError()             // Fehler verhindern, avoid errors
   --- Fehler
else
   oHBPrinter:addFont("14.Arial")
   oHBPrinter:addFont("12.Arial")
   oHBPrinter:addFont({"Arial",12,.t.,.f.})       // Passender Bold Font !

   oHBPrinter:SpoolJobName := "TEST-BOLD - Probeausdruck 2"
   ...
   oHBPrinter:PrintingDialog( .t. , .t. , xbeK_ALT_P )
endif
In HBPRINT.PRG steht was dazu ...

Code: Alles auswählen

   1.31   -  10.12.2008  (= 2008-12-10)
                ...
                ::spoolJobName ==> siehe / like 1.90.337
ab der 1.90.335 (SL1) kennt der XbpPrinter() die Instanzvariable, die genutzt wird, laut Hilfe ist die aber schreibgeschützt.
Ich habe damals (2008) geschrieben, siehe 1.90.337 - also bitte in der Hilfe nachlesen, vermutlich ein Tippfehler das mit der 337 ;-)
Intern nutze ich eine Methode, die den Vorgabetext setzt, wenn nichts vorgegeben wurde

ACCESS ASSIGN METHOD SpoolJobName // verhält sich im Prinzip wie eine iVar, man kann also einfach zuweisen ohne () ...

egal welche Xbase++ Version man nutzt, intern setze ich den Inhalt dieser iVar ein um StartDoc() richtig zu belegen:

Code: Alles auswählen

*-------------------------------------------------------------
METHOD _HBPrinter:StartDoc(cText,nSetPageNo)
    local cAltDrive, cAltDir, cResetDir
    local uReturn := SELF
    DEFAULT cText TO ::SpoolJobName
    DEFAULT nSetPageNo TO 1
    cAltDrive := curdrive()
    cAltDir   := curdir()
    ::nPageNo := nSetPageNo
    ::_IsOpenStartDoc := .t.
    ::_cPrinterShowText := cText
    if IsMethod(::oPS:device(),"StartDoc")
       uReturn := ::oPS:device():StartDoc(cText)
    endif
    if cAltDrive # curdrive() .or. cAltDir # curdir()
       cResetDir := cAltDrive +":\"+ cAltDir
       curdrive(cAltDrive)
       curdir(cResetDir)
    endif
return uReturn
Weiter unten gibt es noch eine Methode, die auch den Namen nachträglich setzen sollte, macht das wirklich Sinn ?

Code: Alles auswählen

*-------------------------------------------------------------
METHOD _HBPrinter:SpoolJobName(cSpoolJobName)
   static cAktivSpoolJobName := NIL
   do case
      case ! IsNil(cSpoolJobName)   // Setzen !
           cAktivSpoolJobName := cSpoolJobName
           if ::_oPS:device():isDerivedFrom( "XbpPrinter" ) .and. ;
              IsMemberVar( ::_oPS:device(), "SpoolJobName" )
              ::_oPS:device():SpoolJobName := cSpoolJobName
           endif
      case IsNil(cAktivSpoolJobName)
           cAktivSpoolJobName := "HB-Printer"
           if ::_oPS:device():isDerivedFrom( "XbpPrinter" ) .and. ;
              IsMemberVar( ::_oPS:device(), "SpoolJobName" )
              ::_oPS:device():SpoolJobName := cSpoolJobName // Laut Hilfe eigentlich readonly ...
           endif
      otherwise
           if ::_oPS:device():isDerivedFrom( "XbpPrinter" ) .and. ;
              IsMemberVar( ::_oPS:device(), "SpoolJobName" )
              cSpoolJobName := ::_oPS:device():SpoolJobName
           endif
   endcase
return cAktivSpoolJobName
die Variable cAktivSpoolJobName ist mit STATIC auf jeden Fall intern ;-)
Gruß
Hubert

Benutzeravatar
Schorsch
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: So, 21. Sep 2008 19:21
Wohnort: Sinsheim im Kraichgau

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Schorsch » Mi, 01. Mai 2019 23:41

Hallo Hubert,

oHBPrinter:SpoolJobName := "TEST-BOLD - Probeausdruck 2"

Das war der entscheidende Tipp - das hat gut funktioniert - vielen Dank
Gruß
Schorsch

Benutzeravatar
Schorsch
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: So, 21. Sep 2008 19:21
Wohnort: Sinsheim im Kraichgau

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Schorsch » Fr, 21. Jun 2019 12:42

Hallo Hubert,

ich habe meine Formulare und komplexe Dokumente bisher mit Deiner HBPrinter Klasse gemacht und stehe jetzt vor dem Problem, ein Dokument als PDF-Datei zu erzeugen, das gespeichert(an einem bestimmten Ort) oder/und verschickt werden soll. Die Möglichkeit auf einen PDF-Drucker zu drucken ist zu umständlich und erfordert immer manuelle Eingriffe.
Ich habe dafür jetzt Deine HBPrintPDF Klasse genommen und Deine mitgelieferten Testprogramme zum Laufen bekommen.
Jetzt meine Frage:
Muss ich meine Programme, die diese Dokumente erzeugen komplett mit HBPrintPDF neu schreiben oder gibt es eine einfache Möglichkeit der Konvertierung ?
Was ich vor allem vermisse bei HBPrintPDF mit den Methoden Print und PrinForm zu arbeiten, denn diese Methoden(konstante/variable Seiteninhalte trennen) finde ich sehr praktisch.
Für eine Erläuterung wie ich einfach von HBPrinter zu HBPrintPDF komme wäre sehr hilfreich.
Danke
Gruß
Schorsch

flanelli
UDF-Programmierer
UDF-Programmierer
Beiträge: 64
Registriert: Di, 11. Mai 2010 16:27

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von flanelli » Fr, 21. Jun 2019 13:21

Hallo Schorsch,
mir mir ist schon klar, dass du deine Anfrage an Hubert gerichtet hast aber ich hoffe, du siehst es
nicht als negativ und einmischend, wenn ich dir ganz kurz meine Sicht der DInge bzgl. PDF-Drucker darlege.

Ich verwende auch schon seit Langem die geniale Druckerklasse von Hubert in entsprechend
angepasster Form auf die eigenen Bedürfnisse ( alles klappt wunderbar )
*An diese Stelle nochmals Danke an Hubert, Du hast mir vor etlichen Jahren durch deine Klasse
den Weg geebnet, meine komplexen und ausgeklügelten Druckerroutinen ( die auch zur Laufzeit
jederzeit ohne Sourceänderung adaptierbar sind ) recht einfach von Clipper auf Xbase-GUI umzusetzen.

Warum allerdings der Ausdruck über einen PDF-Drucker und auch die individuelle Weiterverarbeitung
der PDF-Datei ( sei es an einem fixen oder variablen Speicherort oder als Anhang zum Email )
"umständlich" sein soll, kann ich so mal nicht ganz nachvollziehen.

Meine Apps erstellen Dokumente via PDF-CREATOR ( z.B. sowohl alle Angebote aus den DBF-Daten als
auch Deck-oder Schlussblätter die z.B. in Word erstellt sind etc. ) ohne jeglichen weiteren
manuellen EIngriff bzgl. automatischen oder variablen Speicherort, Anhängen an ein Email,
Weiterleiten an einen Zentralserver in ein CRM, etc. etc.

All das lässt sich doch recht einfach in der Druckroutine festlegen und mehr als die Installation
des PDF-Creator ist dann nicht erforderlich. Die diversen Einstellungen für den PDF-Creator
lassen sich via ActiveX problemlos von der Xbase-App aus treffen bzw. einfach automatisch
beim Programmstart überprüfen und gegebenfalls auch automatisch adaptieren.
Somit bleibt nichts mehr übrig was man "manuell" machen müßte.

Ich mlöchte damit keineswegs irgendetwas gegen alle anderen Lösungen, egal ob andere PDF-Drucker oder diverse
Xbase-Klassen, aussprechen aber gerade der Einsatz eines PDF-Druckers macht das ganze Prozedere
recht einfach und vor allem wenn es auch mal um komplexere Ausdrucke geht.

Bin aber auch immer gerne für alle anderen Varianten offen, wenn diese tatsächlich einfacher sein sollten.
Ahoile aus dem Süden

Benutzeravatar
Schorsch
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: So, 21. Sep 2008 19:21
Wohnort: Sinsheim im Kraichgau

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Schorsch » Fr, 21. Jun 2019 17:19

Hallo flanelli,
ich habe auch in anderen Beiträgen von PDF CREATOR gelesen- mich aber zugegebenermaßen noch nicht damit befasst, da ich die von Dir beschriebene Flexibilität in den Beiträgen nicht so erkannt habe. Ich werde dies nachholen. Was mich halt grundsätzlich dabei stört, dass auf jedem Kunden-PC dieser installiert sein muss, damit ich ihn dann auch verwenden kann (zumindest habe ich dies so verstanden).
Mit der HBPrintPDF Klasse von Huber geht es ja auch nicht ohne zusätzliche SW + Lizenz - bei dem habe ich aber den Eindruck dies besser selbst steuern zu können.
Erstmal danke für den Tipp - ich probiere es auf jeden Fall aus.
Gruß
Gruß
Schorsch

flanelli
UDF-Programmierer
UDF-Programmierer
Beiträge: 64
Registriert: Di, 11. Mai 2010 16:27

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von flanelli » Fr, 21. Jun 2019 19:44

Hallo Schorsch,
bzgl. einer erforderlichen Installation auf jedem Arbeitsplatz ist das ja letztendlich nichts anderes als die
Installation eines neuen Druckers und zudem ist der PDF-Creator auch kostenlos.
Meine Kunden ( darunter auch ein Großkonzern mit recht rigiden Vorgaben an diverse Installationen )
haben seit vielen Jahren damit keinerlei Probleme, lediglich bei einem gravierenden Sprung des OS
( z.B. von XP auf Win7, oder Win10 ) war es dann ratsam eine etwas aktuellere Version zu installieren
aber nicht immer ist die aktuellste auch die unbedingt erforderliche )

Ich möchte da keine Werbung für den PDF-Creator machen, ich hab nur etliche andere PDF-Drucker
ausprobiert und eben diesen als optimal, außerordentlich stabil und alle Bedürfnisse abdeckend dann
ausgewählt.

Wünsche dir jedenfalls alle Gute beim Testen ...
Ahoile aus dem Süden

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14799
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh » Mo, 24. Jun 2019 10:19

Hallo,

zunächst wähle ich den PDF Druckertreiber (seit Win 10) ist ja sogar einer installiert, wenn der Anwender flexibel zwischen den Druckausgaben wählen soll.
HBPrintPDF mit der QuickPDF ist immer dann zwingend, wenn die PDFs im Hintergrund erzeugt werden sollen, z.B. eine CGI EXE auf einem Webserver, oder andere Serverdienste ...

alles dazwischen kann man so oder so erledigen.
Eine "einfache Konvertierung" habe ich nie benötigt und daher auch nicht erstellt, einige Methoden habe ich HBPrintPDF spendiert,
um Druckausgaben aus Clipper (SAY) bzw. HBPrinter zu erleichtern, aber Print und PrintKopf gehören nicht dazu.
Diese beiden Methoden sind zwingend nötig, wenn man aus der Druckerauswahl/Druckvorschau heraus mit HBPrinter drucken will, da dann dieses Fenster alles steuert.
Für HBPrintPDF war so ein Druckerfenster (mit Vorschau) nie vorgesehen, daher habe ich das auch nicht gemacht.
Gruß
Hubert

Benutzeravatar
Schorsch
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: So, 21. Sep 2008 19:21
Wohnort: Sinsheim im Kraichgau

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Schorsch » Di, 25. Jun 2019 11:17

Hallo Hubert,
danke für die Klarstellung - ich muss also das Programm für das besagte Dokument mit PrintPDF neu erstellen.
Für mich ist die Hintergrunderstellung des PDF wichtig, da ich nicht einen PDF-Drucker(-treiber) auswählen muss, der vielleicht nicht/falsch installiert/konfiguriert ist.
An den Komfort von HBPrinter gewöhnt man sich eben schnell, vor allem wenn man mit dem Umgang von Classen nicht so firm ist. Nochmals Danke für die Schaffung dieser Möglichkeiten.
Gruß
Schorsch

Antworten