 |
wpcubed.com WPCubed GmbH Support Forum
|
| View previous topic :: View next topic |
| Author |
Message |
WolfgangGuertler
Joined: 08 Jan 2010 Posts: 4
|
Posted: Fri Jan 08, 2010 9:31 am Post subject: Drucken aus verschiedenen Fächern |
|
|
Hallo !
Wir haben seit gestern die WPViewPDF dll + Delphi Komponenten.
Wir haben die Anforderung das wir PDF Dokumente automatisch
drucken müssen jedoch dabei unterschiedliche Fächer (pro PDF Dokument) ansteuern müssen wegen unterschiedlichen Firmenpapieren.
Ich hab jetzt versucht mit der DLL zu arbeiten, die schafft auch das Drucken nur die Angabe von TRAY1 und/ober TRAY2 scheint nicht zu klappen....
Meine Fragen also :-)
.) Wie kann ich die verfügbaren Trays eines Druckers einfach abfragen ?
Wenn ich die DLL mit LISTTRAY=1, wie könnte ich die Trays zurückbekommen (in der Doku ist die Rede von einer Debug Console nur weiss ich leider nicht wie ich dazu kommen könnte...)
.) Wenn ich die Komponente verwenden würde, wäre das einfacher ?
Besten Dank im voraus,
Wolfgang Gürtler |
|
| Back to top |
|
 |
wpsupport Site Admin
Joined: 24 Oct 2003 Posts: 5658
|
Posted: Fri Jan 08, 2010 10:21 am Post subject: |
|
|
Hallo,
Die Debug AUsgaben sieht man auch im Ereignisprotokoll von Delphi und anderen IDEs. Ich glaube Sie verwenden Delphi.
Ansonsten kann man dafür DebugView nehmen:
http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
Die Abfrage der schächte geht in Delphi folgendermassen:
| Code: | procedure GetPaperBins(aPrinter: TPrinter; list: TStrings;
FirstName: string = '');
type
TBinName = array[0..23] of Char;
var
DevMode: PDeviceMode;
ADevice, ADriver, APort: array[0..256] of Char; var
ADeviceMode: THandle;
i, Count: Integer;
BinNames: array of TBinName;
Bins: array of Word;
buffer: array[0..30] of AnsiChar;
begin
aPrinter.GetPrinter(ADevice, ADriver, APort, ADeviceMode);
List.Clear;
if FirstName <> '' then List.Add(FirstName);
DevMode := GlobalLock(ADeviceMode);
if DevMode <> nil then
try
Count := DeviceCapabilities(
aDevice, // pointer to a printer-name string
Aport,
DC_BINNAMES, // device capability to query
nil, DevMode);
if Count > 0 then
begin
SetLength(BinNames, Count);
SetLength(Bins, Count);
try
DeviceCapabilities(aDevice, Aport, DC_BINNAMES, PChar(@BinNames[0]), nil); // DevMode);
DeviceCapabilities(aDevice, Aport, DC_BINS, PChar(@Bins[0]), nil); // DevMode);
for i := 0 to Count - 1 do
begin
{$IFDEF UNICHAR} // Delphi 2009
List.AddObject(PChar(@BinNames[i]), TObject(Bins[i]));
{$ELSE}
StrLCopy(buffer, PAnsiChar(@BinNames[i]), 24);
List.AddObject(string(StrPas(buffer)), TObject(Bins[i]));
{$ENDIF UNICHAR}
end;
finally
SetLength(BinNames, 0);
SetLength(Bins, 0);
end;
end;
finally
GlobalUnlock(ADeviceMode);
end;
end; |
|
|
| Back to top |
|
 |
WolfgangGuertler
Joined: 08 Jan 2010 Posts: 4
|
Posted: Fri Jan 08, 2010 11:31 am Post subject: |
|
|
Hallo !
Vielen Dank erstmals, allerdings will es mir partout nicht gelingen :-)
Mein Aufruf lautet:
Resultat := pdfprint(PAnsiChar(Edit3.Text),'',PAnsiChar(Licname),PAnsiChar(Lickey),LicCode,PAnsiChar('"PRINTER='+Edit4.Text+'","TRAY1=7","TRAY2=7","COPIES=1"'));
Die Abfrage der Paper Bins bringt mir eine Liste mit:
Automatisch auswählen
Automatisch
Kassette 1
Kassette 2
Kassette 3
Kassette 4
Mehrzweckeinzug
Massenzufuhr
Umschlageinzug
Nachdem die Angabe eine Nummer sein muss (habe es auch erfolglos mit Namen probiert) müsste es ja für die Massenzufuhr eine 7 sein...
mfg,
Wolfgang Gürtler |
|
| Back to top |
|
 |
wpsupport Site Admin
Joined: 24 Oct 2003 Posts: 5658
|
Posted: Sat Jan 09, 2010 7:38 am Post subject: |
|
|
Hallo,
Verwenden Sie hier die Bin IDs welche in dem Beispielcode hie der Liste hinzugefügt werden (im Objekt Teil)
List.AddObject(string(StrPas(buffer)), TObject(Bins[i]));
Der Index kann nicht verwendet werden.
Grüsse,
Julian Ziersch |
|
| Back to top |
|
 |
WolfgangGuertler
Joined: 08 Jan 2010 Posts: 4
|
Posted: Thu Jan 14, 2010 12:37 pm Post subject: |
|
|
Hallo !
Das klappt super, Danke !
Jetzt hab ich allerdings ein Problem mit der Papiergrösse :-)
Also, unsere Situation ist :
Ein Drucker (Kyocera) mit 3 Fächern, in Fach 1 ist A5,
in Fach 2 ist A4 Briefpapier 1 und in Fach 3 ist A4 Briefpapier 2.
Ich kann jetzt je nach Dokument zwar die einzelnen Fächer ansteuern,
jedoch müsste ich für einen korrekten Druck auch das entsprechende
Papierformat einstellen, also wenn ich ein A5 Dokument ausdrucken will dann aus Tray 259 mit Papiergrösse A5, bei Briefpapier 1 ein Tray 264 mit Papiergrösse A4 und bei Briefpapier 2 ein Tray 265 mit Papiergrösse A4.
Ich hab jetzt schon versucht über Delphi´s TPrinter das zu setzen, leider ohne Erfolg, ich hab auch jetzt sogar versucht die Druckereinstellungen bzw.
das Papierformat über die registry des installierten Druckers vorher zu setzen, das gelingt mir leider auch nicht...
Haben Sie vielleicht eine Idee ?
mfg,
Wolfgang Gürtler |
|
| Back to top |
|
 |
wpsupport Site Admin
Joined: 24 Oct 2003 Posts: 5658
|
Posted: Sat Jan 16, 2010 1:02 pm Post subject: |
|
|
Hallo,
das problem ist, Durcker wählen häufig das Fach nach der Papiergrösse aus. Hier muss der Drucker default entsprechend eingestellt werden.
WPViewPDF wird die Papiergrösse nach der PDF einstellen, kann aber im Stretch Modus auch umgekehrt arbeiten.
Probieren Sie mal "STRETCH=3"
Viele Grüsse,
Julian Ziersch |
|
| Back to top |
|
 |
WolfgangGuertler
Joined: 08 Jan 2010 Posts: 4
|
Posted: Mon Jan 18, 2010 7:26 am Post subject: |
|
|
Hallo !
Danke für die Info, ich schau mir das mal an.
In der Zwischenzeit habe ich hierfür eine funktionierende Lösung gefunden und zwar mit Hilfe des setprinter.exe aus dem Server 2003 Resource Kit.
Mit diesem Tool kann man recht gut diverse Druckereinstellungen per Command Line durchführen lassen, ich verwende das nun um vor dem pdfprint das Papierformat zu ändern. Klappt wie gesagt so nun sehr gut,
nachdem das ganze auf einem Server automatisch läuft ist der Nebeneffekt des dauernden Wechsel des Papierformates (für andere Programme) für mich zu vernachlässigen...
Danke nochmals,
Wolfgang Gürtler |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|