Drucken mit HBPrintPDF druckt keine Grafik

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

Moderator: Moderatoren

Antworten
ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » So, 05. Feb 2017 22:14

Hi

ich verwende seit einiger Zeit einige Funktionen aus Huberts Klasse HPPrintPDF (Version 10) um vorhandene PDF's auszudrucken.

Es sind dies die folgenden Zeilen:

Code: Alles auswählen

 oObjPDF := hbPrintPDF():new():create()
        if oObjPDF:IsOK
            oObjPDF:loadFromFile( fname )
            if cDruckername = NIL
                cDruckername :=  oObjPDF:GetDefaultPrinterName()
            endif
            if nTray != NIL
               if nTray > 0
                   cDruckername := oObjPDF:NewCustomPrinter( cDruckername )
                   if !oObjPDF:SetupCustomPrinter( cDruckername, 9 , nTray )
                      msgbox("Druckschachtauswahl: "+alltrim(str(nTray))+ " für PDF Ausdruck nicht gültig.")
                   endif
               endif
            endif
            oObjPDF:printDocument( cDruckername ,1 , oObjPDF:PageCount(), oObjPDF:PrintOptions(1,1,"PDF-Out") )
            oObjPDF:RemoveDocument( oObjPDF:GetDocumentID() )
        endif
        oObjPDF:destroy()
Das hat eigentlich immer funktioniert! Neuerdings werden allerdings die im PDF enthaltenen Bilder oft nicht mehr gedruckt. Das heisst nur der Text wird gedruckt.

Der Ausdruck z.B. mit Adobe-Reader ist aber immer komplett mit Bilder.

Hat jemand eine Ahnung wo hier das Problem liegen könnte?

Cu Carlo
Zuletzt geändert von ramses am Mo, 27. Mär 2017 10:34, insgesamt 2-mal geändert.

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

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von brandelh » Mo, 06. Feb 2017 8:32

Ich habe mal den Titel angepasst, damit keine Verwechslungen mit HBPrintX aufkommen.

Das habe ich noch nie beobachtet, ich habe aber nur wenig Grafiken in der PDF.
Wenn eine Grafik als "Hintergrundbild" eingebaut wurde kann man im Acrobat Reader ja einstellen ob man den mitdrucken will oder nicht.
Eventuell gibt es hierzu eine Einstellung, ABER wenn es normal ging und nur einige nicht, dann vermute ich eher ein Timing oder Resourcen Problem.
Gruß
Hubert

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11350
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von AUGE_OHR » Mo, 06. Feb 2017 9:18

hi,
da ich Huberts Klasse HPPrintPDF nicht benutzte kann ich nichts direktes dazu sagen aber zwischen den beiden Zeilen würde ich mal ein SLEEP() setzen.
ramses hat geschrieben:

Code: Alles auswählen

            oObjPDF:printDocument( cDruckername ,1 , oObjPDF:PageCount(), oObjPDF:PrintOptions(1,1,"PDF-Out") )
// hier ein SLEEP(100) ?
            oObjPDF:RemoveDocument( oObjPDF:GetDocumentID() )
DLL / ActiveX Calls laufen ja nicht im Xbase++ Thread d.h. wenn der Call abgeschickt wird heisst es noch nicht das er fertig ist. [-X
im Grunde müsste es doch einen Rückgabe Wert von der Method geben die signalisiert das alles OK ist bevor man was "Remove" :-k
gruss by OHR
Jimmy

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2068
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von Koverhage » Mo, 06. Feb 2017 10:53

Ich habe hier auch keine Probleme damit, z.B. Grafiken als Briefbogen, etc.
Gruß
Klaus

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Mo, 06. Feb 2017 12:07

Hi

ein sleep(100) wie Jimmy vorschlug bringt keine Änderung.

Die Grafik (Konstruktionsplan) nimmt 3/4 der Seite ein und ist NICHT mit Schriften u.a. überlagert.

Das merkwürdigste ist: Ist das PDF 2-Seitig, die erste Seite mit Text als 2 Seite die mit der Grafik dann funktioniert der Ausdruck meistens...

Cu Carlo

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

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von brandelh » Mo, 06. Feb 2017 14:15

zunächst kann ich nur sagen, dass dein Beispiel meinen Vorlagen entspricht.

Wie groß ist die Bilddatei bzw. die PDF ?

Aber eventuell solltest du da eine Abfrage einbauen um zu sehen ob QuickPDF einen Fehler meldet:

Code: Alles auswählen

nPageEnd := oObjPDF:PageCount() // sollte immer gut gehen
nOptions := oObjPDF:PrintOptions(1,1,"PDF-Out") // sollte immer gut gehen
if oObjPDF:printDocument( cDruckername ,1 , nPageEnd, nOptions )
   sleep(100)
   oObjPDF:RemoveDocument( oObjPDF:GetDocumentID() ) // eigentlich unnötig, wenn man unten eh destroy aufruft
else
   msgbox("Error")
endif
oObjPDF:destroy()
oder einfach mal RemoveDocument() weglassen ...

Code: Alles auswählen

nPageEnd := oObjPDF:PageCount() // sollte immer gut gehen
nOptions := oObjPDF:PrintOptions(1,1,"PDF-Out") // sollte immer gut gehen
if ! oObjPDF:printDocument( cDruckername ,1 , nPageEnd, nOptions )
   msgbox("Error")
endif
oObjPDF:destroy()
Wenn du möchtest kannst du mir eine solche PDF mal per PN senden und ich sehe es mir mit der neueren Version an.
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Mo, 06. Feb 2017 15:05

Hallo Hubert

die Grafik in der PDF ist 3389*2078 Px gross im JPG Format das fertige PDF im Querformat ist z.b. 1'102 KB

Keine der Funktionen meldet einen Fehler.

bei weiteren Versuchen ist mir aufgefallen dass bei der Ausführung der Zeile:

Code: Alles auswählen

oObjPDF:printDocument( cDruckername ,1 , oObjPDF:PageCount(), oObjPDF:PrintOptions(1,1,"PDF-Out") )
den Speicherverbrauch der App. von 40MB auf 255MB ansteigt und auch danach auch nach dem Destroy() nicht mehr unter 200MB fällt.

Aus Verzweiflung, nach sehr sehr viel Zeit der Problemsuche, holte ich die Version 7.26 der Quick PDF und den entsprechenden Funktionen deiner Klasse aud dem Archiv.
Siehe da, der Ausdruck funktioniert einwandfrei!! Der Speicherverbrauch steigt zwar beim Ausdruck auch an, fällt nach dem Destroy() wieder auf den normalen Wert.

Leider ist die Druckqualität der Grafik unter QuickPDF 7.26 nicht besonders gut, Diagonale Linien wirken abgehackt, da es sich dabei um Konstruktionspläne handelt ist dies nicht aktzeptabel und leider für die Anwendung ungenügend. Nach diesem Versuch gehe ich jetzt davon aus dass es sich um ein Problem in der QuickPDFDLL handeln muss! ????

Ich mache mich nun auf die Suche nach einer alternative zum Ausdruck der PDF's.

Cu Carlo

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

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von brandelh » Mo, 06. Feb 2017 15:16

wie gesagt, kann ich mal mit der neueren dll testen, wenn du mir so eine große PDF per download zur Verfügung stellen kannst.

Möglich dass die 7.x die Auflösung beschränkt hat.

wenn es nur ums Drucken geht kann man aber auch den Acrobat Reader starten mit Druck - irgendwo war das hier beschrieben.
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Mo, 06. Feb 2017 15:34

Hallo Hubert

die neuere QuickDLL kommt zur Zeit nicht in Frage. Die 10er ist über das Kosten/Nutzungsverhältnis noch nicht abgeschrieben.
Bezw. ist der Nutzen zu kein, da wir alle Ausdruck auf L&L umgestellt haben wird die QuickPDF nur noch zum Druck vorhandener PDF's, Merge und Aufteilen der Seiten verwendet. (Mehrseitiges PDF in einzelne PDF pro Seite Aufteilen und umgekehrt)

Der Aufruf des Acrobat-Reader aus dem Programm heraus ist mir von den Richtlinien her verboten.

Ich komme aber evtl. zur gegebenen Zeit gerne auf dein Druck-Versuch-Angebot zurück.

Cu Carlo

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Mo, 06. Feb 2017 16:41

Hallo Hubert

auch mit Version 13 funktioniert der Ausdruck nicht.

Gruss Carlo

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

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von brandelh » Di, 07. Feb 2017 11:03

Wenn du die Möglichkeit hast, das mal mit einem anderen Programm zu testen (Delphi) könnte man ausschließen dass es an Xbase++ liegt.
Ich reiche die Parameter ja einfach an QuickPDF durch.
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Di, 07. Feb 2017 15:29

Hallo Hubert

es liegt mit Sicherheit nicht an Xbase++ sondern an der Quick-PDF-DLL.

Meine aktuellen Erkenntnisse zum meinem Problem sehen momentan so aus:

Die "Problem" PDF-Files sind alle in A4 QUER.

Wird mit readFromFile() eine Quer-PDF einglesen kann die DLL nicht richtig mit dem Querformat umgehen, egal ob oder wie und wo du Papersize setzt.
Beim DruckBefehl versucht die DLL den Inhalt auf Hochformat umzurechnen (zu drehen) je nachdem wie die PrintOption "AutoRotate" gesetzt ist.
(AutoRotate auf 0 wird das QuerPDF auf Hochformat gedruckt und rechter Teil abgeschnitten)
Bei diesem Umrechnen(Rotate) liegen scheinbar die Probleme in der DLL, erkennbar frisst Sie Speicher, und druckt nach längerer Zeit meist nur die Textanteile des PDF's.
Scheinbar kann Sie dem Drucker nicht "Druck im Querformat" Befehlen und ohne umrechnen Drucken.

Ein PDF in Hochformat erstellt, mit den selben Texten und Grafik wird Problemlos und sehr schnell gedruckt.

Mir scheint dass dies das Problem ist. Untermauert wird dies noch damit dass die Ver. 7.26 korrekt funktioniert, einfach mit mangelhafter Auflösung ...........

Gruss Carlo

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » So, 12. Feb 2017 17:10

Mangels Alternativen haben wir uns nun zu folgendem Workaround entschieden:

Wir erstellen nun alle PDF's im Hochformat. Diese lassen sich problemlos ohne Codeanpassungen an der Druck-Funktion drucken.

Dazu benutzen wir je eine L&L Vorlage Quer für Bildschirmanzeige via L&L und eine im Hochformat für PDF Erstellung, die Grafik lässt sich mit der Free_Image.dll sehr einfach und schnell drehen.

Dies ist zwar nicht die Optimale Lösung. Da aber die PDF's nur zur Archivierung und e-Mail Versand zum Ausdruck beim Kunden verwendet wird und nur selten ein PDF dann auch auf dem Bildschirm angezeigt wird kann der Benutzer diese auch manuell drehen.

Nicht die beste Lösung aber Sie funktioniert ........

Cu Carlo

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Fr, 10. Mär 2017 13:01

Alles zurück auf Anfang.

Mein Workaround ist unbrauchbar. Viele PDF's lassen sich mit obiger Funktion neuerdings nicht mehr Drucken. Jetzt auch solche von Kunden mit unterschiedlichen Programmen erstellte. Dabei wird gar nichts gedruckt bezw. nur leere Seite(n).

Cu Carlo

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik[ERLEDIGT]

Beitrag von ramses » Mi, 15. Mär 2017 17:22

Hallo

Glücklicherweise haben wir Probleme mit sehr viel Aufwand erkannt und mit einigen Zeilen Programmcode erfolgreich beseitigt.

Gruss Carlo

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

Re: Drucken mit HBPrintPDF druckt keine Grafik[ERLEDIGT]

Beitrag von brandelh » Do, 16. Mär 2017 9:44

Und woran lag es ?

Sollte ich einen Fehler in der Klasse haben würde mich das natürlich interessieren.
Falls QuickPDF ein Vorgehen "nicht leiden kann" wäre ein Hinweis darauf auch sinnvoll.
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik[ERLEDIGT]

Beitrag von ramses » Do, 16. Mär 2017 11:03

Hallo Hubert

nein, einen direkten Fehler in deiner Klasse hast du nicht. Das ::loadFromFile() kann einfach nicht ohne weitere Schritte verwendet werden. Solange du damit nur PDF File lädst die im A4 Hochformat und bei mehrseitigen PDF in gleicher Seitengrösse erstellt sind treten keine Probleme auf. Die Probleme treten auf sobald du PDF laden tust die Seiten im Querformat und/oder bei mehrseitige in unterschiedlichen Seitengrössen enthalten.


Gruss Carlo

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Mo, 27. Mär 2017 10:41

Hallo

das Problem ist erneut zurück.

Wir haben neue PDF's gefunden die sich nicht Audrucken lassen. Es sind dies jetzt einseitige mit einem HP-MFC gescannte Seiten.

Anzeigen und Drucken in Adobe --> einwandfrei.

Drucken mit HBPrintPDF --> leere Seite

Langsam beginnen mich die PDF's zu nerven ...... :angry4:


Gruss Carlo

Benutzeravatar
HaPe
Foren-Moderator
Foren-Moderator
Beiträge: 521
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von HaPe » Mo, 27. Mär 2017 11:22

Hallo Carlo !
Anzeigen und Drucken in Adobe --> einwandfrei.
Drucken mit HBPrintPDF --> leere Seite
Langsam beginnen mich die PDF's zu nerven ...... :angry4:
Da kannst doch auch mittels Adobe automatisiert ausdrucken ohne dass ein Fenster davon aufgeht 8)
Ich habe das in meinen Programmen drin:

Code: Alles auswählen

*----------------------------------------------------------------------------------------------------------------------------
* Beschreibung: Druckt ein Dokument mit der Standard-Anwendung.
* Autor.......: Hans-Peter Grözinger
* Datum.......: 24.08.2006
*----------------------------------------------------------------------------------------------------------------------------
* Bemerkungen.:
* 14.12.12 HPG: Werte für lnShowCmd:
*				SW_HIDE				0   Hides the window and activates another window.
*				SW_SHOWNORMAL		1   Activates and displays a window. If the window is minimized or maximized, Windows
*										restores it to its original size and position. An application should specify this
*										flag when displaying the window for the first time.
*				Weiteres siehe declaredll.prg unter ShellExecute.
*----------------------------------------------------------------------------------------------------------------------------
* Änderungen..:
*----------------------------------------------------------------------------------------------------------------------------
* BugFixes....:
*----------------------------------------------------------------------------------------------------------------------------

LPARAMETERS tcDocument AS STRING

LOCAL lcOperation AS STRING, lcFileName AS STRING, lcParameter AS STRING, lcWorkDir AS STRING
LOCAL lnShowCmd AS INTEGER
LOCAL llReturn AS BOOLEAN

*-- Zuerst prüfen, ob das Dokument überhaupt vorhanden ist
IF FileExist( tcDocument )

	*-- Dann die Parameter setzen
	lcOperation = 'Print'
	lcFileName = tcDocument
	lcParameter = ''
	lcWorkDir = ''
	lnShowCmd = 0

	*-- Dokument mit der Standard-Anwendung drucken.
	ShellExecute( 0, lcOperation, lcFileName, lcParameter, lcWorkDir, lnShowCmd )

	*-- Flag auf alles OK setzen
	llReturn = .T.

*-- Andernfalls
ELSE

	*-- Fehlermeldung ausgeben
	THIS.oMess.ShowError( 'Dokument nicht gefunden', 'Das Dokument >' + ALLTRIM( tcDocument ) + ;
		'< nicht vorhanden!' + CR + CR + 'Kein Ausdruck möglich.' )

	*-- Flag auf Fehler setzen
	llReturn = .F.
ENDIF

RETURN( llReturn )
Wäre das keine Alternative?
--
Hans-Peter

Organisator der XUG Stuttgart
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Mo, 27. Mär 2017 12:38

Hallo Hans-Peter

Danke für den Tip.

Leider ist das nicht die Lösung.

Ich muss den Ausdruck mit unterschiedlichen Druckern und Schächten ausführen, also dem Druckauftrag den zu verwendenden Drucker und Tray(Papierschublade) angeben können.
Dann habe ich noch Rechner ohne Standardprogramme ....
Und der Aufruf des Acrobat-Reader aus dem Programm heraus ist mir von den Richtlinien her verboten.

Gruss Carlo

Benutzeravatar
HaPe
Foren-Moderator
Foren-Moderator
Beiträge: 521
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von HaPe » Mo, 27. Mär 2017 12:53

Hallo Carlo !
Danke für den Tip.
Leider ist das nicht die Lösung.
Schade.
--
Hans-Peter

Organisator der XUG Stuttgart
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von brandelh » Mo, 27. Mär 2017 13:37

Da kann eigentlich nur die Herstellerfirma von QuickDLL helfen ... den neuen Namen hab ich vergessen ;-)
Gruß
Hubert

ramses
Programmier-Gott
Programmier-Gott
Beiträge: 1000
Registriert: Mi, 28. Jul 2010 17:16

Re: Drucken mit HBPrintPDF druckt keine Grafik

Beitrag von ramses » Di, 28. Mär 2017 15:24

Hallo Hubert

nein nicht mal die Hersteller-Firma "Debenu resp. Foxit" kann da helfen.

Die Ursache des letzten Problems ist ein Bug im Rendering der DLL der in bestimmten Fällen zu weissen Seiten führt.
Dieser Bug wurde in der Version 12.xx beseitigt.

Es hilft also nur ein Update auf die aktuelle DLL-Version.

Die aktuelle 13.11 hat das Problem nicht, zusammen mit den vorher von mir beschriebenen Anpassungen (die sind dennoch nötig) lassen
sich nun erneut alle unsere PDF's ausdrucken. Vorerst.....was kommt wohl als nächstes?



Gruss Carlo

Antworten