itext7 pdf to image

jkb*_*016 4 itext itextpdf

我正在使用iText7(java),我正在寻找一种方法将PDF页面转换为图像.在较旧的iText版本中,您可以这样做:

PdfImportedPage page = writer.getImportedPage(reader, 1);
Image image = Image.getInstance(page);
Run Code Online (Sandbox Code Playgroud)

但是iText7没有PdfImportedPage.

我的用例,我有一页pdf文件.我需要添加一个表并调整pdf内容的大小以适合单个页面.在旧的iText中,我会创建一个页面,添加表格,将现有的pdf页面转换为图像,调整图像大小并将调整后的图像添加到新页面.在iText7中有没有新的方法可以做到这一点.

感谢Bruno的回答,我使用以下代码:

PdfPage origPage = readerDoc.getPage(1);
Rectangle rect = origPage.getPageSize();
Document document = new Document(writerDoc);
Table wrapperTable = new Table(1);
Table containerTable = new Table(new float[]{0.5f,0.5f});
containerTable.setWidthPercent(100);
containerTable.addCell( "col1");
containerTable.addCell("col2");

PdfFormXObject pageCopy = origPage.copyAsFormXObject(writerDoc);
Image image = new Image(pageCopy);
image.setBorder(Border.NO_BORDER);
image.setAutoScale(true);
image.setHeight(rect.getHeight()-250);
wrapperTable.addCell(new Cell().add(containerTable).setBorder(Border.NO_BORDER));
wrapperTable.addCell(new Cell().add(image).setBorder(Border.NO_BORDER));
document.add(wrapperTable);
document.close();
readerDoc.close();
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie 10

请阅读iText 7的官方文档,更具体地说,请参阅第6章:重用现有PDF文档

在PDF中,有Form XObject的概念.甲表单x对象是一块PDF内容的存储页面的内容流外,因此x对象其代表外部物体.在Form XObject中使用Form这个词可能会令人困惑,因为人们可能会想到一个带有字段的可填写形式的表单.为避免这种混淆,我们在iText 5中引入了这个术语.PdfTemplate

PdfImportedPage您引用的类是以下的子类PdfTemplate:它是一段PDF语法,可以在另一个页面中重用.多年来,我们注意到人们也对这个词感到困惑PdfTemplate.

在iText 7中,我们回到了基础.在谈论Form XObject时,我们使用该类PdfFormXObject.在谈论PDF文件中的页面时,我们使用该类PdfPage.

这是我们PdfPage从现有文档中获取的方式:

PdfDocument origPdf = new PdfDocument(new PdfReader(src));
PdfPage origPage = origPdf.getPage(1);
Run Code Online (Sandbox Code Playgroud)

这就是我们在新文档中使用该页面的方式:

PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);
Run Code Online (Sandbox Code Playgroud)

如果你想用它pageCopy作为一个Image,只需像这样创建它:

Image image = new Image(pageCopy);
Run Code Online (Sandbox Code Playgroud)

  • @woohoo Java:[com.itextpdf.layout.element.Image](http://itextsupport.com/apidocs/iText7/latest/com/itextpdf/layout/element/Image.html); 在 C# 中:`iText.Layout.Element.Image`。请查阅 [Java API 文档](http://itextsupport.com/apidocs/iText7/latest/) 或 [C# 教程](https://developers.itextpdf.com/content/itext-7-jump-start -tutorial/sharp/chapter-1-introducing-basic-building-blocks),所有这些基本问题都得到了解答。**重要提示:** 我假设您使用的是 iText 7。 (5认同)
  • @BrunoLowagie,能否请您发布如何将转换后的pdf保存为png图像文件的示例? (2认同)