Printing 使用pdfbox以字母us大小打印A4文件

Printing 使用pdfbox以字母us大小打印A4文件,printing,pdfbox,Printing,Pdfbox,我想在使用美国信纸的打印机上打印A4格式的PDF文档 首先,我的方法是在A4格式的打印机上打印文档 public static void printWithPdfBox(String strFilename) throws IOException, PrinterException { PrinterJob job = PrinterJob.getPrinterJob(); System.out.println("

我想在使用美国信纸的打印机上打印A4格式的PDF文档

首先,我的方法是在A4格式的打印机上打印文档

        public static void printWithPdfBox(String strFilename) throws IOException, PrinterException
        {

            PrinterJob job = PrinterJob.getPrinterJob();
            System.out.println("Printer name : "+ job.getPrintService().getName());
            PDDocument doc = new PDDocument();
            doc = PDDocument.load(strFilename);

            PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
            attributes.add(Sides.ONE_SIDED);

            job.setPageable(new PDPageable(doc, job));
            job.print(attributes);
        }
我试图添加此属性,但它不起作用:

attributes.add(MediaSizeName.NA_LETTER);
在打印方法的帮助下,提到:

请注意,某些属性可以通过等效的方法调用直接在PrinterJob上设置,(例如,copies:setcopies(int)、job name:setJobName(String)并通过PageFormat对象指定媒体大小和方向


如果有人有办法,我会感谢他的帮助;o)

您是否考虑过操纵加载的
PDDocument中的页面字典(更确切地说是mediabox和cropbox条目)以有效地打印我们的信件页面?不,我没有找到有关此解决方案的任何信息,我在apache java doc中搜索PDFBox,但什么也没有找到。你有任何这样的实现的例子或web链接吗?我手头没有任何代码,但实现起来并不太难。您必须迭代文档(
doc.getDocumentCatalog().getAllPages()
)的页面(
PDPage
实例)。对于每一个,您可以使用
findMediaBox
findCropBox
读取当前的mediabox(和裁剪框,如果有),将矩形更改为US字母尺寸,并分别使用
setMediaBox
setCropBox
存储。使用mediabox的解决方案运行良好。