29

我想使用 itext 生成一个 pdf。我会在某些时候添加内容以进行分页。我需要插入几个单独的 conenidos 依赖源,所以我要求用户在单独的页面上这样做。有任何想法吗???

4

2 回答 2

53

任何在 iText7 中寻找解决方案的人,请使用来自@BadLeo 的解决方案,即使用document.add(new AreaBreak());

以下答案适用于 7 之前的版本。

调用document.newPage()告诉 iText 将后续对象放置在新页面上。只有在您放置下一个对象时,才会真正创建新页面。此外,newPage()仅当当前页面不为空白时才创建新页面;否则,它被忽略;你可以用它setPageBlank(false)来克服它。

请参阅下面的链接以获取示例: http: //itextpdf.com/examples/iia.php ?id=99 (编辑:dead 404)

由于上述链接已失效,因此为直到使用 iText7 之前版本的任何人添加示例代码。

/**
 * Creates from the given Collection of images an pdf file.
 *
 * @param result
 *            the output stream from the pdf file where the images shell be written.
 * @param images
 *            the BufferedImage collection to be written in the pdf file.
 * @throws DocumentException
 *             is thrown if an error occurs when trying to get an instance of {@link PdfWriter}.
 * @throws IOException
 *             Signals that an I/O exception has occurred.
 */
public static void createPdf(final OutputStream result, final List<BufferedImage> images)
  throws DocumentException, IOException
{
  final Document document = new Document();
  PdfWriter.getInstance(document, result);
  for (final BufferedImage image : images)
  {
    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(image, "png", baos);
    final Image img = Image.getInstance(baos.toByteArray());
    document.setPageSize(img);
    document.setPageBlank(false);
    document.newPage();
    img.setAbsolutePosition(0, 0);
    document.add(img);
  }
  document.close();
}
于 2013-06-19T18:21:19.367 回答
20

对于 iText7 尝试:

document.add(new AreaBreak());

来源:http: //itextsupport.com/apidocs/itext7/7.0.0/com/itextpdf/layout/element/AreaBreak.html

于 2016-11-11T09:09:51.607 回答