简体   繁体   中英

Weird symbols where printing PDF

I want to print PDF file on network printer. There are no problem with printing txt file or String, but problem arises when I'm trying to print PDF/JEPG/DOC files.

Printer: Samsung SCX-6545 Series PCL

public static void printFile(String filename) throws IOException {

    FileInputStream psStream = null;
    try {
        psStream = new FileInputStream(filename);
    } catch (FileNotFoundException ffne) {
    }

    if (psStream == null) {
        return;
    }
    int count = 0;

    DocFlavor psInFormat = DocFlavor.BYTE_ARRAY.AUTOSENSE;
    Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    aset.add(new Copies(1));
    // aset.add(MediaSize.ISO_A4);
    // aset.add(Sides.DUPLEX);
    PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, null);
    for (int i = 0; i < services.length; i++) {
        if (services[i].getName().contains("SCX")) {
            count = i;
        }
    }
    DocFlavor[] docFalvor = services[count].getSupportedDocFlavors();
    for (int i = 0; i < docFalvor.length; i++) {
        System.out.println(docFalvor[i].getMimeType());
    }
    if (services.length > 0) {
        System.out.println(Files.probeContentType(Paths.get(filename)));
        DocPrintJob job = services[count].createPrintJob();
        try {
            job.print(myDoc, aset);
        } catch (PrintException pe) {
            System.out.print(pe);

        }
    }
    psStream.close();
}

public static void main(String[] args) throws IOException {
    printFile("C:/Users/artur.pakula/Documents/aaa.pdf");
}

Results: PDFPNG

I resolve this problem.

Code:

 import org.apache.pdfbox.pdfparser.PDFParser;
 import org.apache.pdfbox.pdmodel.PDDocument;
 public static void printFile(String filename) throws IOException {

    FileInputStream psStream = null;
    try {
        psStream = new FileInputStream(filename);
    } catch (FileNotFoundException ffne) {
    }

    if (psStream == null) {
        return;
    }
    int count = 0;
    DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;

    Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    aset.add(new Copies(1));
    // aset.add(new Copies(5));
    // aset.add(MediaSize.ISO_A4);
    // aset.add(Sides.DUPLEX);
    PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, null);
    for (int i = 0; i < services.length; i++) {
        if (services[i].getName().contains("ITE_LUB_MONO")) {
            count = i;
        }
    }
    DocFlavor[] docFalvor = services[count].getSupportedDocFlavors();
    for (int i = 0; i < docFalvor.length; i++) {
        System.out.println(docFalvor[i].getMimeType());
    }
    if (services.length > 0) {
        System.out.println(Files.probeContentType(Paths.get(filename)));
        System.out.println(services[count].getName());
        DocPrintJob job = services[count].createPrintJob();
        try {
            // właściwy kod
            PDFParser parser = new PDFParser(psStream);
            PrinterJob job1 = PrinterJob.getPrinterJob();
            job1.setPrintService(services[count]);
            PDDocument doc = PDDocument.load(filename);
            doc.silentPrint(job1);
            // właściwy kod koniec

        } catch (PrinterException pe) {
            System.out.print(pe);

        }
    }
    psStream.close();
}

public static void main(String[] args) throws IOException {
    printFile("C:/Users/jakub.wojtczak/Desktop/aaa.pdf");
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM