首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >itext7 pdf到图像

itext7 pdf到图像
EN

Stack Overflow用户
提问于 2016-06-14 18:08:50
回答 1查看 19.7K关注 0票数 8

我正在使用iText7(java),并寻找一种方法来转换一个pdf页面到图像。在较早的iText版本中,您可以这样做:

代码语言:javascript
复制
PdfImportedPage page = writer.getImportedPage(reader, 1);
Image image = Image.getInstance(page);

但是iText7没有PdfImportedPage。

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

多亏了Bruno的回答,我用下面的代码实现了这个功能:

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-14 21:02:23

请阅读iText 7的官方文档,尤其是Chapter 6: Reusing existing PDF documents

在PDF中,有表单对象的概念。_Form对象是存储在页面内容流之外的一段PDF内容,因此XObject代表eXternal XObject。在表单XObject中使用表单这个词可能会让人感到困惑,因为人们可能会认为表单是带有字段的可填写表单。为了避免混淆,我们在iText 5中引入了术语PdfTemplate

您引用的类是PdfTemplate的子类:它是一段PdfImportedPage语法,可以在另一个页面中重用。多年来,我们注意到人们也被PdfTemplate这个词搞糊涂了。

在iText 7中,我们回到了基础知识。在讨论表单XObject时,我们使用类PdfFormXObject。在讨论PDF文件中的页面时,我们使用类PdfPage

下面是我们从现有文档中获取PdfPage的方法:

代码语言:javascript
复制
PdfDocument origPdf = new PdfDocument(new PdfReader(src));
PdfPage origPage = origPdf.getPage(1);

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

代码语言:javascript
复制
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);

如果您想要将pageCopy用作Image,只需像这样创建它:

代码语言:javascript
复制
Image image = new Image(pageCopy);
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37809019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档