如何使用pdfbox 2.0将PDF转换为postscript文件
我能够使用PDFBox(版本1.8.9)创建PDF,然后使用以下代码将其转换为PostScript文件:如何使用pdfbox 2.0将PDF转换为postscript文件,pdf,pdfbox,postscript,Pdf,Pdfbox,Postscript,我能够使用PDFBox(版本1.8.9)创建PDF,然后使用以下代码将其转换为PostScript文件: DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE; StreamPrintServiceFactory[] factories = StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor,
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
StreamPrintServiceFactory[] factories =
StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor,
DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType());
if (factories.length == 0) {
throw new PrinterException("No PostScript factories available");
}
PDDocument document = pdfGenerator.getDocument();
// Attributes are specified by https://docs.oracle.com/javase/7/docs/api/
// see package javax.print.attribute.standard
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.NA_LETTER);
aset.add(new PageRanges(1, document.getNumberOfPages()));
FileOutputStream fos = new FileOutputStream(filePathAndName);
factories[0].getPrintService(fos).createPrintJob().print(
new SimpleDoc(new PDPageable(document), flavor, null), aset);
fos.close();
document.close();
PDPageable对象似乎不在PDFBox 2.0代码中,我在迁移文档中没有看到指定的对象。如何使用PDFBox 2.0将PDF文件转换为PostScript文件
谢谢你你说得对,在中有一个PDPageable类,但相应的没有
但您要做的是转换为PostScript语言文档。我想我会帮你的
有关显示PDFPrintable正在使用的代码段,请参见另一个SO问题。我将它简化了一点,并将其包括在下面。你看起来熟悉吗?:-)
有一个PDF页面。如果您找到了问题的答案,将其作为答案发布会很有帮助。这样,其他人可以从你的发现中学习。谢谢。我最后做的是使用PDFBox读取PDF中的内容,并使用PDFBox从PDF中读取的x/y坐标自己编写post脚本命令。我不想自学PostScript命令,但这是我发现可以创建大小合理的PostScript文件的唯一方法。PDPageable类将每个PDF页面作为一个图像编写,因此post脚本文件比我需要的大很多倍。
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.NA_LETTER);
FileOutputStream fos = new FileOutputStream(filePathAndName);
StreamPrintService sps = factories[0].getPrintService(fos);
DocPrintJob dpj = sps.createPrintJob();
SimpleDoc sd = new SimpleDoc(new PDFPrintable(document, Scaling.ACTUAL_SIZE, false), flavor, null);
factories[0].getPrintService(fos).createPrintJob().print(
new SimpleDoc(new PDFPrintable(document, Scaling.ACTUAL_SIZE, false), flavor, daset), aset);
fos.close();
document.close();