【问题标题】:How to convert higher JPanel to the pdf如何将更高的JPanel转换为pdf
【发布时间】:2012-04-29 14:09:40
【问题描述】:

我的面板高度为 1600。A4 格式的高度为 842。如何将此面板导出为两页的 pdf?或者我如何将此面板分成两半到两个图形,然后添加到第一页然后调用 document.newPage(); 并将第二个图形添加到第二页

【问题讨论】:

标签: java swing pdf export


【解决方案1】:

简而言之,假设您打算使用 iText,

您需要实现一个 java.awt.print.Pageable,就像普通的 Java 打印一样。在您的示例中,它将有 2 页,即 Printables。通常,在 Printable 方法中

print(Graphics graphics, PageFormat pageFormat, int pageIndex)

您将根据页码翻译传入的图形。例如在您的示例中按 pageIndex*842 进行翻译。那里可能有一个减号 - 以我的经验,你有 50:50 的机会来确定方向。 :-) 也可能需要担心利润空间。

然后,购买 iText in Action(第 2 版)一书并查看第 485 页,了解如何从 Swing 进行一般 PDF 创建。

遍历每一页。

for (int pageIndex=0; pageIndex< pageable.getNumberOfPages(); pageIndex++) {
   Graphics2D g2d = contentByte.createGraphics(width, height, fontMapper);
   Printable printable = pageable.getPrintable(pageIndex);
   PageFormat pageFormat = pageable.getPageFormat(pageIndex);
   int pageStatus = printable.print(g2d, pageFormat, pageIndex);
   if (pageStatus != Printable.PAGE_EXISTS)
      break;  // something screwey happenned
   g2d.dispose();
}

正如您可能已经猜到的那样,我一直在这样做,并且可能会在几天内发布一个包含更完整代码的博客。所以请继续关注。

【讨论】:

  • 嗯很好的例子。 bwt 还有其他一些用于导出的库可以做得更好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 2012-01-12
  • 2018-11-01
  • 2018-08-13
相关资源
最近更新 更多