我正在使用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)
| 归档时间: |
|
| 查看次数: |
9890 次 |
| 最近记录: |