Druck Probleme mit PDF dateien

Bluedaishi

Bekanntes Mitglied
Hallo zusammen ich hab folgendes Problem ich habe mir ein fertiges PDF mit iText erstellt diese Datei kann ich
mit einem PDF viewer ansehen und auch ausdrucken wenn ich dies aber über Java probiere geht das nicht .
Folgendes habe ich probiert
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package gui_test;

import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Sides;

/**
*
* @author KeinerEiner
*/
public class PrintingServiceDemo {

    public PrintingServiceDemo() throws FileNotFoundException, PrintException, IOException, PrinterException {

        PrinterJob printerJob = PrinterJob.getPrinterJob();

        PrintService printService = null;
        if (printerJob.printDialog()) {
            printService = printerJob.getPrintService();
        }
        DocFlavor docType = DocFlavor.INPUT_STREAM.AUTOSENSE;

        FileInputStream fis = new FileInputStream(PDFVorgKomp_VGST.output_pdf);
        Doc pdfDoc = new SimpleDoc(fis, docType, null);
        DocPrintJob printJob = printService.createPrintJob();
        printJob.print(pdfDoc, new HashPrintRequestAttributeSet());
        fis.close();

    }

}

Hat einer von euch auch schon dieses Problem gehabt ???

Vielen Dank für eure hilfe
 
Moin Klaus ,
PDFVorgang_VGST ist der Pfad zur Datei . Sorry für die Fehler Meldung es passiert folgendes das der Druck kurz in der Warteschlange des Druckers auftaucht aber dann ist auch schon Schluss also kein Ausdruck kommt
 
Moin,

habe es nicht wirklich nachvollziehen können ...

Hier mal meine Funktion, mit der ich einfache Textdateien drucke:
Java:
    /** @brief Druckt die Datei zum übergebenen Dateinamen  
    *  @param strFileName = Name der zu druckenden Datei
    */   
   public void filePrint( String strFileName )
   {
       try
       {
           PrintService[] prservices = PrintServiceLookup.lookupPrintServices( null, null );
           if( (null == prservices) || (0 >= prservices.length) )
           {
               JOptionPane.showMessageDialog( null, "Fehler beim Drucken (Fkt. 'filePrint') !!\n"
                       + "Kein Drucker bereit !!" + "\n", "Druckfehler", JOptionPane.ERROR_MESSAGE );
               return;
           }
           
           PrinterJob druckJob = PrinterJob.getPrinterJob();
           druckJob.setJobName( "WORKER-Druck" );
           druckJob.setCopies( 1 );
           PageFormat pf = druckJob.defaultPage();
           zeilen = textEinlesen( strFileName );
           
           druckJob.setPrintable( this, pf );
       
           bDruckAbfragen = true; // Druck nur vorbereiten
           druckJob.print();
           
           Book buch = new Book();
           buch.append( this, pf, iAnzahlSeiten );
           druckJob.setPageable( buch );
           
           bDruckAbfragen = false; // jetzt Druck ausführen
           if( druckJob.printDialog() )
           {
               druckJob.print();
           }

           // Druckdatei löschen
           File fNeu = new File( DRUCKAUSGABE_ORDNER + "DRUCKDUMMY.txt" );
           fNeu.delete();
       }
       catch( Exception e)
       {
           // Druckdatei löschen
           File fNeu = new File( DRUCKAUSGABE_ORDNER + "DRUCKDUMMY.txt" );
           fNeu.delete();
           JOptionPane.showMessageDialog( null, "Fehler beim Drucken (Fkt. 'filePrint') !!\n"
                   + e.getMessage() + "\n", "Druckfehler", JOptionPane.ERROR_MESSAGE );
       }
   } // filePrint

Vielleicht kannst Du Dich ja daran lag hangeln 😉

VG Klaus
 
Hi Klaus
vielen Dank für deine Hilfe hab das Problem gelöst zwar mit PDFbox was ich eigentlich vermeiden wollte aber damit geht es doch ganz gut. Wenn du noch mehr Ideen hast dann würde ich die gerne Testen hier jetzt so wie ich es gelöst habe

Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package gui_test;

import java.awt.print.PrinterException;
import java.io.File;
import java.io.IOException;
import javax.print.PrintService;
import org.apache.pdfbox.pdmodel.PDDocument;

/**
*
* @author KeinerEiner
*/
class PDF_komplett_print {

    private PrintService[] services = null;
    public static PrintService service;
    private static org.apache.log4j.Logger logger = ApplicationLogger.getInstance();

    public PDF_komplett_print() throws PrinterException {

        PDDocument doc_1 = null;
        try {
            doc_1 = PDDocument.load(PDFVorgKomp_VGST.output_pdf);
            System.out.println(PDFVorgKomp_VGST.output_pdf);
            doc_1.print();
        } catch (IOException | PrinterException ex) {
            logger.info("DRUCKER FEHLER " + ex);
            File datei = new File(PDFVorgKomp_VGST.output_pdf);
            datei.delete();
            logger.info("DATEI " + datei.getName() + " GELÖSCHT");
        } finally {
            if (doc_1 != null) {

                try {
                    doc_1.close();
                } catch (IOException ex) {
                    logger.info("DATEI NICHT GEFUNDEN " + ex);
                    File datei = new File(PDFVorgKomp_VGST.output_pdf);
                    datei.delete();
                    logger.info("DATEI " + datei.getName() + " GELÖSCHT");
                }

            }
        }

        File datei = new File(PDFVorgKomp_VGST.output_pdf);
        datei.delete();
        logger.info("DATEI " + datei.getName() + " GEDRUCKT");
        logger.info("DATEI " + datei.getName() + " GELÖSCHT");
    }         
}

Werde dein gesendeten Code testen
Danke für deine Hilfe melde mich aber nochmal
 

Zurück
Oben