如何将更高的JPanel转换为pdf

时间:2012-04-29 14:09:40

标签: java swing pdf export

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

1 个答案:

答案 0 :(得分: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版)中的书,并查看如何从Swing进行常规PDF创建的第485页。

遍历每一页。

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();
}

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