GunPrinter

In der Druckvorstufe wird viel geplottet. Ein Plott dient zur Kontrolle der montierten Daten, bevor sie auf Druckplatte belichtet werden. Man kann so die korrekte Positionierung und Seitenfolge prüfen. Schwierig wird es, wenn der bei ebay geschossene Plotter leider keine Postscript-Karte enthält und somit nicht in den Workflow integriert werden kann. GunPrinter löst das Problem indem das Programm Tif-Daten zum Drucker sendet. Die Tif-Dateien werden vom Workflow erzeugt und in einen Ordner gespeichert. Diesen Ordner überwacht GunPrinter, sendet die Datei zum Drucker und löscht sie danach wieder. Der Vorteil dabei ist, dass jetzt die Pdfs von dem Rip interpretiert werden, das später auch die Daten für die Druckplatte erzeugt. Fehler sollten also bereits auf dem Plott erkennbar werden da nicht wie in der gängigen Praxis zwei unterschiedliche Rips die Daten interpretieren.

GunPrinter zeigt eine Liste der vorhandenen Dateien an, die ausgewählt und gestartet werden können. Auf Wunsch startet GunPrinter den Druck automatisch. Es können beliebig viele Hotfolder zur Überwachung angegeben werden.

Den Druckvorgang übernimmt eine IrfanView Portable Version, der mit Hilfe einer Batchdatei der Druckauftrag erteilt wird. Das geschieht unsichtbar im Hintergrund. IrfanView verwendet dabei die letzten verwendeten Einstellungen aus seiner ini-Datei. GunPrinter minimiert sich in das System-Tray und prüft alle paar Sekunden die Hotfolder auf neue Daten.

GunPrinter Gui: Beenden nur über „Beenden“

 

Sourcecode:

Für jeden Printjob wird ein neuer GunPrinterThread gestartet. Ein Scanner überwacht dabei die Batch Ausgabe:

public void run() 
    { 

        if (file.exists() && file.canWrite() ) {
                        
            Scanner s = null;
            try {
                ProcessBuilder builder = new ProcessBuilder( "cmd", "/c", "irfan.bat", file.getAbsoluteFile().toString() ); 
                builder.directory( new File(System.getProperty("user.dir")+System.getProperty("file.separator")+"irfan") ); 
                Process p;
                p = builder.start();

                s = new Scanner( p.getInputStream() );
                s.useDelimiter( "\\Z" ); 
                if (s.next().contains("OK")) { //Batch echos OK if ERRORLEVEL = 0
                    oK  = true;                    
                }

            } catch (IOException e1) {
                e1.printStackTrace();
            } finally {
                if (s!=null) s.close();
            }

            if (oK) {
                GunPrinterPanel.protocol(file + " zum Drucker gesendet.");
                
                if (prefs.node("config").getBoolean("deleteOnSuccess", false)) {
                    file.delete();
                    GunPrinterPanel.protocol(file + " gelöscht.");
                }
                else if (!file.getAbsolutePath().toLowerCase().contains("printed")) {
                    String newFileName = file.getAbsolutePath().toLowerCase().replace(".tif","_printed.tif");
                    file.renameTo(new File(newFileName));
                    GunPrinterPanel.protocol(file + " umbenannt zu "+newFileName+" .");
                }
                oK = false;
            }

        }

    }

Interesse:

Frag mich nach einer Kopie des Programms.