[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Nov 2001
    Beiträge
    5

    Drucken: Schachteuerung aus Java

    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();
    }

    }

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    ... und wandte sich ab und weinte bitterlich. Nun gibt es schon mal was, was man besser mit RPG machen würde (aus Streamfile SCS Spooldaten erzeugen) dann wird das mit Java gemacht...
    Dieser Toolbox Spielkram (außer JDBC), der ist sowas von buggy, da würde ich konsequent die Finger von lassen.

    mfg

    Dieter Bender



    Zitat Zitat von mmu400
    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();
    }

    }
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Nov 2001
    Beiträge
    5
    Danke für die info, nur kann ich damit nicht viel anfangen.
    Unsere Ausgangslage: Eine Applikation ausschliesslich in Java, welche auf der AS läuft, (DB2/400) welche halt auch Papiere erzeugt. Ubrigens: Mit Ausnahme der Schachtsteuerung läuft die Anwendung prima !
    Hat sonst noch wer eine Idee ?

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    727
    Da du die Spoolfile als *USEASCII erstellt hast,werden alle Spoolfile-Parameter ignoriert.
    D.h. alle Angaben (Steuerdaten z.B. PJL/PCL + Druckdaten) müssen im Druckdatenstrom vorhanden sein.
    Deswegen ja *USERASCII.

    Erstelle die Spool als *SCS. Hier kannst du dann über Host Print Transform (SCS/AFP --> PCL) die SCS-Druckfächer (DRAWER) den PCL-Druckfächern zuordnen.
    Dazu musst du ggf. das *WSCST-Objekt zu deinem Drucker retrieven (RTVWSCST) und anpassen.

    Siehe auch
    http://www-1.ibm.com/support/docview...0555574&rs=110

Similar Threads

  1. Java und Fehlermeldung jva0122 bei simplen "Hello World"
    By TARASIK in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 30-03-11, 13:48
  2. Java Version
    By Muchi in forum NEWSboard Java
    Antworten: 2
    Letzter Beitrag: 07-11-06, 11:00
  3. ASCII drucken
    By kug in forum NEWSboard Drucker
    Antworten: 4
    Letzter Beitrag: 23-09-06, 07:40
  4. Antworten: 3
    Letzter Beitrag: 06-06-06, 15:57
  5. java debug'n
    By muadeep in forum NEWSboard Java
    Antworten: 12
    Letzter Beitrag: 23-02-05, 19:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •