【发布时间】:2020-03-31 14:25:24
【问题描述】:
我在这里搜索了很多关于此的文章。我找到了一些,但没有一个适合我需要的。 所以,让我们开始吧。 我正在 ITextPDF 中创建一个文件,之后我需要打印该文件。并且文件的内容是动态的。所以 PDF 有时会在页面中拆分内容,当我打印它时,页面之间的间隙会在纸张上显示出很大的空间(我需要在单页中使用热敏打印机打印)。 所以,我花了几天时间试图找出任何解决方案,但仍然找不到。对于打印,我使用的是 PDFBox,效果很好。现在只需要正确对齐 PDF。
这是一个两页的 PDF。需要制作一个,记住这是动态的,它可能会更长。
我如何创建它的代码示例:
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdfDirectoryPath +
"temp.pdf"));
writer.setStrictImageSequence(true);
document.open();
Font bold = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 20, BaseColor.BLACK);
Chunk nomeFantasiaChunk = new Chunk(nomeFantasia, bold );
Paragraph paragrafoNomeFantasia = new Paragraph(nomeFantasiaChunk);
paragrafoNomeFantasia.setAlignment(Element.ALIGN_CENTER);
document.add(paragrafoNomeFantasia);
document.close();
我如何打印它的代码示例(工作正常,使用 PDFBox):
private void printPDF(PrintService print, String fileName) {
try {
PDDocument document = PDDocument.load(new FileInputStream(Constants.pdf + fileName));
PrinterJob job = PrinterJob.getPrinterJob();
job.setPageable(new PDFPageable(document));
// define custom paper
Paper paper = new Paper();
paper.setSize(225, 396); // 1/72 inch
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins
// custom page format
PageFormat pageFormat = new PageFormat();
pageFormat.setPaper(paper);
// override the page format
Book book = new Book();
// append all pages
book.append(new PDFPrintable(document), pageFormat, document.getNumberOfPages());
job.setPageable(book);
job.setPrintService(print);
job.print();
} catch (Exception e) {
e.printStackTrace();
}
}
一切都好,只需将该PDF动态设置为一页。我发现一些文章更接近于真正的匹配解决方案。
这个,例如:Create new single-page-PDF document from one page of a multipage PDF document
该代码有效,但我不知道如何将内容放入一页,它最终制作了原始文档的副本。
如果你能帮助我,我谢谢你!
【问题讨论】: