wpcubed.com Forum Index wpcubed.com
WPCubed GmbH Support Forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Drucken aus verschiedenen Fächern

 
Post new topic   Reply to topic    wpcubed.com Forum Index -> Fragen auf Deutsch
View previous topic :: View next topic  
Author Message
WolfgangGuertler



Joined: 08 Jan 2010
Posts: 4

PostPosted: Fri Jan 08, 2010 9:31 am    Post subject: Drucken aus verschiedenen Fächern Reply with quote

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
View user's profile Send private message
wpsupport
Site Admin


Joined: 24 Oct 2003
Posts: 5658

PostPosted: Fri Jan 08, 2010 10:21 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website
WolfgangGuertler



Joined: 08 Jan 2010
Posts: 4

PostPosted: Fri Jan 08, 2010 11:31 am    Post subject: Reply with quote

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
View user's profile Send private message
wpsupport
Site Admin


Joined: 24 Oct 2003
Posts: 5658

PostPosted: Sat Jan 09, 2010 7:38 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website
WolfgangGuertler



Joined: 08 Jan 2010
Posts: 4

PostPosted: Thu Jan 14, 2010 12:37 pm    Post subject: Reply with quote

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
View user's profile Send private message
wpsupport
Site Admin


Joined: 24 Oct 2003
Posts: 5658

PostPosted: Sat Jan 16, 2010 1:02 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website
WolfgangGuertler



Joined: 08 Jan 2010
Posts: 4

PostPosted: Mon Jan 18, 2010 7:26 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    wpcubed.com Forum Index -> Fragen auf Deutsch All times are GMT
Page 1 of 1

 
Jump to:  
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