要在Apache PDFBox中静默打印PDF时忽略页边距和方向,您可以使用Java的PrinterJob类来实现。下面是代码示例:
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class SilentPrintPDF {
public static void main(String[] args) {
try {
// 加载PDF文档
PDDocument document = PDDocument.load(new File("input.pdf"));
// 创建打印作业
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintService(printJob.getPrintService()); // 设置打印机
// 设置打印属性
PageFormat pageFormat = printJob.defaultPage();
pageFormat.setOrientation(PageFormat.LANDSCAPE); // 设置页面方向
pageFormat.setPaper(document.getPage(0).getCropBox()); // 使用第一页的页面大小
// 设置打印页边距为0
double margin = 0;
pageFormat.setPaper(new MyPaper(pageFormat.getPaper(), margin));
// 设置打印监听器,以便在打印完成时关闭文档
printJob.setPageable(document);
printJob.print();
// 关闭文档和打印作业
document.close();
printJob.cancel();
} catch (IOException | PrinterException e) {
e.printStackTrace();
}
}
}
class MyPaper extends PageFormat {
private double margin;
public MyPaper(PageFormat pageFormat, double margin) {
this.margin = margin;
setOrientation(pageFormat.getOrientation());
setPaper(pageFormat.getPaper());
}
@Override
public double getImageableX() {
return super.getImageableX() + margin;
}
@Override
public double getImageableY() {
return super.getImageableY() + margin;
}
@Override
public double getImageableWidth() {
return super.getImageableWidth() - 2 * margin;
}
@Override
public double getImageableHeight() {
return super.getImageableHeight() - 2 * margin;
}
}
请确保将"input.pdf"
替换为您的PDF文件路径。此代码加载PDF文档并将其静默打印到默认打印机,忽略了页边距和方向。MyPaper
类用于自定义页面边距。