怎么将SAP Document Builder的word控件设置成只读模式
怎么将SAP Document Builder的word控件设置成只读模式
这篇文章将为大家详细讲解有关怎么将SAP Document Builder的word控件设置成只读模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
最近我正在从事一个客户项目,客户的一个要求是他们不希望word文档在word控件中可编辑。
这意味着工具栏中的所有按钮和菜单都应该被禁用。
image
The first idea comes to my mind is the flag “enableReadWrite“.
image
As documented insap help,it can fulfill my help but unfortunately it is deprecated. Regardless of this warning I have a try and found it does not work indeed.
然后我推测,如果上传的文档是只读的,那么工具栏肯定会被禁用。因此,问题变成了如何在上传过程中将文档标记为只读。
自word 2007以来,MS office的格式遵循所谓的“Open office”协议,其规范可在此处找到。
如果将文件类型扩展名从更改为。docx到。使用WinRAR压缩并打开它,您会发现该文档实际上是由多个单个文件组成的包(在SAP internal中称为文档部分)。可编辑性由文件设置控制。xml。
如果你不知道确切的语法,就用谷歌搜索。我在谷歌的解释中使用了:
现在任务非常简单,只需在文档源代码中添加必要的xml标记即可。您不需要手动解析文档源代码,因为SAP已经完成了这项工作。您可以重用标准类CL_DOCX_文档。
由于我需要在“设置”节点中插入文档保护节点,因此为此编写了一个简单的转换。魔术在第18行和第21行之间。
<xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"xmlns:v="urn:schemas-microsoft-com:vml"xmlns:w10="urn:schemas-microsoft-com:office:word"xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml"xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main"mc:Ignorable="w14"version="1.0"><xsl:outputencoding="UTF-8"indent="no"method="xml"omit-xml-declaration="no"version="1.0"/><!--Matcheverythingallnodesandattributes--><xsl:templatematch="@*|node()"><xsl:copy><xsl:apply-templatesselect="@*|node()"/></xsl:copy></xsl:template><xsl:templatematch="w:settings"><xsl:elementname="w:settings"><xsl:for-eachselect="@*"><xsl:copy/></xsl:for-each><xsl:elementname="w:documentProtection"><xsl:attributename="w:edit">readOnly</xsl:attribute><xsl:attributename="w:enforcement">1</xsl:attribute></xsl:element><xsl:copy-ofselect="./*"/></xsl:element></xsl:template></xsl:stylesheet>
and find a proper place to call the transformation:
DATA:lr_elementTYPEREFTOif_wd_context_element,lv_file_dataTYPExstring,lv_retTYPEi,lx_tempTYPExstring,lv_msgTYPEstring,lt_parmsTYPE/ipro/tt_key_value_pair,ls_parmLIKELINEOFlt_parms.lr_element=me->wd_context->get_element().CHECKlr_elementISNOTINITIAL.lr_element->get_attribute(EXPORTINGname='BINARY'IMPORTINGvalue=lv_file_data).DATA(lo_docx)=cl_docx_document=>load_document(lv_file_data).DATA(lo_main_part)=lo_docx->get_maindocumentpart().DATA(lo_docx_settings)=lo_main_part->get_documentsettingspart().DATA(lx_settings)=lo_docx_settings->get_data()./ipro/cl_docx_utilities=>transform(EXPORTINGiv_input_xstring=lx_settingsiv_transform_name='/IPRO/DOCXCC_PROTECT'it_parameters=lt_parmsIMPORTINGev_result=lx_tempev_ret=lv_retev_message=lv_msg).lo_docx_settings->feed_data(lx_temp).DATA(lx_docx_package)=lo_docx->get_package_data().lr_element->set_attribute(EXPORTINGname='BINARY'value=lx_docx_package).
after that the tag will be there in settings.xml:
image
The word control before upload document looks like below, buttons and menus available:
image
After upload, menu and button are disabled. If you try to edit the document, there will be notifications in the right pane to give you a hint that is not possible.
当然,此解决方案不适用于较低版本的MS word,如word2003。幸运的是,我的客户有足够的钱,他们已经在使用Office 2013,所以我不必为此担心。
关于怎么将SAP Document Builder的word控件设置成只读模式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
推荐阅读
-
word怎么把文字缩到最小(word 文档怎么设置最小值)
word文档怎么设置最小值?方法如下所示:1.刚建一个word2016文档,再打开文档将光标放在中间要插入到数值可以调节按钮控件...
-
文档排版布局(word 如何快速排版打印)
word如何快速排版打印?在打印键入之前一定得我记得先“打印预览”,在缩略图的过程中,文档都是这个可以可以编辑的。如果能你把工具...
-
word怎样一次复制整页的文本框(word 文档中表格文本框怎么批量复制)
word文档中表格文本框怎么批量复制?不过在此之前:先打开word,将鼠标随意放置在文本框之上,第二步:鼠标点击右键,参与截图。...
-
word(如何快速标记含有某几个字符的段落)(拼音标注指南 Word)
Word,如何快速标记含有某几个字符的段落?通过word的里查什么功能,也可以飞速标记含有什么某几个空格符的段落里,方法是什么万分...
-
文章中间有空白段落删不了(word 怎么删除中间而空格不变)
word怎么删除中间而空格不变?以officeword20为例有以下几种方法一:1、将光标定位在倒数第二页的末尾位置。2、按de...
-
word文档中怎么设置可编辑公式(word 表格,如何变成可编辑)
word表格,如何变成可编辑?1、必须再打开word文档,然后再再点表格进入到编辑状态。2、点击进入“布局”菜单,后再再点打开“...
-
wps如何把表格插入另一个工作表(WPS word 表格怎么合并)
WPSword表格怎么合并?1.然后打开WPSword,新建项空白文档。2.点击菜单直接插入表格:插到4*4行列表格。3.你选...
-
microsoft(word 停止工作了怎么办 word资源管理器停止工作.怎么办)
word资源管理器停止工作.怎么办?这是模板出问题了,删掉模板即可。急速删出模板的方法:依次点:开始→运行,再输入%appdata...
-
后端动态生成word或pdf的几种常见方法
-
工资9000竟不会用word?(男子实习一个月遭辞退!)