Как добавить пользовательские свойства для файлов DOCX в ruby - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь понять, как правильно добавить пользовательские свойства к .docx файлам программно в ruby. У меня также есть добавление office- js, в котором читаются эти пользовательские свойства, но об этом позже.

Вот шаги, которые я сейчас предпринимаю для добавления пользовательских свойств в файл .docx в ruby:

  1. Открытие документа с использованием гема Docx и чтение содержимого архива с использованием Docx:Document.open(filepath).zip
  2. Добавление в docProps/custom.xml файл с пользовательскими property элементами, которые я хочу, например:
<property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="matter.id">
    <vt:lpwstr>518</vt:lpwstr>
</property>
Добавление следующего элемента Override в файл [Content_Types].xml:
<Override PartName="/docProps/custom.xml" ContentType="application/vnd.openxmlformats-officedocument.custom-properties+xml"/>
Добавление следующего элемента Relationship в файл _rels/.rels:
<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties" Target="docProps/custom.xml"/>

Примечание. Значение атрибута Id определяется количеством имеющихся <Relationship> элементов.

После этих шагов: После запуска этого кода над пустым / вновь созданным документом я могу открыть файл в Word на моем компьютере, и мой офис- js add может успешно прочитать пользовательские свойства который я установил в своем ruby приложении.

Проблема: Когда я загружаю и открываю документ в Word Online Мой офис- js добавляем в не удается распознать настроенные пользовательские свойства.

Мой офис- js добавляет, читает и записывает пользовательские свойства, используя Microsoft Office- js apis, и при настройке свойств таким способом мое добавление возможность распознавать их как в Word, так и в Word Online, поэтому я почти уверен, что что-то упускаю при попытке установить свойства вручную в моей функции ruby.

Я пытался сравнить архивы обоих Файл .docx с пользовательскими свойствами, установленными моей функцией ruby, и тот же файл с пользовательскими свойствами, установленными с помощью моего надстройки, и я просто не вижу заметных различий, из-за которых Word Online не может распознать пользовательские свойства устанавливаются с использованием моего ruby кода.

К сожалению, нет, похоже, каких-либо драгоценных камней ruby, которые позволили бы мне редактировать пользовательские свойства в файле docx, как в office- js apis, и именно поэтому я прибег к тому, чтобы делать это вручную.

...