TIF Drucker Universal Document Converter [ERLEDIGT]

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

Moderator: Moderatoren

Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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:

TIF Drucker Universal Document Converter [ERLEDIGT]

Beitrag von Koverhage »

Ich muss eine Unterstützung für diesen Drucker einbauen damit die Anwender TIF Dateien erzeugen können.
Der Drucker hat wohl eine API aber das ist mir zu aufwendig. Ich muss nur wissen, wo die Ausgabedatei(en) gespeichert werden.
Dieser Ordner wird bei den Druckeinstellungen vorgeben. Diesen möchte ich on the fly ändern (jeder Kunde hat seinen eigenen Ordner für diese Dokumente.
In der Registry finde in den Ordner nicht.
Wie kann ich feststellen wo und in welcher Datei diese Angabe gespeichert wird ?
Zuletzt geändert von Koverhage am Do, 12. Dez 2019 15:40, insgesamt 1-mal geändert.
Gruß
Klaus
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: TIF Drucker Universal Document Converter

Beitrag von HaPe »

Hallo Klaus !
Wie kann ich feststellen wo und in welcher Datei diese Angabe gespeichert wird ?
Setze den ProcessMonitor auf das Tool an indem du den Filter auf diese EXE/den Process setzt, den Activity-Filter nur auf File System Activity setzt und dann in der Log-Datei nachschaust.
Es ist empfehlenswert das Logging erst unmittelbar vor dem Druck zu aktivieren und nach dem Druck sofort wieder zu stoppen. Dann ist das Log noch einigermaßen übersichtlich.
https://docs.microsoft.com/de-de/sysint ... ds/procmon
--
Hans-Peter
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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: TIF Drucker Universal Document Converter

Beitrag von Koverhage »

Hat jemand Erfahrung mit API Einbindung in Xbase++ ?
Für diverse Sprachen ist eine Beschreibung dabei, nachstehend die Auflistung

The Universal Document Converter API is implemented as a COM server. This design provides access to the API methods out of any advanced programming language.

All API interfaces are inherited from the IDispatch interface. Therefore, API calls can be made both using programming languages such as Visual Basic, Visual C++, and Delphi and out of scripts written in languages, such as PHP.



wobei ich nur den Aufruf benötige, der den Ausgabeort setzt.
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von brandelh »

> All API interfaces are inherited from the IDispatch interface.

ich kann mir nicht merken ob Xbase iDispatch unterstützt oder nicht, aber das ist im Prinzip ActiveX, wie bei Word oder Excel.
Da gibt es das Dienstprogramm, das eine Xbase++ Klasse aus dem Objekt heraus holt ... ich meine das wird beim Word bzw. Excel Beispiel gezeigt.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von brandelh »

In der Hilfe zu AutomationObject() wird iDispatch aufgeführt, also sollte das gehen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von brandelh »

Und wenn ich diese Seite richtig verstehe, wird der OutputFolder beim Drucken gesetzt.

https://www.print-driver.es/sdk/interfa ... ation.html
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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: TIF Drucker Universal Document Converter

Beitrag von Koverhage »

Hier mal ein Beispiel in Visual Basic

Code: Alles auswählen

Converting Visio Diagrams to TIFF

'----------------------------------------------------------------------
' 1) Microsoft Visio 2000 or above should be installed and activated on your PC.
'
' 2) Universal Document Converter 5.2 or above should also be installed.
'
' 3) Open your project in Microsoft Visual Basic 6.0.
'
' 4) In Visual Basic main menu press "Project->References".
'
' 5) In the list of references check "Universal Document Converter Type Library".
'----------------------------------------------------------------------

Private Sub PrintVisioToTIFF(strFilePath As String)

' Define constants
  Const visOpenRW = &H20
  Const visOpenDontList = &H8
  Const visPrintAll = 0

  Dim objUDC As IUDC
  Dim itfPrinter As IUDCPrinter
  Dim itfProfile As IProfile
  
  Dim objVisioApp As Object
  Dim itfDrawing As Object
    
' Use Universal Document Converter API to change settings of converterd document
  Set objUDC = New UDC.APIWrapper
  Set itfPrinter = objUDC.Printers("Universal Document Converter")
  Set itfProfile = itfPrinter.Profile
  
  itfProfile.Load ("C:\Program Files\Universal Document Converter\UDC Profiles\Drawing to TIFF.xml")
  
  itfProfile.OutputLocation.Mode = LM_PREDEFINED
  itfProfile.OutputLocation.FolderPath = "C:\Out"
  
  itfProfile.PostProcessing.Mode = PP_OPEN_FOLDER

' Run Microsoft Visio as COM-server
  On Error Resume Next
    
  Set objVisioApp = CreateObject("Visio.Application")
  objVisioApp.Visible = False

' Open drawing from file
  Err = 0 ' Clear GetLastError() value
  Set itfDrawing = objVisioApp.Documents.OpenEx(strFilePath, visOpenRW And visOpenDontList)
  
  If Err = 0 Then
    
  ' Change Drawing preferences for scaling it to page
    itfDrawing.PrintCenteredH = True
    itfDrawing.PrintCenteredV = True
    itfDrawing.PrintFitOnPages = True
    
  ' Print drawing
    itfDrawing.Printer = "Universal Document Converter"
    itfDrawing.PrintOut (visPrintAll)

  ' Close drawing
    itfDrawing.Saved = True
    itfDrawing.Close
    Set itfDrawing = Nothing
    
  End If
    
' Close Microsoft Visio
  Call objVisioApp.Quit
  Set objVisioApp = Nothing

End Sub

Gruß
Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: TIF Drucker Universal Document Converter

Beitrag von AUGE_OHR »

brandelh hat geschrieben: Di, 10. Dez 2019 8:41 > All API interfaces are inherited from the IDispatch interface.

ich kann mir nicht merken ob Xbase iDispatch unterstützt oder nicht, aber das ist im Prinzip ActiveX, wie bei Word oder Excel.
Xbase++ benötigt IDispatch und kann nicht mit IUnknown umgehen.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: TIF Drucker Universal Document Converter

Beitrag von AUGE_OHR »

Koverhage hat geschrieben: Di, 10. Dez 2019 9:07 Hier mal ein Beispiel in Visual Basic
in dem Demo "sehe" ich nicht wie das "init" vom Drucker aussieht ...
steht da irgendwas von "regsrv32" damit eine CLSID in der Registry eingetragen wird :?:

---

hab das im C++ Demo gefunden

Code: Alles auswählen

  UDC::IUDCPtr pUDC(__uuidof(UDC::APIWrapper));
  UDC::IUDCPrinterPtr itfPrinter = pUDC->Printers["Universal Document Converter"];
  UDC::IProfilePtr itfProfile = itfPrinter->Profile;
das uuidof zeigt das es kein "fertiger" COM-Server ist.

Code: Alles auswählen

// Run Microsoft Outlook as COM-server
  OUTLOOK::_ApplicationPtr objOutlook( L"Outlook.Application" );
so wäre ein "fertiger" COM-Server

um sich eine IDispatch Schnittstelle zu bauen erstell man sich eine *.CH mit #xtranslate
die ersten 4 Functionen sehen so aus

Code: Alles auswählen

#xtranslate ITaskbarList_uuidof()                                          => UuidFromString("56FDF342-FD6D-11d0-958A-006097C9A090")
#xtranslate ITaskbarList_QueryInterface( <pi>, [<params,...>])             =>  IFpQCall( 0,"__sl__sl__pt_@sl",<pi> [,<params>] )
#xtranslate ITaskbarList_AddRef( <pi>)                                     =>  IFpQCall( 1,"__sl__sl",<pi>)
#xtranslate ITaskbarList_Release(<pi>)                                     =>  IFpQCall( 2,"__sl__sl",<pi>) 
danach kommen die restlichen Function "in der Reihenfolge wie im Source" :!:

wie man auf deer rechten Seite mit IFpQCall() sieht geht es bei 0 los und zählt dann hoch.
grob gesagt ist unser "Problem" OOP und "Name" vs. "Pointer" und "Nummer"
man muss die Function eigendlich mit der "Nummer" der Function ansprechen aber dank #xtranslate können wir einen "Namen" verwenden.

---

zunächst muss man raus bekommen was in UDC::APIWrapper steht denn das ist wie die CLSID zum Ansprechen.
die nächsten 3 gibt auch unter Xbase++ ... ich habe es mit Ot4Xb gemacht.

die #xtranslate werden später dann als Function genutzt.
wenn man sich die *.CH erstellt hat ist der Rest "ein Klacks".
gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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: TIF Drucker Universal Document Converter

Beitrag von Koverhage »

Habe eine Anfrage an Pablo geschickt, ob er das gegen Bezahlung macht.
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von brandelh »

Willst du auf diesen Drucker drucken oder willst du wissen wohin eine andere Anwendung speichert ?

Hast du so ein Teil zum Testen bei dir ?

Mit Xbase XbpPrinter .... kann man den Druckordner vorgeben, wenn es ein Windowsdrucker ist ...
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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: TIF Drucker Universal Document Converter

Beitrag von Koverhage »

Hallo Hubert,
ich will nur den Speicherort in meiner Anwendung vorgegeben.
Ich habe so ein Teil, ist frei verfügbar, siehe https://www.print-driver.de/
Die Änderung kann laut Support von denen nur über die API erfolgen, in meinem Fall über
itfProfile.OutputLocation.FolderPath = "C:\Out"

Leider hat Pablo bis Februar keine Zeit hat mir folgendes dazu geschrieben
But probably you not need that, as looks like almost everything is exposed with activex, and don't use complex types so you can do even with the Xbase++ ActiveX classes ( or the disphelper functions that are linked with ot4xb if Xbase++ activex slow down so much the process, or having problems but probably not needed here)
Dateianhänge
2019-12-11_074227.jpg
2019-12-11_074227.jpg (112.08 KiB) 13279 mal betrachtet
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von brandelh »

nochmal zum Verständnis, dein Kunde hat einen PC und auf diesem sollen ...

1. alle Ausdrucke in das von deinem Programm vorgegebene Verzeichnis (das wäre einfacher direkt einzutragen), oder ...

2. je nach bearbeitetem Dokument / Kunden willst du den nächsten Ausdruck in ein anderes Verzeichnis vorgeben ?

Kommen die Ausdrucke aus Xbase++ heraus ?

ist das dieser:

https://www.chip.de/downloads/Universal ... 81085.html

Dokument Konverter ... ?

https://www.print-driver.de/produktubersicht
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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: TIF Drucker Universal Document Converter

Beitrag von Koverhage »

Hallo Hubert,

ich würde den Link nehmen, den ich gepostet habe. Bei Chip ist eine alte Version.
Es ist ja eingetragen, dass der vorgegeben Speicherort verwendet werden soll.
Ja, Fall 2 trifft zu.
Die Ausdrucke kommen aus Xbase++ heraus
Gruß
Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: TIF Drucker Universal Document Converter

Beitrag von AUGE_OHR »

Koverhage hat geschrieben: Mi, 11. Dez 2019 7:45
But probably you not need that, as looks like almost everything is exposed with activex, and don't use complex types so you can do even with the Xbase++ ActiveX classes ( or the disphelper functions that are linked with ot4xb if Xbase++ activex slow down so much the process, or having problems but probably not needed here)
das hört sich doch gut an :!:
solang du keine Events verarbeiten musst würde ich ot4xb und Disphelper nehmen.

... aber man braucht eine CLSID / ProgID. hast du da schon was gefunden :?:
gruss by OHR
Jimmy
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
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: TIF Drucker Universal Document Converter

Beitrag von Koverhage »

nein nichts gefunden
Gruß
Klaus
ramses
Der Entwickler von "Deep Thought"
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: TIF Drucker Universal Document Converter

Beitrag von ramses »

Ich benötige auch ab und zu TIFF Files.

Da jeder Ausdruck der entsprechenden Dokumentengruppe sowieso auch immer als PDF File Archiviert wird habe ich die Aufgabe so gelöst dass ich das PDF-File wenn ein TIFF File benötigt wird einfach mithilfe der QuickPDF DLL in ein TIFF konvertiere.

So konnte ich die Sorgen die dich jetzt plagen elegant umgehen ..... Vielleicht ist ja dieser Weg auch was für dich.
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: TIF Drucker Universal Document Converter

Beitrag von AUGE_OHR »

Koverhage hat geschrieben: Mi, 11. Dez 2019 10:15 nein nichts gefunden
"wo" hast du den gesucht :?:
das Demo hast du doch installiert, oder :?:
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von Wolfgang Ciriack »

Also nach der Installation finde ich für den Universal Document Converter die clsid {729D6DDE-DEB2-4C4D-AD35-DE53F9D61884} in meiner Registry.
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von Wolfgang Ciriack »

Evtl. muss man auch wie in den Beispielen den "UDC.APIWrapper" {E81766E2-8035-4BC4-97DA-A4A4E584DBC9} über ActiveX ansprechen.
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von Wolfgang Ciriack »

Wenn man sich dann noch die API-Hilfe ansieht, sollte so etwas wie
oUDC:= CreateObject("UDC.APIWrapper")
oUDC:ActivationMode := 0 /*silent*/
oUDC:Activate()
oUDC:DefaultPrinter := "Universal Document Converter"
Leider fehlt mir die Zeit, das jetzt auch auszuprobieren, aber vielleicht hilft es als Ansatz.
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: TIF Drucker Universal Document Converter

Beitrag von AUGE_OHR »

Wolfgang Ciriack hat geschrieben: Mi, 11. Dez 2019 13:43 Wenn man sich dann noch die API-Hilfe ansieht, sollte so etwas wie
oUDC:= CreateObject("UDC.APIWrapper")
oUDC:ActivationMode := 0 /*silent*/
oUDC:Activate()
oUDC:DefaultPrinter := "Universal Document Converter"
das sieht doch schon gut aus ... jetzt noch das IPrinter Interface dazu.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von brandelh »

Dank euren Hinweisen und etwas nachlesen im Excel Beispiel habe ich das so zum Laufen bekommen:

Code: Alles auswählen

*#### ANSI .t. äöü ÄÖÜ ß !!!!
#include "Gra.ch"
#include "Xbp.ch"

#include "activex.ch"
#include "udc.ch"

// Beispiel aus der Hilfe zu XbpPrinter() abgewandelt.

PROCEDURE Main
   LOCAL oPS := NIL, oUDC := NIL, oPRN := NIL, oPRO := NIL
   LOCAL cDir // wir müssen das komplette Verzeichnis vorgeben

   SET CHARSET TO ANSI

   cDir := CurDrive()+":\"+CurDir()

   // Dim objUDC As IUDC
   // Set objUDC = New UDC.APIWrapper
   // das ist der Einstieg
   oUDC := CreateObject("UDC.APIWrapper")
   do case
      case oUDC == NIL
           msgbox("oUDC ist NIL")
           quit
      case ValType(oUDC) <> "O"
           msgbox("oUDC ist kein Objekt: "+ValType(oUDC))
           quit
      otherwise
           msgbox("oUDC ist OK")
   end

   oUDC:ActivationMode := 0 /*silent*/
   oUDC:Activate()
   // will ich nicht ändern, machen wir über Parameter von PrinterPS()
   //                          ==>    oDC:Create( cPrinterObjectName )
   // oUDC:DefaultPrinter := "Universal Document Converter"

   // bei Excel wird einer Xbase++ Variablen ein oBook, oSheet zugewiesen ...

   // hier holen wir den Pointer zu dem gewünschten Drucker
   // Dim itfPrinter As IUDCPrinter
   // Set itfPrinter = objUDC.Printers("Universal Document Converter")
   oPRN := oUDC:Printers("Universal Document Converter")

   // nun brauchen wir das Profil
   // Dim itfProfile As IProfile
   // Set itfProfile = itfPrinter.Profile
   oPRO := oPRN:Profile

   // Profil Laden ... bei mir war das nicht vorhanden.
   // itfProfile.Load ("C:\Program Files\Universal Document Converter\UDC Profiles\Drawing to TIFF.xml")

   // TIFF drucken
   oPRO:Load (cDir+"\UDC-TIFF.xml")

   oPRO:OutputLocation:Mode       := LM_PREDEFINED
   oPRO:OutputLocation:FolderPath := "D:\TEMP"
   oPRO:PostProcessing:Mode       := PP_OPEN_FOLDER

   // Presentation-Space für Standard-Drucker erzeugen
   oPS := PrinterPS("Universal Document Converter")

   // Spooler aktivieren
   oPS:device():startDoc()

   // Grafische Ausgabe zum Spooler schicken
   GraBox( oPS,      { 50,1200}, {600,200} )
   GraStringAt( oPS, {150,1100}, "Grafik wird gedruckt auf:")
   GraStringAt( oPS, {150,1050}, oPS:device():devName       )

   // Spoolen beenden
   oPS:device():endDoc()

   DestroyDevice( oPS )

   // zurücksetzen

   // PDF drucken, oder ein Standard.xml ...
   oPRO:Load (cDir+"\UDC-PDF.xml")

   // aufräumen

   oUDC := NIL
   oPRN := NIL
   oPRO := NIL


RETURN

// Presentation-Space erzeugen und mit Device-Context
// für einen Drucker assoziieren. Die Einheit für das
// Koordinatensystem ist 1/10 Millimeter

FUNCTION PrinterPS( cPrinterObjectName )
   LOCAL oPS, oDC := XbpPrinter():New()
   LOCAL aSize
   oDC:Create( cPrinterObjectName )
   oPS   := XbpPresSpace():New()
   aSize := oDC:paperSize()
   // Größe des bedruckbaren Bereichs
   aSize := { aSize[5] - aSize[3], ;
              aSize[6] - aSize[4]  }
   oPS:Create( oDC, aSize, GRA_PU_LOMETRIC )
RETURN oPS

PROCEDURE DestroyDevice( oPS )
   LOCAL oDC := oPS:device()
   IF oDC <> NIL
      oPS:configure()
      oDC:destroy()
   ENDIF
RETURN

die UDC.CH habe ich mit diesem Aufruf generiert:

tlb2ch.exe UDC.APIWRAPPER > UDC.CH
Dateianhänge
udc.zip
2. Version mit Aufräumen
(4.93 KiB) 372-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von brandelh »

Unter Windows 7 liegt der Pfad der Profile übrigens hier:

C:\Users\...\AppData\Roaming\UDC Profiles\...

das Zielverzeichnis bleibt übrigens wie hier eingestellt, evtl. zurücksetzen ?
Die Variablen auf NIL zu setzen hab ich mir gespart, sollte man aber sicher auch noch tun.
Eventuell speichert man die gewünschten Standardvorgaben gleich in deinem Anwendungsprogramm, dann musst du nicht nach BS unterscheiden.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: TIF Drucker Universal Document Converter

Beitrag von brandelh »

Ich habe mein Beispiel geändert, dass es eine lokale Profildatei einliest und nach dem Ausdruck den Inhalt wieder auf PDF zurücksetzt.

Allerdings frage ich mich, was passiert wenn zwei Programme gleichzeitig drucken wollen ;-)
Gruß
Hubert
Antworten