Hinweise zum neuen Forum
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Farbe abstellen [geschlossen]

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

Moderator: Moderatoren

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Farbe abstellen [geschlossen]

Beitrag von Jan » Fr, 19. Aug 2016 12:41

Hallo,

ich habe mir eine kleine Funktion geschrieben um Barcodes auszudrucken. Bei mir im Büro auf dem kleinen Schwarzweiß-Laser hat das immer super funktioniert, der Scanner hat alles sauber erkannt. In der Produktion geht aber garnichts. Grund: Die haben einen Farbdrucker, weil dort auf den Ausgangsbelegen auch immer das farbige Logo des Kunden schön gedruckt werden soll. Und der druckt auf den schwarzen Linien von mir man immer fleißig noch Farbe mit dazu - wohl um eine bessere Sättigung der Grafiken (was anderes sind die Gra-Linien ja nicht) hinzubekommen. Druckt der Farblaser das ein wenig versetzt, sind meine Barcode-Linien unscharf mit farbigen Halos, und der Scanner mag die nicht mehr leiden.

Gibt es irgend eine Möglichkeit dem Drucker zusagen: Diese Linien druckst Du bitte wirklich nur mit schwarzem Toner? Ich kann den ja nicht komplett auf schwarz setzen, weil die Logos natürlich immer noch farbig sein sollen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Farbe abstellen

Beitrag von brandelh » Fr, 19. Aug 2016 13:16

mit was erstellst du die Barcodes (welches Tool) und was für ein Drucker ist das ?
Gruß
Hubert

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Fr, 19. Aug 2016 13:38

Hallo Hubert,

in diesem Fall erstelle ich die erstmal über Edgars PDF-Klasse. Im Endeffekt sind das aber ganz normale GraLine()-Objekte, die ich in Abhängigkeit der Vorgaben des 128er Barcodes anordne.

Der Ducker ist ein größerer Canon-Laserdrucker, den genauen Typen müsste ich erfragen, wenn das wichtig wäre. Im Endeffekt muß das aber auf alle Druckern bei meinem Kunden sauber laufen, weil der Barcode an allen möglichen Stellen verwendet wird.

Das Problem scheint zu sein, das diese Linien eben auch Grafik sind. Das Logo auf den Ausdrucken weist ebenfalls Halos auf. Die Schriften sind absolut sauber. Früher habe ich die Barcodes mit einer ttf erstellt. Aber mit Wechsel auf die aktuelle PDF-Klasse spielen die nicht mehr mit wegen des benötigten Wechsels ASCII und ANSI. Also hab ich mir das mal eben schnell selber geschrieben, hat mich keine 30 Minuten gekostet - was mich sehr überrascht hat, ich hatte mir das komplizierter vorgestellt.

Die Halos sind dadurch aufgefallen, das der Drucker dringend eine Inspektion braucht, und extreme Halos zeichnet. Ganz vermeiden läßt sich das aber wohl generell nicht. Daher meine Hoffnung, das irgendwie auf ohne Farbtoner umstellen zu können.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Farbe abstellen

Beitrag von brandelh » Fr, 19. Aug 2016 14:26

Unsere großen Drucker haben "auto Farbe" in der Auswahl, neben Graustufen und Vollfarbe. Dort werden nur tatsächliche Farben mit Farbtoner gedruckt.
Ob der Treiber da unterschiede macht weiß ich nicht.

Du schreibst, dass das Logo gedruckt werden muss, gibt es auf der Seite also auch Farbelemente in der PDF ?
Wenn ja nützt dir die Umstellung des Druckers nicht, da er Farbe drucken muss, falls JA, erstelle 2 Druckerobjekte.
So machen wir das bei einem in "Auto Farbe" beim anderen "Graustufen" eingestellt und die Anwender wählen den Drucker (kann man auch per Software)

Wenn du Farbe brauchst, könntest du das Problem eingrenzen:
  1. was passiert wenn die PDF auf einem anderen Drucker gedruckt wird ?
  2. Hast du schon mal meine EAN13 (Wissensbasis) auf dem Drucker probiert (PDF Druckertreiber) ?
    Damit könnte man prüfen, ob es an deinem Code liegt.
    Ich nutze nicht GraLine sondern GraBOX weil die Linien zu dünn sind, die Box in 0,5mm ist immer eine gefüllte Linie.
  3. QuickPDF kann ja grundsätzlich eigene Barcodes drucken, geht viel einfacher und genauer ! (seit der 7.26 auf jeden Fall) ... DrawBarcode()
    Edgar fragen wie du das ansprechen kannst ;-)
Gruß
Hubert

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Fr, 19. Aug 2016 14:45

Hubert,

es liegt eindeutig am Drucker. Wenn eine Rechnung gedruckt wird, dann wird erst die PDF erzeugt und abgelegt, und die wird dann an den Drucker geschickt. Auf dem betreffenden Drucker im Warenausgang gibt das im Moment massive Halos, der Barcode ist unleserlich. Ich habe die PDF gerade auf einem baugleichen Drucker in der Verwaltung ausgegeben und versucht zu scannen - kein Problem. Allerdings wird im Warenausgang so viel gedruckt, das es immer mal wieder zu Halos kommt. Der Wartungsdienst ist dann zwar immer realtiv schnell zur Stelle - aber so lange können da keine Rechnungen erstellt werden, was naturgegeben ein echtes Problem darstellt.

Ich will ja auch nicht Farbe in dem Dokument grundsätzlich abstellen - das wäre natürlich einfach. Ich möchte einfach nur dem Druckjob mitgeben - das, was jetzt kommt, bitte wie eine normale Schrift auch wirklich nur mit schwarzem Toner drucken.

Die Linienbreite passt, weil ich die vorher auf 1/30 der Barcodehöhe einstelle. Ich muß da also keine Box nehmen. Box würde sehr sicher auch nichts bringen, weil auch die wieder Grafik wäre und damit Halos bekommt.

Ich kann Edgar mal fragen, wie das da mit den 128er Barcodes aussieht. Ganz einfach ist die Geschichte nicht - ich habe eine freie Schrift verwendet, weil die in Windows 7 korrrupt war. Die in Windows 10 kann ich auch nicht benutzen, die druckt Sachen mit die der Kunde nicht will. Was die von Debenu macht weiß ich jetzt so nicht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Farbe abstellen

Beitrag von brandelh » Fr, 19. Aug 2016 14:58

QuickPDF nutzt keine Schriften, sondern erstellt die Strichlinien intern mit Grafikfunktionen.

Wenn es am Drucker liegt (wohl Tonerreste von vorher oder Belichtungsfehler wegen Verschmutzung/Überlastung) was willst du dann machen ?

Früher habe ich am Drucker mit "als Grafik Drucken" die interne fehlerhafte Bildverbesserung abgeschaltet, aber das ist ewig her und belastet die Netze enorm.
Wenn die PDF in Ordnung ist, liegt es eindeutig nicht an dir, dein Programm kann keinen Drucker reparieren ...
Gruß
Hubert

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Fr, 19. Aug 2016 15:25

Hallo Hubert,

was ich da machen will? Ich will Linien wirklich in schwarz drucken, und nicht als eine Mischung der verschiedenen Farben. Wenn ein Xbase++-Programm Schriften auf einem Farblaser mit nur schwarzem Toner drucken kann, dann muß das doch auch irgend wie mit Linien machbar sein. Der soll halt nicht schwarz als RGB darstellen. Oder zu dem Schwarz noch Farbe zugeben um mehr Sättigung zu erreichen. Sondern einfach nur und ausschließlich schwarzen Toner nehmen. GRA_CLR_BLACK scheint jedenfalls in dem Fall einer Linie nicht zu genügen, um das auszulösen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Farbe abstellen

Beitrag von Koverhage » Fr, 19. Aug 2016 17:04

Ich würde mal sagen. Im Drucker ein neues Dokument / Papierformat festlegen
und sagen diese bitte nur in Schwarz keine Graustufen/keine Farben. Alles andere wird scheitern.
Gruß
Klaus

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Fr, 19. Aug 2016 19:55

Hallo Klaus,

nein, das ist keine Alternative. Ich brauch ja die Farbe für das Logo.

Ich muß den "nur" dazu bringen die Linien zu behandeln wie die Schriften - die ja auch ohne Farbsaum gedruckt werden.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Farbe abstellen

Beitrag von AUGE_OHR » Fr, 19. Aug 2016 22:54

ich würde erst mal probieren was ein anderes Programm, nicht Xbase++, macht beim ausdrucken eines Barcode auf dem Drucker :-"

:-k ... wie sieht deine PrinterPS() mit dem XbpPresspace() aus ? welche GRA_PU_??? verwendest du ?
gruss by OHR
Jimmy

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

Re: Farbe abstellen

Beitrag von brandelh » Sa, 20. Aug 2016 20:01

Hallo Jan,

die Schriften werden nicht als LINIEN übertragen, sondern als Text (außer man zwingt ihn dazu), dieser wird dann mit
viel Logik vom Drucker in immer bester Qualität ausgegeben. DAS geht nicht mit Linien !

Mir ist auch kein Steuerbefehl bekannt und auch kein Drucker, der "den Bereich aber nur in Schwarz druckt" ...
Wenn aber deine normalen Ausdrucke auf den anderen Druckern gut aussehen, dann ist es ein Hardwareproblem genau dieses Druckers !

Wenn du deine Druckausgabe in ein PDF umlenkst und die Ränder bei 200 % ++ gut und schwarz aussehen, dann liegt es nicht an dir sondern am Drucker.

Wenn es aber so ist, dass die im PDF als Farblinien daher kommen, dann liegt es an Xbase++ eventuell die Druckauflösung erhöhen (ich arbeite immer mit 1/10 mm).
Leider arbeitet Xbase++ mit GDI und nicht mit GDI+ Auflösung, meine farbigen Grafiken könnten schärfer sein.
Gruß
Hubert

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Mo, 22. Aug 2016 6:20

Hubert,

ja natürlich ist das ein Hardware-Problem des Druckers! Das Problem ist nur das bei dem Drucker das immer mal wieder pasiert. Und wenn die Linien dann auch farbig verschben werden, können die bis zum Erscheinen des Wartungsdienstes nicht mehr arbeiten. Wenn nur das Logo verschoben ist sieht das zwar bescheiden aus, aber es kann weiter gehen. Ist aber der Barcode verschoben, können alle nachfolgenden Stationen nicht mehr arbeiten, der Laden steht still.

Deswegen wäre es mir wichtig den Barcode in wirklich nur schwarz drucken zu können.

Aber das hatte ich oben alles schon mal erwähnt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Farbe abstellen

Beitrag von brandelh » Mo, 22. Aug 2016 8:07

Jan hat geschrieben:Hubert,
Aber das hatte ich oben alles schon mal erwähnt.
Jan
Ich verstehe schon was du willst, aber nochmal, kein Programm kann Hardwareverschmutzungen beseitigen.
Und solange die PDF Version in 200% Vergrößerung keine farbigen Linien aufzeigt liegt es nicht am Programm.
Das was da angezeigt wird, ist die Druckervorgabe für den Ausdruck, welcher dann vom Drucker falsch umsetzt wird.

Wenn eine Firma so dringend auf den Drucker angewiesen ist und es ab und zu vorkommt,
dann muss man eben zwei hinstellen und einen Druckerpool aufbauen.

PS: solange niemand beweist, dass es doch geht, bleibe ich dabei 8)
Gruß
Hubert

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Mo, 22. Aug 2016 9:11

Hubert,

dann verstehst Du vielleicht doch nicht, was ich will. Natürlich will ich nicht per Xbase++-Prorgammierung irgendwelche Hardwareprobleme beseitigen. Aber schon gerne irgendwelche Hardwareprobleme umgehen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Farbe abstellen

Beitrag von AUGE_OHR » Mo, 22. Aug 2016 16:19

ich wundere mich das du meinst das es am Drucker liegt aber du keine "Gegentest" machst.
wenn er auch mit einer anderen App, nicht Xbase++, das selbe Problem hat dann könntest du bestätigen das es der Drucker ist.

ich fragte nach deiner PrinterPS() ob du eine Grafik Auflösung gewählt hast ?!

p.s. was für ein Drucker ist es überhaupt ?
gruss by OHR
Jimmy

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Di, 23. Aug 2016 9:42

Leider scheint es so zu sein, das es dafür keine Lösung gibt. Lt. Alaska ist es vermutlich so, das der Drucker aus dem Druckjob die Schriften herausliest, und dann entsprechend seine eingebauten Schriften verwendet (was erklären würde, warum das Schriftbild auf verschiedenen Druckern bei meinem Kunden etwas unterschiedlich aussieht). Die dann in nur-schwarz druckt. Den Barcode als ttf hat er wohl ebenfalls als im Drucker eingebaute Schrift erkannt und entsprechend klar ausgegeben. Mein selbstgeschriebener Barcode dagegen ist natürlich keine Schrift, und daher wird dort mit einer für den Drucker passenden Farbzusammenstellung das Schwarz der Linien erzeugt.

Auch der Drucker-Servicetechniker weiß da keine Lösung für.

Erstmal läuft das seit gestern auch wieder, der Servicetechniker hat den Drucker repaiert, alles sieht wieder sauber aus. Bis zum nächsten Servicefall ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

Leon
UDF-Programmierer
UDF-Programmierer
Beiträge: 83
Registriert: Mi, 28. Nov 2007 13:48
Wohnort: Wien
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Leon » Di, 23. Aug 2016 13:37

Was spricht gegen die Verwendung einer Code 128 Schriftart?
Gruß aus Wien
Leon

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Di, 23. Aug 2016 15:01

Leon,

das ist ein ASCII/ANSI-Problem in Edgars Klasse. Das er selber auch nicht feststellen kann. Das gibt es auch erst mit V5.0 seiner Klasse. Mit V4.0 hat das alles noch sauber funktioniert. Im Prinzip funktioniert das auch heute noch wenn der Kunde nicht auf VIO-Oberflächen bestehen würde, was nun einmal mit einem internen ASCII-Zeichensatz verbunden ist.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
BJelinek
UDF-Programmierer
UDF-Programmierer
Beiträge: 64
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Re: Farbe abstellen

Beitrag von BJelinek » Di, 23. Aug 2016 19:39

Was sind VIO-Oberflächen ? :? :?:
Gruß
Bernd

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 11999
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Farbe abstellen

Beitrag von Jan » Mi, 24. Aug 2016 6:18

Sieht aus wie Ckipper, also DOS. Alles mit Say und Get, keine XbParts für GUI.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

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

Re: Farbe abstellen

Beitrag von brandelh » Mi, 24. Aug 2016 7:06

Da bringt ihr was durcheinander !

VIO ist nur dann wenn man GUI=NO linkt (wobei es dann noch Standard-IO gibt), dann wird in der standard AppSys RootCrt() als Basisklasse verwendet und er nimmt Schriften von der Box.
Wenn man GUI=YES linkt, wird mit XbpCrt() der Hybridbildschirmmodus oder mit XbpDialog() der richtige GUI Modus erzeugt.

Bis 1.xx konnte ich GUI=NO linken und dennoch XbpPrinter und Gra-Befehle nutzen, irgendwann ging das nicht mehr und ich musste auf GUI=YES umstellen.

Hier der Auszug aus AppSys.PRG:

Code: Alles auswählen

PROCEDURE AppSys()
...
  LOCAL oCrt, nAppType := AppType()
  LOCAL aSizeDesktop, aPos

  DO CASE 

    // Anwendung wurde im PM Modus gelinkt, eine XbpCrt Instanz
    // ist zu erzeugen.
    CASE nAppType == APPTYPE_PM
...
      // XbpCRT-Fenster erzeugen
      oCrt := XbpCrt():New ( NIL, NIL, aPos, DEF_ROWS, DEF_COLS )
...

    // Anwendung wurde im VIO oder NOVIO Modus gelinkt, eine RootCrt
    // Instanz ist zu erzeugen.
    CASE nAppType == APPTYPE_VIO .OR. nAppType == APPTYPE_NOVIO
...
      oCrt := RootCrt():New()
das ist aber für das eigentliche Problem nicht wichtig.
Gruß
Hubert

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

Re: Farbe abstellen

Beitrag von brandelh » Mi, 24. Aug 2016 7:32

Aber andere Aussagen sind verwirrend und entscheident für die Druckausgabe:

Hubert: "mit was erstellst du die Barcodes"
JAN: "in diesem Fall erstelle ich die erstmal über Edgars PDF-Klasse." und "was anderes sind die Gra-Linien ja nicht"

GRA Funktionen sind Xbase++, wenn du Grafunktionen nutzt, musst du eine Art von Bitmap erzeugen !
Edgar hat auch Linien, wenn du diese nutzt, nimmt er intern sicherlich die Funktionen von der QuickPDF Dll die darunter liegt !

Warum ist das wichtig ?

Auch ich nutze Grafiken in PDFs, die über Framemaker gesetzt werden.
Wenn ich nun Liniengrafik als JPG speichere kommt es zu unschönen Farbrändern neben den Linien, daher nutze ich BMP oder PNG, dort kommt das nicht vor !
Wobei dieses Verhalten unabhängig von Xbase ist, JPG hat Probleme mit einigen Liniengrafiken, nicht mit allen ... das muß an der Komprimierung liegen.

Du schreibst, dass das Verhalten erst nach einer Umstellung von Edgar kam ...
Auch PDFs haben Versionen und Kompriemierungen. Wir haben auch Bild-Grafiken (TIFF, Bitmap etc.) verschiedener Herkunft.
Plötzlich berichteten Anwender dass ein Teil der Bilder - und zwar nicht die Fotos sondern Strichzeichnungen - verwaschen aussehen.
Bei der Untersuchung stellte ich fest, dass die Komprimierung bis Adobe 5 gut aussah, die ab Version 6 (ist 30 % besser) aber Fehler erzeugte.

Das kann man prüfen wenn man die Details der PDF ansieht, PDF Version 1.4 (Spec. Version) ist Acrobat 5.0 und sieht immer gut aus, ab 1.5 ... nun ja :banghead:
Leider hatten wir eine komplette Version mit 1.5 komprimiert.

Ein Teil meiner Grafiken in meinem Dokument werden mit Xbase++ Bitmaps erstellt (Farbbalken mit Text), diese sehen bei 100 % gut aus,
aber die Schriften haben an den Kanten nicht die Schärfe wie eingebaute Schriften. In der Vergrößerung wird dann sichtbar, was der Unterschied zwischen
Linien von QuickPDF (oder Edgars Klasse) und Bitmaps ist. Gerade Linien gehen noch, alles andere sieht furchtbar aus.

Ja auch Edgar hat Linien (QuickPDF hat die) und die sind vector orientiert. Ich erzeuge mit seiner Klasse PDFs aus einer Internetanwendung heraus,
Barcodes brauche ich nicht, aber Strichlinien schon. Wenn man diese PDF vergrößert (400 % ) bleiben die Linien dennoch perfekt !
Möglich, dass diese hohe Perfektion auch auf einem Drucker bessere Ergebnisse erzielt, als eine Bitmap die eingebunden wurde.
Sicher kann ich diese Druckoptimierung aber nur von Schriften bestätigen, die schon immer super aussahen obwohl die alten Laser nur 300 dpi hatten.

Viel bessere Druckqualität würdest du aber mit den internen Barcode Funktionen von QuickPdf erhalten, da diese sicherlich das Optimum des machbaren heraus kitzeln.
Hast du nicht Edgars Quellcode ? Wenn nicht kann er dir sicher sagen wie du von seiner Klasse aus die darunterliegenden Barcode Klassen von QuickPDF nutzen kannst.
Es wundert mich dass er das nicht schon selbst anbietet ...
DPLDrawBarcode(int InstanceID, double Left, double Top, double Width, double Height, wchar_t * Text, int Barcode, int Options);
Barcode:
1 = Code39 (or Code 3 of 9)
2 = EAN-13
3 = Code128
4 = PostNet
5 = Interleaved 2 of 5
Falls du ein oben erwähntes PDF Problem hast, kommt das bei nicht sauberer Druckerjustierung natürlich verstärkt heraus.
Gruß
Hubert

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

Re: Farbe abstellen

Beitrag von brandelh » Mi, 24. Aug 2016 7:37

PS: hier kann man eine CODE 128 TTF Schriftart kostenfrei laden:

:arrow: http://www.zoll.de/DE/Fachthemen/Zoelle ... tiges.html

(eventuell den Dateinamen auf .ZIP verkürzen, bei mir war die session ID dahinter)

wobei Wikipedia ausdrücklich aussagt, dass weder TTF Fonts, Bitmaps noch PDF Dokumente gut für optimale Barcodes sind ... ;-)

:arrow: https://de.wikipedia.org/wiki/Code128

und das kann ich nur bestätigen, etwas Text eingetippt und mit Schriftgröße 20 gedruckt, kann mein Smartphone nicht richtig lesen.
Die Kanten sind leicht schwammig. Tintenstrahler mit hoher Druckqualität ... feuchtes Papier ? Word ? TTF Font - wer ist schuld ? ;-)
Gruß
Hubert

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

Re: Farbe abstellen

Beitrag von AUGE_OHR » Mi, 24. Aug 2016 7:59

Jan hat geschrieben:es liegt eindeutig am Drucker.
...
Ich habe die PDF gerade auf einem baugleichen Drucker in der Verwaltung ausgegeben und versucht zu scannen - kein Problem.
Allerdings wird im Warenausgang so viel gedruckt ...
tausche doch mal die beiden Drucker ;-)

Frage : wie alt ist denn der betreffende Drucker oder genauer wie viele Seiten hat er schon gedruckt ?
gruss by OHR
Jimmy

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

Re: Farbe abstellen

Beitrag von brandelh » Mi, 24. Aug 2016 8:00

Das Programm erzeugt die beiliegende PDF mit QuickPDF Barcode, den kann mein Smartphone sauber lesen:

Code: Alles auswählen

#include "Xbp.ch"
#include "Gra.ch"
#include "Common.ch"
#include "ot4xb.ch"
#include "HBPrintPDF.ch"

// ANSI Text ! äöü

procedure main
   local oPDF, cAcrobat, cPDF, cPfad, nWahl, cPrinterName, aPrinter, aBins, aBinTxt, cUnit
   local cBarCode, nY, nX, nW, nH, nF, cImage, nImageID, x, cTxt, nDestID, nActivePage, cCMD
   cls

   set charset to ansi
   set alternate to TEST_QR-code
   set alternate on

   ? "Teste HBPrintPDF"

   cAcrobat := "C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe"
   cPDF     := "Hello_QRCode.pdf"
   cPfad    := cAppPath()  // ot4xb
   delete file (cPDF)
   do while file (cPDF)
      msgbox("Die PDF Datei muss zuerst geschlossen werden / close PDF !" )
      delete file (cPDF)
   enddo
   ? "PDF:  '"+cPDF+"'"
   ? "Pfad: '"+cPfad+"'"
   ?
   ? "HBPrintPDF() erzeugen"
   ?

altd()

   oPDF := HBPrintPDF():new():create() // GetQuickPDFLizenzKey() / cKey

   if oPDF:IsOK
      ? "DLL-Version:",oPDF:LibraryVersion()
      /* Key The property to set:
         0 = PDF Version
         1 = Author
         2 = Title
         3 = Subject
         4 = Keywords
         5 = Creator
         6 = Producer
      */
      ? "SetInformation( 1 )", oPDF:SetInformation( 1 , "Hubert Brandel (äöü)" )
      ? "SetInformation( 2 )", oPDF:SetInformation( 2 , "HBPrintPDF - QR-Code" )
      ? "SetInformation( 3 )", oPDF:SetInformation( 3 , "HBPrintPDF - PRG-Example QR-Code" )
      ? "SetInformation( 4 )", oPDF:SetInformation( 4 , "HBPrintPDF, QuickPDF" )
      ? "SetInformation( 5 )", oPDF:SetInformation( 5 , "HBPrintPDF - Xbase++ CLASS for QuickPDF" )
      ? "nach Create - Text ausgeben"
      do case
         case set(_SET_CHARSET)=0 // ANSI
            cTxt := "EXE in ANSI (0)"
         case set(_SET_CHARSET)=1 // OEM
            cTxt := "EXE in OEM (1)"
         otherwise
            cTxt := "EXE ? ("+alltrim(str(set(_SET_CHARSET),3,0))+")"
      end
      oPDF:Say(2,45,cTxt)
      ? "CHARSET: ",cTxt
      oPDF:SetPageLayout(0) // single page
      oPDF:DrawText(20,30, "HBPrintPDF (QuickPDF) DLL: "+oPDF:LibraryVersion())

      do case
         case oPDF:nDefaultMeasurementUnits=MEASUREMENTUNITS_MM
              cUnit := "mm"
         case oPDF:nDefaultMeasurementUnits=MEASUREMENTUNITS_INCH
              cUnit := "inch"
         otherwise
              cUnit := "1/72 inch"
      end

      ? "PageHeight():      ",oPDF:PageHeight(),cUnit
      ? "PageWidth ():      ",oPDF:PageWidth (),cUnit
      ? "Barcodes ..."

      nY       := 20    // mm
      nX       := 110
      cBarCode := "12345"
      oPDF:DrawText(nX, nY+7,"Code39: "+cBarCode)
      oPDF:DrawBarcode(150, nY,40,10,cBarCode,BARCODE_TYPE_Code39,0)
      nY += 20
      oPDF:DrawText(nX,nY+7, "Code128: "+cBarCode)
      oPDF:DrawBarcode(150, nY,40,10,cBarCode,BARCODE_TYPE_Code128,0)
      nY += 20
      cBarCode := "1234567890128"
      oPDF:DrawText(nX,nY+7, "EAN13 NUM + SP:")
      oPDF:DrawBarcode(150,nY,40,10,cBarCode,BARCODE_TYPE_EAN13,BARCODE_OPTION_EAN13_DRAW_NUMBER_SP)
      nY += 20
      oPDF:DrawText(nX,nY+7, "EAN13 NUM: ")
      oPDF:DrawBarcode(150,nY,40,10,left(cBarCode,12),BARCODE_TYPE_EAN13,BARCODE_OPTION_EAN13_DRAW_ONLY_NUM )
      nY += 20
      cBarCode := "4016138347036"
      oPDF:DrawText(nX,nY+7, "EAN13 NUM: ")
      oPDF:DrawBarcode(150,nY,40,10,cBarCode,BARCODE_TYPE_EAN13,BARCODE_OPTION_EAN13_DRAW_ONLY_NUM )

      nX := 20
      nY += 40
      cBarCode := "HBPrintPDF"
      oPDF:DrawText(nX,nY-7, "QR-Code:   '"+cBarCode+"' normal, dann gedreht 90°, 180° und 270°")
      /*
         0 = Normal
         1 = Rotate 90 degrees counter clockwise
         2 = Rotate 180 degrees
         3 = Rotate 90 degrees clockwise
      */

      if ! oPDF:DrawQRCode(nX, nY, 20, "Test ", 0, 0 ) // normal Ausrichtung - normal position
         msgbox("DrawQRCode(nX, nY, 20, cBarCode, 0, 0 ) => error")
         ? "DrawQRCode(nX, nY, 20, cBarCode, 1, 0 )",oPDF:LastErrorCode()," => ",oPDF:LastRenderError()
      endif

      for x := 3 to 1 step -1
          nX += 30
          if ! oPDF:DrawQRCode(nX, nY, 20, cBarCode, 0, x )
             msgbox("DrawQRCode(nX, nY, 20, cBarCode, 0, "+str(x)+" ) => error")
             ? "DrawQRCode(nX, nY, 20, cBarCode, 0, "+str(x)+" )",oPDF:LastErrorCode()," => ",oPDF:LastRenderError()
          endif
      next

      nX := 20
      nY += 30

      oPDF:DrawText(nX,nY, "oPDF:DrawQRCode(nX, nY, 20, cBarCode, 0, x ) with x => 0, 3, 2, 1")





      //------------------- END --- SAVE --- PRINT ------------------

      ? "Save File",oPDF:SaveToFile(cPfad+cPDF)
      ? "File ? ",file(cPfad+cPDF)
      oPDF:destroy()
      ? "destroy - 10 Sekunden warten, oder Taste drücken"
   endif

   inkey(10)

   cCMD := '@echo off'+CRLF+;
           'set AcroReader="'+GetStandardProgramm(cPDF, cPfad)+'"'+CRLF+;
           'set PDF="'+cPfad+cPDF+'"'+CRLF+;
           'echo.'+CRLF+;
           'echo Show PFD with   ShowThis1   ... and close the Reader'+CRLF+;
           '%AcroReader% /A "nameddest=ShowThis1" %PDF%'+CRLF+;
           'pause'+CRLF+;
           'echo.'+CRLF+;
           'echo Show PFD with   ShowThis2   ... and close the Reader'+CRLF+;
           '%AcroReader% /A "nameddest=ShowThis2" %PDF%'+CRLF+;
           'pause'+CRLF+;
           'echo.'+CRLF+;
           'echo Show Page 2  ... and close the Reader'+CRLF+;
           '%AcroReader% /A "page=2" %PDF%'+CRLF+;
           'echo End'+CRLF+;
           'pause'

   lMemoWrite( "ShowNamedDest.cmd" , cCMD)

   if file(cPfad+cPDF)
      if ! file(cAcrobat)
         cAcrobat := GetStandardProgramm(cPDF, cPfad)
      endif
      runshell(cPfad+cPDF,cAcrobat,.t.)
   endif


return

*--------------------------------------------------------------------------
function GetStandardProgramm(cFile, cPath)   // cPath force to EXE
   local cExe := ChrR(0,260) // MAX_PATH is 260
   if empty(cPath)
      cPath := cAppDir()
   endif
   if @shell32:FindExecutableA(cFile, cPath, @cExe) < 32
      cExe := ""
   else
      cExe := TrimZ(cExe)
   end
return cExe
Dateianhänge
Hello_QRCode.pdf
(41.85 KiB) 23-mal heruntergeladen
Gruß
Hubert

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast