【问题标题】:Visio .vsdx format unzip and zip corruptsVisio .vsdx 格式解压缩和 zip 损坏
【发布时间】:2020-09-02 23:09:10
【问题描述】:

我正在尝试修改 Visio 文件(Open XML 格式),而无需使用 Windows Visio 应用程序。我的第一个实验只是使用 7zip 解压缩使用 Visio 创建的已知良好的 .vsdx 文件。这都很好;我可以查看包裹的内容。在不做任何修改的情况下,我使用 7zip 重新压缩内容并重命名为 .vsdx,但是当我尝试使用 Visio 打开生成的新文件时,它抱怨文件已损坏。有没有办法手动将内容重新压缩到 Visio 接受为有效 Visio 文件的内容中?我怀疑可能会对文件的有效性进行某种检查,但找不到可能是什么。感谢您的任何意见。

【问题讨论】:

    标签: visio


    【解决方案1】:

    我会使用某种形式的 OpenXML 库,通过某种“认可的魔法”来了解文件的内容。

    了解您可能不想通过编程做任何您正在做的事情,所以我寻找了某种免费的编辑器。

    我发现了这个适用于 Visual Studio 的免费插件:

    https://marketplace.visualstudio.com/items?itemName=bsivanov.OpenXMLPackageEditorforVisualStudio

    它也适用于免费的“Microsoft Visual Studio Community 2019”。我刚刚打开了开发环境(又名:应用程序)并将 Visio .vsdx 文件拖到应用程序中。它以树状编辑器打开。我能够深入挖掘,直到找到 visio > pages > page1.xml “叶子”。在那里,我可以更改形状上的一些文本,然后保存“包”。

    无论这个工具做什么,它都能正确保存文件,并且我能够在 Visio 中打开更改后的 .vsdx 文件。而且我在编辑器里改的文字确实在Visio里面改了!

    【讨论】:

    • -感谢您的回复。我的意图是以编程方式对 Visio 文件进行更改,但这只是一个测试,看看是否还有更多的解压缩和压缩包并使文档工作。该工具的链接非常有用,我可以使用它来查看更改前后的区别。谢谢。
    【解决方案2】:

    我想我以前用过这个:

    “欢迎使用 Open XML SDK 2.5 for Office” https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk https://github.com/OfficeDev/Open-XML-SDK

    要在没有 Visio 应用程序的情况下编辑 Visio 文件,您仍然需要在一定程度上了解 Visio 的工作原理。

    一个简单的例子:

    我在其中一个 page.xml 文件中相当轻松地更改了形状上的文本。那很简单。然后我想添加那个形状的副本。复制和粘贴现有形状的整个 xml 块非常简单,然后更改 PinX 和 PinY 属性以将形状移动到页面上的不同位置。

    但您不会看到该形状,除非您在页面中为其指定一个唯一 ID。我测试了删除 ID 属性(以查看 Visio 是否会在打开时找出它并自动分配一个),但它不起作用。如果 ID 与另一个形状相同,则打开文件时会忽略该形状。将 ID 更改为未使用的 ID 后,我确实看到了形状的新副本。

    如果您创建分组形状或具有高级行为的形状(SmartShapes、ShapeSheet 公式等),那么这可能会变得复杂。由于公式需要通过 ID 引用其他形状,因此您需要管理 ID!对于简单的框和线等,通过 OpenXML 生成这些东西可能会很好(而且很快)。祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      相关资源
      最近更新 更多