Как правильно распечатать PDF в формате A4? - PullRequest
0 голосов
/ 15 января 2019

Мне удается напечатать PDF-файл, но он получается неправильно: напечатанная страница меньше (она занимает половину бумаги формата А4), и каждый символ документа немного квадратный, как неизвестная буква .

Я пытался изменить размер бумаги с помощью paper.setSize (x, y), setImageableArea и MediaSizeName, но когда я это делаю, мой принтер выдает ошибку и перестает работать (с красным светодиодом).

public static void printPdf3 (String filePath, String jobName) throws IOException, PrinterException {

    FileInputStream fileInputStream = new FileInputStream(filePath);
    byte[] pdfContent = new byte[fileInputStream.available()];
    fileInputStream.read(pdfContent, 0, fileInputStream.available());
    ByteBuffer buffer = ByteBuffer.wrap(pdfContent);

    final PDFFile pdfFile = new PDFFile(buffer);
    PDFPrintPage pages = new PDFPrintPage(pdfFile);
    PrinterJob printJob = PrinterJob.getPrinterJob();
    PageFormat pageFormat = PrinterJob.getPrinterJob().defaultPage();
    pageFormat.setOrientation(PageFormat.PORTRAIT);
    printJob.setJobName(jobName);
    Book book = new Book();

    book.append(pages, pageFormat, pdfFile.getNumPages());
    printJob.setPageable(book);
    Paper paper = new Paper();

    paper.setSize(210,297); //A4
    paper.setImageableArea(0, 0, paper.getWidth()-20, paper.getHeight()-20);
    System.out.println(paper.getHeight());
    System.out.println(paper.getWidth());
    pageFormat.setPaper(paper);

    AttributeSet aset = new HashAttributeSet();

    aset.add(new PrinterName("\\\\ber-ser-2\\Laser CED", null));
    PrintService[] pservices = PrintServiceLookup.lookupPrintServices(null, aset);

    PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet();
    attr_set.add(MediaSizeName.ISO_A4);

    printJob.print(attr_set);
    fileInputStream.close();
}

Я ожидаю, что мой файл будет напечатан в формате А4 правильным образом (разумеется, с возможностью чтения всех символов) и в портретном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...