PrintingLibEx - Library für ertweiterte druckausgaben

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Beitrag von H.Brill »

Hallo Fraiser,

Code: Alles auswählen

Wenn ich Dich richtig verstehe meinst Du das man eineGadgetID 
angibt, die die Lib ausliest und dann in Tabellarischer From ausdruckt. Ein 
interessanter Ansatz. Könnte man vielleicht auch auf andere Gadgets 
ausweiten. 
Ja, sowas meinte ich.
Ich denke mal, daß so mancher hier im Forum sowas auch
gebrauchen könnte. Der Ausdruck eines ListIconGadget wäre
am besten zu gebrauchen, wenn man seine Daten in tabellarischer
Form auf dem Bildschirm hat. Wenn das ganze dann noch mit
Gitternetz geht, wäre das toll. Man kann es zwar auch mit einem
WebGadget realisieren, ist aber auch zum einen umständlich und
andererseits braucht man die ATL.DLL.

Momentan realisiere ich meine Projekte noch mit Frank Abbings
Listview.dll. Diese hat solche Druckfunktionen. Man kann sogar
selbst bestimmen, welche Spalten man ausdrucken möchte.
Benutzeravatar
Fraiser
Beiträge: 14
Registriert: 11.05.2005 16:47
Wohnort: Kiel
Kontaktdaten:

Beitrag von Fraiser »

Hi,

kleines Update.
  • Die Vorschau Qualität von Bildern wurde verbessert
  • InitPrintingPageEx() kann jetzt vor jedem Print/Preview benutzt werden
  • die Parameter 'width,Height und KeepAspect' bei PrintingImageEx() sind jetzt
    optional. Wenn sie nicht angegeben werden wird das Bild in seiner normalen grösse
    ausgedruckt.
Download PrintingLibEx für PB 3.9x

Download PrintingLibEx für PB 4


Gruß

Fraiser
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Vorschlag:
Wenn Du die InitFunction folgendermassen ändern würdest:

Code: Alles auswählen

ProcedureDLL PrintingLibEx_Init()
; code, kein ProcedureReturn!, Keine Parameter!
EndProcedure
ProcedureDLL PrintingLibEx_End()
; code, kein ProcedureReturn!, Keine Parameter!
EndProcedure
könnte man sie die 2 Befehle sparen, da die dann automatisch ausgeführt werden!

// Nachtrag:
Es sei denn, es gibt einen Grund, warum die Initialisierung fehlschlagen
sollte.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Fraiser
Beiträge: 14
Registriert: 11.05.2005 16:47
Wohnort: Kiel
Kontaktdaten:

Beitrag von Fraiser »

Hi,

ich hatte es schon einmal mit den _Init _End Optionen probiert, hatte aber
leider kein erfolg. Jetzt weiß ich auch warum :D. Ich hatte
folgendes geschrieben:

Code: Alles auswählen

ProcedureDLL.l PrintingLibEx_Init()
.
EndProcedure

ProcedureDLL.l PrintingLibEx_End()
.
EndProcedure
Das .l war der Fehler! Ist jetzt korrigiert. Habe die Änderung
gerade hochgeladen.

Ab jetzt sind also die Funktionen PrintingLibInitEx() und ClosePrintingLibEx()
nicht mehr enthalten !!

Danke für den Hinweis! :allright:

Gruß

Fraiser
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ist in der Hilfe zu TailBite leider nicht deutlich genug zu entnehmen, deshalb
dachte ich, der Hinweis wäre nützlich.
Ich hatte anfangs immer ein ProcedureReturn drinnen, da gings dann auch
nicht :D
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Fraiser
Beiträge: 14
Registriert: 11.05.2005 16:47
Wohnort: Kiel
Kontaktdaten:

Beitrag von Fraiser »

Hi,

ein kleines Update der PrintingLibEx. Es sind drei neue Befehle hinzugekommen.
-GetPrintingFontMetricEx(Type) zum bestimmen der Höhe des aktuellen Fonts
-GetPrintingTextHeightEx(Text$) ermittelt die Höhe des übergebenen Textes
-GetPrintingTextWidthEx(Text$) ermittelt die Breite des übergebenen Textes

Download PrintingLibEx für PB 3.9x

Download PrintingLibEx für PB 4

Gruß

Fraiser
Benutzeravatar
ABBKlaus
Beiträge: 61
Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:

Beitrag von ABBKlaus »

Hi,

hab ein kleines problem mit den neuen funktionen :(
hab erst mal den barcode teil rausgenommen um an das problem ranzukommen.
Also ein Font in der größe 60 sollte folgendes zurückgeben:
tmHeight=89
tmAscent=72
tmDescent=17
bei 600 DPI sind das dann 0.148333 " oder 0.376767 mm

der unten aufgeführte codesnippet bringt folgende resultate:
Height=333
Ascent=266
Descent=67

füg bitte folgende routinge in die demo ein :

Code: Alles auswählen

Procedure PrintPreview(Preview)
  
  If Preview 
    ;*** start preview
    If GetGadgetState(#CkdWidth)
      ;*** set optional preview width
      RetStart.l = StartPrintingPreviewEx(#ListPreview, #True, 1024)
    Else
      ;*** normal preview width with 72dpi
      RetStart.l = StartPrintingPreviewEx(#ListPreview, #True, 0)
    EndIf
  Else
    ;*** start printing
    RetStart.l = StartPrintingEx("Test Printing")
  EndIf
  
  If RetStart.l
    PrintingFontEx("Arial",60, #True)
    
    test1.f=GetPrintingFontMetricEx(#PL_Font_Ascent)
    test2.f=GetPrintingFontMetricEx(#PL_Font_Descent)
    test3.f=GetPrintingFontMetricEx(#PL_Font_Height)
    
    Debug "Ascent="+Str(test1)
    Debug "Descent="+Str(test2)
    Debug "Height="+Str(test3)
    
    Debug "DPI-X="+Str(GetPrintingCapsEx(#PL_DPI_X))
    
    text$="12345678"
    
    ;test.f=GetPrintingFontMetricEx(#PL_Font_Height)
    test.f=GetPrintingTextHeightEx(text$)
    Debug "Height="+StrF(test)
    ; hier solle in etwa das rauskommen : 0.148333 inches
    ; oder 0.376767 mm
    ; oder 3.76767 (1/10mm)
    x=100
    y=0
    For i=1 To 10
      PrintingTextEx(text$,x,y,0)
      y+test
    Next
    
    If Preview
      ;*** end preview
      StopPrintingPreviewEx()
    Else
      ;*** end printing
      StopPrintingEx()
    EndIf
  Else
    MessageRequester("FEHLER", "Init Start Printing")
  EndIf
EndProcedure
Benutzeravatar
Fraiser
Beiträge: 14
Registriert: 11.05.2005 16:47
Wohnort: Kiel
Kontaktdaten:

Beitrag von Fraiser »

Hi,

:oops: kleiner rechenfehler!
Habe es korrigiert! Jetzt sollten die Rückgabewerte korrekt
in 1/10mm übergeben werden. Bei besonders kleines
Fonts (<3mm) kommt es zu leichten rundungsfehlern!

Gruß

Fraiser
Benutzeravatar
ABBKlaus
Beiträge: 61
Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:

Beitrag von ABBKlaus »

Hi,

muss leider noch mal stören :D

test.f=GetPrintingTextHeightEx(text$)

sollte eigentlich das selbe rausbekommen wie

test.f=GetPrintingFontMetricEx(#PL_Font_Height)

tut er aber nicht :shock:

trotzdem super leistung :allright:

Klaus

[edit]
und GetPrintingTextWidthEx(text$) ist auch fehlerhaft
Zuletzt geändert von ABBKlaus am 15.03.2006 23:54, insgesamt 1-mal geändert.
Benutzeravatar
ABBKlaus
Beiträge: 61
Registriert: 15.03.2006 22:09
Wohnort: Ratingen
Kontaktdaten:

Beitrag von ABBKlaus »

apropos rundungsfehler, wieso benutzt du nicht hierfür eine float variable.
sollte doch von der genauigkeit völlig ausreichen.
Schau doch mal in die PurePDF library rein :praise:
Antworten