您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎么將SAP Document Builder的word控件設置成只讀模式,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
最近我正在從事一個客戶項目,客戶的一個要求是他們不希望word文檔在word控件中可編輯。
這意味著工具欄中的所有按鈕和菜單都應該被禁用。
image
The first idea comes to my mind is the flag “enableReadWrite“.
image
As documented in sap 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:stylesheet xmlns: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:output encoding="UTF-8" indent="no" method="xml" omit-xml-declaration="no" version="1.0"/> <!-- Match everything all nodes and attributes --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="w:settings"> <xsl:element name="w:settings"> <xsl:for-each select="@*"> <xsl:copy/> </xsl:for-each> <xsl:element name="w:documentProtection"> <xsl:attribute name="w:edit">readOnly</xsl:attribute> <xsl:attribute name="w:enforcement">1</xsl:attribute> </xsl:element> <xsl:copy-of select="./*"/> </xsl:element> </xsl:template></xsl:stylesheet>
and find a proper place to call the transformation:
DATA: lr_element TYPE REF TO if_wd_context_element, lv_file_data TYPE xstring, lv_ret TYPE i, lx_temp TYPE xstring, lv_msg TYPE string, lt_parms TYPE /ipro/tt_key_value_pair, ls_parm LIKE LINE OF lt_parms. lr_element = me->wd_context->get_element( ). CHECK lr_element IS NOT INITIAL. lr_element->get_attribute( EXPORTING name = 'BINARY' IMPORTING value = 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( EXPORTING iv_input_xstring = lx_settings iv_transform_name = '/IPRO/DOCXCC_PROTECT' it_parameters = lt_parms IMPORTING ev_result = lx_temp ev_ret = lv_ret ev_message = lv_msg ). lo_docx_settings->feed_data( lx_temp ). DATA(lx_docx_package) = lo_docx->get_package_data( ). lr_element->set_attribute( EXPORTING name = '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控件設置成只讀模式就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。