使用PDFRenderer 0.9.1库在java中打印pdf文件
我正在尝试使用这个使用PDFRenderer库的java代码打印80mm宽的收据,并在Epson TM-T20打印机中打印。我用WindowsXPS打印预览对它进行了测试,结果显示没问题,但当我用物理epson打印机打印时,打印机太小了,几乎是显微镜下的
public static void printPdf2(String filename) throws IOException, PrinterException{
// Create a PDFFile from a File reference
File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
FileChannel fc = fis.getChannel();
ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page
PDFPrintPage pages = new PDFPrintPage(pdfFile);
fis.close();
// Create Print Job
PrinterJob pjob = PrinterJob.getPrinterJob();
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
pjob.setJobName(f.getName());
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pjob.setPageable(book);
PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet();
attr_set.add(MediaSizeName.ISO_A6);
// Send print job to default printer
pjob.print(attr_set);
}
发送到这个方法的pdf文件是预先格式化的,在printRequestAttributeSet中,它还提到以A6格式打印。我不知道是什么导致它在显微镜下打印
# 1 楼答案
好吧,我找到了一个更好的方法来完成这项任务。代码如下:
打印pdf文件的方法
要实现这一点,您需要PDFRenderer 0.9.1。只需下载。jar并将其添加到项目的构建路径中