提取数据区域中图片
# 提取数据区域中图片
- 查看本示例演示效果
- 本示例关键代码的编写位置,请参考“开始 - 快速上手”里您所使用的开发语言框架的最简集成代码
注意
本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。
在实际的开发过程中,有时会遇到希望提取Word文档中指定位置的图片保存到服务器的需求,PageOffice支持提取Word文档数据区域中的图片为JPG格式并上传到服务器。在服务器端创建PageOffice的Word命名空间中的WordDocumentReader对象并获取到DataRegion对象,再调用DataRegion对象的openShape方法就可以得到图片。
注意
PageOffice获取Word文档中指定位置的数据,是通过调用PageOffice获取数据区域的功能,实现此目的。在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“PO_”开头的书签才叫数据区域。
# 后端代码
在后端编写代码调用webOpen方法以表单提交模式docSubmitForm打开文件,设置数据区域Editing属性为true,并设置接收处理PageOffice客户端控件提交数据的服务器端后台方法为:saveData,如果用户编辑文档时,在数据区域插入了一张图片,那么点保存时,服务器端后台方法saveData中就可以通过DataRegion对象得到图片。
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
WordDocumentWriter wordDoc = new WordDocumentWriter();
DataRegionWriter dataRegion1 = wordDoc.openDataRegion("PO_image");
dataRegion1.setEditing(true);//放图片的数据区域是可以编辑的,其它部分不可编辑
poCtrl.setWriter(wordDoc);//此行必须
poCtrl.setSaveDataPage("saveData");
//webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
poCtrl.webOpen("D:\\documents\\test.docx", OpenModeType.docSubmitForm, "张三");
PageOfficeNetCore.PageOfficeCtrl poCtrl = new PageOfficeNetCore.PageOfficeCtrl(Request);
PageOfficeNetCore.Word.WordDocumentWriter wordDoc = new PageOfficeNetCore.Word.WordDocumentWriter();
PageOfficeNetCore.Word.DataRegionWriter dataRegion1 = wordDoc.OpenDataRegion("PO_image");
dataRegion1.Editing = true;//放图片的数据区域是可以编辑的,其它部分不可编辑
poCtrl.SetWriter(wordDoc);//此行必须
poCtrl.SaveDataPage = "SaveData";
//webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
poCtrl.WebOpen("doc/test.doc", PageOfficeNetCore.OpenModeType.docSubmitForm, "tom");
// Make sure to add code blocks to your code group
在服务器端后台方法saveData中,创建com.zhuozhengsoft.pageoffice.word命名空间中的WordDocumentReader对象,提取数据区域中的图片。
WordDocumentReader doc = new WordDocumentReader(request, response);
DataRegionReader dr = doc.openDataRegion("PO_image");
//将提取的图片保存到服务器上,图片的名称为:a.jpg
dr.openShape(1).saveAsJPG("D:\\documents\\a.jpg");
doc.close();
PageOfficeNetCore.Word.WordDocumentReader doc = new PageOfficeNetCore.Word.WordDocumentReader(Request, Response);
await doc.LoadAsync();
PageOfficeNetCore.Word.DataRegionReader dataRegion1 = doc.OpenDataRegion("PO_image");
//将提取的图片保存到服务器上,图片的名称为:a.jpg
dataRegion1.OpenShape(1).SaveAsJPG("D:\\documents\\a.jpg");
doc.Close();
// Make sure to add code blocks to your code group
# 前端代码
本示例无前端关键代码。
上次更新: 2025/07/21, 15:21:36