我想在网络打印机上打印PDF文件。打印txt文件或字符串没有问题,但是当我尝试打印PDF / JEPG / DOC文件时出现问题。
打印机:Samsung SCX-6545系列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");
}
结果:
答案 0 :(得分:1)
我解决了这个问题。
代码:
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");
}