Я использую следующий метод для печати pdf-файлов в программе, которую я использую. Он работает, но я должен вызывать метод каждый раз, когда я хочу, чтобы одна страница печаталась. Поэтому, если я хочу напечатать один и тот же документ пять раз, весь этот метод должен выполняться пять раз. Мой вопрос в том, есть ли способ добавить несколько документов в PrinterJob, чтобы этот метод можно было назвать ровно один раз, чтобы распечатать то, что мне нужно?Добавление нескольких документов к PrinterJob
public static void printPdf(File thePdf)
{
File f = thePdf;
RandomAccessFile fis = null;
FileChannel fc = null;
ByteBuffer bb = null;
try
{
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
fis = new RandomAccessFile(f, "rw");
fc = fis.getChannel();
bb = ByteBuffer.allocate((int) fc.size());
fc.read(bb);
PDFFile pdfFile = new PDFFile(bb);
PDFPrintPage pages = new PDFPrintPage(pdfFile);
PrinterJob pjob = PrinterJob.getPrinterJob();
pjob.setPrintService(service);
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
pf.setOrientation(PageFormat.PORTRAIT);
Paper paper = new Paper();
paper.setImageableArea(0, 0, paper.getWidth() * 2, paper.getHeight());
pf.setPaper(paper);
pjob.setJobName(f.getName());
Book book = new Book();
book.append(pages, pf, pdfFile.getNumPages());
pjob.setPageable(book);
pjob.print();
}
catch (IOException|PrinterException e)
{
ShowErrors.show_errors("Printing exception: "+e.toString());
}
finally
{
try
{
if (fc != null)
fc.close();
if (fis != null)
fis.close();
}
catch (IOException e)
{
System.out.println("Exception closing IO channel: "+e.toString());
}
if (bb != null)
{
bb.clear();
}
}
}
Было бы идеально, если бы я мог передать этот метод массив объектов File и добавить каждую из них pjob (я предполагаю, что где бы вы добавить их, если это возможно). Я просмотрел документацию, и это, честно говоря, довольно запутанно для меня. Если бы кто-нибудь мог указать мне в правильном направлении, я был бы признателен. Благодарю.