页面对象
页面对象是 PDF 页面内容流中的图形对象,例如文本、图片和路径。福昕 PDF SDK(Web)可读取指定页面中的图形对象,按点或矩形命中对象,也可添加、删除或调整对象属性。
相关接口包括:
PDFPage.getGraphicsObjectsCount():获取页面图形对象数量。PDFPage.getGraphicsObjectByIndex():按索引读取页面对象。PDFPage.getGraphicsObjectAtPoint():按 PDF 坐标点命中页面对象。PDFPage.getGraphicsObjectsByRect():按矩形范围读取页面对象。PDFPage.addGraphicsObject():添加文本、图片或路径对象。PDFPage.addImage():向页面添加图片对象。PDFPage.removeGraphicsObject():删除页面对象。GraphicsObject.getRect()、GraphicsObject.setRect()、GraphicsObject.setMatrix()、GraphicsObject.setFillColor()、GraphicsObject.setOpacity():读取或修改对象常用属性。TextObject.setText()、TextObject.setFontSize()、TextObject.setBold()、TextObject.setItalic():修改文本对象内容或样式。ImageObject.setRotation():设置图片对象旋转角度。
遍历页面对象
javascript
const page = await pdfDoc.getPageByIndex(0);
const count = await page.getGraphicsObjectsCount();
for (let i = 0; i < count; i++) {
const object = await page.getGraphicsObjectByIndex(i);
console.log(object.getType(), object.getRect());
}
按位置获取对象
getGraphicsObjectAtPoint(point, tolerance, type) 使用 PDF 坐标。type 可使用 PDFViewCtrl.PDF.constant.Graphics_ObjectType 中的对象类型。
javascript
const object = await page.getGraphicsObjectAtPoint(
[100, 100],
3,
PDFViewCtrl.PDF.constant.Graphics_ObjectType.All
);
也可以按矩形范围获取对象:
javascript
const objects = await page.getGraphicsObjectsByRect({
rect: { left: 100, right: 300, top: 700, bottom: 600 },
tolerance: 0,
type: PDFViewCtrl.PDF.constant.Graphics_ObjectType.All
});
添加图片对象
javascript
const imageBuffer = await fetch('/assets/logo.png').then(res => res.arrayBuffer());
await page.addImage(imageBuffer, {
left: 100,
right: 220,
top: 720,
bottom: 640
});
添加图形对象
PDFPage.addGraphicsObject(info) 可添加文本、图片或路径对象。不同对象类型需要不同参数。
javascript
await page.addGraphicsObject({
type: PDFViewCtrl.PDF.constant.Graphics_ObjectType.Text,
originPosition: { x: 100, y: 700 },
text: 'Hello Foxit',
fillColor: 0xFF000000,
font: {
standardId: PDFViewCtrl.PDF.constant.Font_StandardID.e_StdIDCourier
},
matrix: [1, 0, 0, 1, 0, 0]
});
修改或删除对象
javascript
const object = await page.getGraphicsObjectByIndex(0);
await object.setOpacity(0.8);
await object.setRect({
left: 100,
right: 300,
top: 720,
bottom: 650
});
await page.removeGraphicsObject(object);
修改页面内容后,应调用保存接口导出文件,并在 Viewer 中按需重绘。
javascript
await pdfViewer.redraw(true);
const file = await pdfDoc.getFile({
fileName: 'page-objects.pdf'
});