如何在Apache PDfBox中设置页面缩放选项

时间:2013-05-08 09:54:02

标签: pdfbox

在我的应用程序中,我正在使用Apache PDFBox渲染PDF文件并进行无声打印。

PDFBox可以很好地渲染PFD,但我面临的问题是缩放。 在这里,我想在打印PDF之前设置页面缩放。

在acrobat reader的打印弹出窗口中,有四种打印PDF的选项。   1 GT;适合   2 - ;真实大小   3 GT;缩小超大页面   4>自定义比例

这里我想将页面缩放设置为实际大小。我怎样才能使用Apache POI?

1 个答案:

答案 0 :(得分:3)

我有同样的问题,我觉得做这个简单的事情太难了。即使它不理想,我最终还是选择了以下内容 - 甚至不使用PDFBox打印。

以下代码一次一个地将页面转换为图像,并使用java2d调整大小并将其打印出来。

PDDocument pdfdoc = PDDocument.load(pdfPane.pdfFile);
@SuppressWarnings("unchecked")
final List<PDPage> pdfPages = pdfdoc.getDocumentCatalog().getAllPages();

PrinterJob pjob = PrinterJob.getPrinterJob();
pjob.setJobName(pdfPane.pdfFile.getName());
pjob.setPrintable(new Printable()
{
  @Override
  public int print( Graphics g, PageFormat pf, int page ) throws PrinterException
  {
    if (page > pdfPages.size())
      return NO_SUCH_PAGE;
    try
    {
      g.drawImage(pdfPages.get(page).convertToImage()
                ,(int)pf.getImageableX()
                ,(int)pf.getImageableY()
                ,(int)pf.getImageableWidth()
                ,(int)pf.getImageableHeight()
                ,null);
    }
    catch (IOException e)
    {
      LoggerUtil.error(e);
    }
    return PAGE_EXISTS;
  }
});
pjob.print();
pdfdoc.close();