mmu400
03-12-04, 12:07
Wir erzeugen eine Druckliste in Java und übertragen diese an die iSeries. Die Spoolfileattribute werden bei der Übertragung auf die iSeries durch das Defaultprinterfile QPNPSPRTF generiert,
das Spoolfile wurde unter dem Druckerttyp *USERASCII angelegt. (Formvorschub=*autocut) Das Papier soll nun auf dem Druckerschacht 2 gedruckt werden. Wir füllen den Parameter DRAWER bei der Dokumentenerstelllung in Java bereits ab, im Spoolfile steht das dann auch so drin, nur druckt es leider nicht auf dem Schacht zwei.
Wir haben vieles ausprobiert, leider ohne Erfolg. Was haben wir übersehen ? (Wir drucken auf einem Lexmark S2455, AS-Einheitentyp 3812)
Gruss Marcel
Zur technischen Erklärung eine Kurzfassung unseres Druckprogrammes:
private void print (String file, String sys, String user, String password, String printer){
try{
FileInputStream in = new FileInputStream(file);
AS400 system = new AS400(sys,user,password);
Printer prt = new Printer(system,printer);
String outq = prt.getStringAttribute(Printer.ATTR_OUTPUT_QUEUE);
OutputQueue spool = new OutputQueue(system,outq);
PrintParameterList parms = new PrintParameterList();
parms.setParameter(PrintObject.ATTR_COPIES, 1);
parms.setParameter(PrintObject.ATTR_FORMFEED, "*AUTOCUT");
parms.setParameter(PrintObject.ATTR_SRCDRWR, 2);
parms.setParameter(PrintObject.ATTR_OUTPUT_QUEUE, spool.getPath());
SpooledFileOutputStream out = new SpooledFileOutputStream(system,parms,null,null);
byte[] buf = new byte[2048];
int bytesRead =0;
do
{
bytesRead = in.read(buf);
if (bytesRead != -1) {
out.write(buf,0,bytesRead);
}
} while (bytesRead != -1);
out.close();
system.disconnectAllServices();
}catch(Exception e){
System.out.println();
}
}
das Spoolfile wurde unter dem Druckerttyp *USERASCII angelegt. (Formvorschub=*autocut) Das Papier soll nun auf dem Druckerschacht 2 gedruckt werden. Wir füllen den Parameter DRAWER bei der Dokumentenerstelllung in Java bereits ab, im Spoolfile steht das dann auch so drin, nur druckt es leider nicht auf dem Schacht zwei.
Wir haben vieles ausprobiert, leider ohne Erfolg. Was haben wir übersehen ? (Wir drucken auf einem Lexmark S2455, AS-Einheitentyp 3812)
Gruss Marcel
Zur technischen Erklärung eine Kurzfassung unseres Druckprogrammes:
private void print (String file, String sys, String user, String password, String printer){
try{
FileInputStream in = new FileInputStream(file);
AS400 system = new AS400(sys,user,password);
Printer prt = new Printer(system,printer);
String outq = prt.getStringAttribute(Printer.ATTR_OUTPUT_QUEUE);
OutputQueue spool = new OutputQueue(system,outq);
PrintParameterList parms = new PrintParameterList();
parms.setParameter(PrintObject.ATTR_COPIES, 1);
parms.setParameter(PrintObject.ATTR_FORMFEED, "*AUTOCUT");
parms.setParameter(PrintObject.ATTR_SRCDRWR, 2);
parms.setParameter(PrintObject.ATTR_OUTPUT_QUEUE, spool.getPath());
SpooledFileOutputStream out = new SpooledFileOutputStream(system,parms,null,null);
byte[] buf = new byte[2048];
int bytesRead =0;
do
{
bytesRead = in.read(buf);
if (bytesRead != -1) {
out.write(buf,0,bytesRead);
}
} while (bytesRead != -1);
out.close();
system.disconnectAllServices();
}catch(Exception e){
System.out.println();
}
}