Отчеты файла презентации Powerpoint будут повреждены после их копирования на онлайн-сервер sharepoint - PullRequest
0 голосов
/ 11 февраля 2020

Наша компания разрабатывает и распространяет надстройку Powerpoint.

Из надстройки я добавляю пользовательские Xml детали (также относящиеся к презентации и слайду) к презентации Powerpoint через DocumentFormat.Open Xml SDK V 2.10. С файлом все в порядке.

Затем я копирую файл в SharePoint онлайн. Не имеет значения, копирую ли я через наш путь WebDAV, веб-сайт SharePoint в браузере или последнюю версию через OneDrive.

Впоследствии поведение этого файла меняется:

  • Powerpoint открывает файл без проблем.
  • WinRar открывает файл и все включенные файлы данных без проблем.
  • 7-Zip открывает файл, но показывает ошибки заголовка для некоторых включенных презентаций. Пользовательские Xml файлы itemProperty.
  • Открыть Xml SDK 2.5 Инструмент повышения производительности для Microsoft Office не может открыть файл, показывает «Не удается открыть файл. Файл содержит поврежденные данные».
  • Из кода DocumentFormat.Open Xml API не может открыть файл, вызывает исключение System.IO.FileFormatException «Файл содержит поврежденные данные».

Открытие и сохранение «поврежденного» файла pptx с помощью Powerpoint оказывает исцеляющее воздействие на файл и может использоваться без проблем со всеми упомянутыми программами. Это наш текущий обходной путь. Но это не очень приятно.

Но после некоторых дальнейших запросов я обнаружил, что именно используемая застежка-молния имеет проблему с данными в файле presentation.pptx. Трассировка стека ошибки показывает, что первая ошибка генерируется в методе Validate объекта ZipIOLocalFileBlock:

 bei MS.Internal.IO.Zip.ZipIOLocalFileBlock.Validate(String fileName, ZipIOCentralDirectoryBlock centralDir, ZipIOCentralDirectoryFileHeader centralDirFileHeader)
   bei MS.Internal.IO.Zip.ZipIOLocalFileBlock.SeekableLoad(ZipIOBlockManager blockManager, String fileName)
   bei MS.Internal.IO.Zip.ZipIOBlockManager.LoadLocalFileBlock(String zipFileName)
   bei MS.Internal.IO.Zip.ZipArchive.GetFile(String zipFileName)
   bei MS.Internal.IO.Zip.ZipArchive.GetFiles()
   bei System.IO.Packaging.ZipPackage.ContentTypeHelper..ctor(ZipArchive zipArchive, IgnoredItemHelper ignoredItemHelper)
   bei System.IO.Packaging.ZipPackage..ctor(String path, FileMode mode, FileAccess access, FileShare share, Boolean streaming)
   bei System.IO.Packaging.Package.Open(String path, FileMode packageMode, FileAccess packageAccess, FileShare packageShare, Boolean streaming)
   bei System.IO.Packaging.Package.Open(String path, FileMode packageMode, FileAccess packageAccess, FileShare packageShare)
   bei DocumentFormat.OpenXml.Packaging.OpenXmlPackage.OpenCore(String path, Boolean readWriteMode)
   bei DocumentFormat.OpenXml.Packaging.PresentationDocument.Open(String path, Boolean isEditable, OpenSettings openSettings)
   bei DocumentFormat.OpenXml.Packaging.PresentationDocument.Open(String path, Boolean isEditable)

Я надеюсь, что есть кто-то, кто знает о формате файла pptx, о различиях между вариантами для сохранения презентации в Powerpoint и откройте Xml. (Есть несколько более очевидных различий, но обычно они кажутся правильными вариантами и не вызывают никаких проблем!) И особенно то, что в результате проверки молнии вызывает исключение FileFormatException. Кроме того, интересно, что сервер sharepoint меняет на наш custonXmls. Очевидно, что он добавляет некоторые собственные customxmls в офисные файлы.

В качестве альтернативы я хочу go продолжить свои исследования. Может быть, кто-то может сказать мне, если "System.IO.Packaging" и "WindowsBase", которые я ожидаю содержать MS.Internal.IO.Zip, с открытым исходным кодом и где я могу скачать проекты?

Спасибо за помощь, Карл

...