Как открыть визио документ vsdx

Чем открыть файлы формата VSD и VSDX

Файлы с расширением .vsd и .vsdx предназначены для программы Microsoft Visio Viewer (vviewer.exe) и содержат визуальные объекты, текст, диаграммы и иную графическую информацию. Проблема в том, что далеко не все имеют возможность или желание пользоваться программой Microsoft Visio.

Для просмотра и редактирования файлов можно загрузить другие программы для любой из платформ (Windows, Mac, iOS, Android), воспользоваться онлайн-просмотром файлов в формате VSD/VSDX или конвертировать их в привычный PDF.

Хотя файлы Визио рассчитаны на диаграммы и векторную графику, они состоят из группы XML-файлов, которые находятся внутри ZIP-архива. Это усложняет конвертацию документа из одного формата в другой, поэтому выбор программ и бесплатных сервисов не слишком велик.

Как открыть визио документ vsdx

Как сообщается на официальном сайте поддержки Visio Professional 2013 https://support.office.com (на русском), для просмотра документов Visio в браузере и добавления примечаний другими пользователями не обязательно требуется установка Visio. Просмотр без установки софта доступен только в том случае, если диаграмма сохранена в SharePoint, а эта служба есть далеко не во всех версиях Windows и самой программы.

Как открыть визио документ vsdx

Онлайн конвертация VSD в PDF

Вот так выглядит функционал сервиса vsd-to-pdf на aconvert.com:
Как открыть визио документ vsdx

Windows

Linux

Android

MacOS и iOS

Nektony VSD Viewer для iOS и MacOS можно назвать самым дешевым решением для работы с расширениями Visio на Mac, но при этом отличается профессиональными возможностями и отличным исполнением (отзывы о программе исключительно положительные). Подойдет тем, кому возможностей бесплатного LibreOffice недостаточно, а тратиться на дорогостоящий софт нет желания.

Источник

Симптомы

Решение

Чтобы устранить эту проблему, установите следующий пакет обновления или пакет обеспечения совместимости для Visio:

2687468 описание Visio 2010 с пакетом обновления 2

Пакет обеспечения совместимости для Visio
Пакет обновления 2 (SP2) для Visio 2010 включает следующие улучшения и изменения для Visio 2010:

Не удается изменить содержимое, внедренного в файл Visio 2013, если содержимое хранится в другой документ Microsoft Office.

Дополнительные сведения

Important
Тщательно выполните действия, описанные в этом разделе. При неправильном изменении реестра могут возникнуть серьезные проблемы. До изменения его резервную копию для восстановления реестра в случае возникновения проблем.

Чтобы заблокировать приглашение загрузить пакет обеспечения совместимости Visio, выполните следующие действия после установки Visio 2010 с пакетом обновления 2.

Нажмите кнопку Пуск, выберите пункт Выполнить, в поле Открыть введите команду regedit и нажмите кнопку ОК

Найдите и выделите следующий подраздел реестра:

В меню Правка выберите пункт Создатьи затем щелкните Значение DWORD.

Введите V15ConverterPromptи нажмите клавишу ВВОД.

В области сведений щелкните правой кнопкой мыши V15ConverterPromptи выберите команду Изменить.

В поле значение введите 1, и нажмите кнопку ОК.

Закройте редактор реестра.

Источник

Формат VSDX: чем его открыть + особенности работы

Как открыть визио документ vsdx

Если вы работаете с графическим контентом, то могли сталкиваться с файлами VSDX – разберемся, что за формат и чем его открыть на ваших девайсах.

Как открыть визио документ vsdx

Содержание:

Определение

VSDX – это формат файлов, который был разработан для программы Visio от Microsoft.

Расширение позволяет работать с графическими чертежами любой сложности, а благодаря усовершенствованной технологии сжатия, вы сможете сохранить высокое качество графики в любой программе для просмотра VSDX.

Документ формата VSDX содержит сложные векторные графические элементы (диаграммы, электрические цепи, схемы алгоритмов, планировки помещений и прочее).

Данные файла хранятся с помощью разметки XML и заархивированного с помощью ZIP цифрового содержимого.

Возможности VSDX:

Как открыть визио документ vsdx

История создания

Программное обеспечение VISO работает с собственным бинарным форматом VSD.

С выходом новой сборки приложения, в 2013 году у пользователей появилась возможность работать с усовершенствованным VSDX.

Особенность VSDX заключается в объединении структуры файла.

При работе с этим форматом будет сохранена и форма, и структура документа.

В отличии от устаревшего VSD, который не архивирует контент файла.

Заметьте, к программе Visio относят сразу три формата:

Как открыть визио документ vsdx

Рис.2 – три типа форматов в MS Visio

Программы для Windows

В ОС Windows открыть файл VSDX можно с помощью нативного приложения Microsoft Visio.

Оно является частью программного пакета MS Office, но формально в стандартный набор офисного ПО входит только утилита для просмотра содержимого графических файлов Visio.

Для получения полной версии редактора необходимо скачивать и устанавливать ПО отдельно.

Как открыть визио документ vsdx

Рис.3 – окно приложения MS Visio

LibreOffice – это бесплатный кроссплатформенный редактор документов всех офисных форматов. С его помощью вы сможете просмотреть и содержимое VSDX.

Доступно право редактирования содержимого диаграмм и схем.

Единственный недостаток использования сторонних редакторов – отсутствие полного набора всех графических элементов.

При перемещении графического файла из Visio в LibreOffice внешний вид документа никак не видоизменяется, а все элементы картинки сохраняются с помощью технологии архивации содержимого.

Как открыть визио документ vsdx

Рис.4 – просмотр содержимого документа с помощью LibreOffice

Просмотр VSDX на Mac OS

Пользователи Mac OS тоже могу работать с файлами чертежей с помощью программы MS Visio.

Приложение доступно для покупки в официальном App Store.

Наиболее популярный просмотрщик VSDX для Mac OS – это Nektony Viewer.

Утилита позволяет получить простое средство для просмотра векторной графики совершенно бесплатно.

Присутствует поддержка гиперссылок и режим просмотра комментариев создателя документа.

Как открыть визио документ vsdx

Рис.5 – открытие чертежа в Nektony

Также, для MacOS доступен описанный выше открытый редактор LibreOffice.

С его помощью вы сможете вносить изменения в чертеж без необходимости в установке MS Visio.

Утилиты для Android и iPhone

В магазинах Google Play и App Store можно найти специальные программы для просмотра графики VSDX на ваших мобильных устройствах:

VSD and VSDX Viewer – наиболее простая и популярная программа для открытия контента файлов Визио. Работает как на IOS, так и на Android. Утилита способна синхронизировать файлы с Onedrive, DropBox, Google Drive, iCloud, автоматически подгружая новые файлы с вашего ПК на смартфон;

Nektony Viewer – редактор доступен не только для Mac OS, но и для мобильный Android и IOS. Загрузить приложение можно совершенно бесплатно. В результате, вы получаете простую и понятную утилиту для быстрого просмотра содержимого VSDX;

LibreOffice офисный редактор доступен во всех мобильных магазинах приложений. Удобство его работы заключается в быстрой загрузке даже самых сложный чертежей. Благодаря поддержке шрифтов, сохраняется все форматирование и комментарии создателя документа.

Как открыть визио документ vsdx

Рис.6 – просмотр чертежа на мобильном устройстве

Конвертирование VSDX в PDF

Если вы создали на своем компьютере файл VSDX и теперь нужно распечатать получившийся чертеж, советуем сначала конвертировать его в документ PDF. Так вы обезопасите себя от некорректного отображения файла на листе бумаги.

Конвертированный в PDF чертеж вы сможете легко перемещать на другой компьютер и просматривать на всех устройствах. Для преобразования VSDX в PDF используйте сервис Zamzar (https://www.zamzar.com/convert/vsdx-to-pdf/):

Как открыть визио документ vsdx

Рис.7 – сервис для конвертации Zamzar

Тематические видеоролики:

Источник

Программное управление форматами файлов Visio

Узнайте, как в Visual Studio 2012 создать решение для чтения пакетов с новым форматом файлов, используемым в Visio 2013, выбора частей в пакете, изменения данных в части и добавления новых частей в пакет.

Основные сведения об управлении форматами файлов Visio

Приложения Visio предыдущих версий сохраняли файлы в защищенном двоичном формате (VSD) или в однодокументном формате XML-данных документа Visio (VDX). В Visio 2013 появился новый формат файлов (VSDX), который основан на XML и технологии архивирования ZIP. Как и в предыдущих версиях Visio, файлы сохраняются в одном контейнере. В отличие от файлов, сохраненных в прежних версиях Visio, файлы нового формата можно открывать, читать, обновлять, изменять и создавать без автоматизации приложения Visio 2013. Разработчики, которые умеют управлять XML или работать с пространством имен System.IO.Packaging, могут быстро приступить к программному управлению файлами нового формата. Разработчики, которые уже работали с форматом XML-данных документа Visio в предыдущих версиях приложения, обнаружат, что многие структуры этого формата перенесены в новый формат.

В примерах кода в этой статье предполагается, что у вас есть элементарное понимание классов в пространствах имен System.Xml.Linq и System.IO.Packaging. > В этой статье также предполагается, что вы знаете основные понятия и терминологию Open Packaging Conventions. Вы должны быть знакомы с основными понятиями о пакетах, частях документов или частях пакетов, а также о связях. Дополнительные сведения см. в статье OPC: новый стандарт упаковки данных. > В коде показано, как создавать запросы LINQ для выбора XML. В большей части примеров кода для создания запросов LINQ используется синтаксис запросов. При необходимости вы можете изменить любой из имеющихся в коде запросов LINQ, используя синтаксис методов LINQ. Дополнительные сведения о синтаксисе запросов и синтаксисе методов LINQ см. в статье Синтаксис запросов и синтаксис методов в LINQ (C#)> В табл. 1 перечислены основные темы, с которыми вам необходимо ознакомиться, прежде чем вы приступите к работе с данной статьей.

Табл. 1. Основные понятия, необходимые для управления форматом файлов Visio 2013

Название статьиОписание
Общие сведения о формате файлов Visio (VSDX)В этом кратком обзоре описаны некоторые основные компоненты формата файлов Visio 2013. В статье рассказывается о соглашениях Open Packaging Conventions (OPC), так как они применяются в формате файлов Visio 2013. Кроме того, в статье перечислен ряд отличий формата файлов Visio 2013 и предыдущего формата файлов XML-данных документа Visio (VDX).
OPC: новый стандарт упаковки данныхВ этой статье MSDN Magazine описаны соглашения Open Packaging Conventions в виде основных понятий.
Основные понятия Open Packaging Conventions
Общие сведения о форматах файлов Office (2007) Open XML
В этих двух статьях рассказывается, каким образом соглашения Open Packaging Conventions используются в файлах Microsoft Office. В статьях описано, как работают связи в пакете, и приведены примеры кода.

Создание VSDX-файла и решения Visual Studio

Прежде чем приступить к действиям, описанным в этой статье, вам потребуется создать файл Visio 2013, который вы будете открывать и которым будете управлять. Документ, используемый в примерах кода в этой статье, содержит одну страницу с двумя соединенными фигурами, при этом одна из фигур представляет собой фигуру «Начало/конец» из шаблона «Простая блок-схема».

Создайте файл Visio 2013, выполнив указанные ниже действия. Вы будете использовать его на следующих этапах изучения этой статьи.

Создание файла в Visio 2013

Откройте Visio 2013.

Создайте документ на основе шаблона «Простая блок-схема». Для этого щелкните КАТЕГОРИИ, Блок-схема, Простая блок-схема, Создать.

В окне Фигуры перетащите фигуру Начало/конец на холст.

Выберите новую фигуру «Начало/конец» на полотне и введите текст Begin Process (Начать процесс).

В окне Фигуры перетащите фигуру Процесс на холст.

Выберите новую фигуру «Процесс» на полотне и введите текст Perform some task (Выполнить задачу).

В контекстном меню фигуры «Начало/конец» выберите пункт Добавление на страницу одной соединительной линии и нарисуйте соединительную линию между фигурами «Начало/конец» и «Процесс» на холсте, как показано на рис. 1.

Рис. 1. Простой документ Visio 2013

Как открыть визио документ vsdx

Сохраните файл на рабочем столе в формате VSDX. Для этого щелкните Файл, Сохранить как, Компьютер, Рабочий стол.

В диалоговом окне Сохранить как в поле Имя файла введите Visio Package, в списке Тип файла выберите пункт Документ Visio (*.vsdx) и нажмите кнопку Сохранить.

Закройте файл, а затем закройте Visio 2013.

Иногда Visio успешно открывает файл, даже если в файле имеются проблемы. Чтобы приложение Visio сообщало вам о проблемах с файлами при тестировании решений, которые управляют файлами Visio на уровне пакета файлов, включите функцию предупреждений об открытии файлов. > Чтобы включить функцию предупреждений об открытии файлов в Visio 2013, щелкните Файл, Параметры, Дополнительно. В разделе Сохранение и открытие щелкните Предупреждать об открытии файлов.

В этих процедурах для управления файлом Visio Package.vsdx используется консольное приложение Windows. Создайте и настройте консольное приложение Windows в Visual Studio 2012, выполнив указанные ниже действия.

Создание решения в Visual Studio 2012

В меню Файл щелкните Создать, Проект.

В диалоговом окне Создать проект разверните пункт Visual C# или Visual Basic и щелкните Windows, Консольное приложение.

В поле Имя введите VisioFileAccessor, выберите расположение для проекта и нажмите кнопку OK.

В меню Проект выберите пункт Добавить ссылку.

В диалоговом окне Менеджер ссылок в разделе Сборки щелкните Платформа и добавьте ссылку на компоненты System.Xml и WindowsBase.

В файле Program.cs или Module1.vb для проекта добавьте следующие директивы using (инструкции Imports в Visual Basic):

Кроме того, в файле Program.cs или Module1.vb file перед концом метода Main класса Program (Module1 в Visual Basic) добавьте указанный ниже код, который приостанавливает выполнение консольного приложения, пока пользователь не нажмет клавишу.

Открытие файла Visio 2013 как пакета

Чтобы можно было управлять какими-либо данными в файле, необходимо сначала открыть файл в объекте Package, который содержится в пространстве имен System.IO.Packaging. Объект Package представляет весь файл Visio. Он предоставляет доступ к элементам, с помощью которых можно выбирать отдельные части документа в пакете файла. В частности, класс Package предоставляет доступ к статическому методу Open(String, FileMode, FileAccess), с помощью которого можно открывать файл как пакет. Кроме того, он предоставляет доступ к методу Close(), с помощью которого можно закрыть пакет после работы с ним.

Для открытия файла Visio в объекте Package рекомендуется использовать блок using, чтобы не пришлось явно закрывать пакет файла по завершении работы с ним. Кроме того, можно явно вызвать метод Package.Close в блоке finally конструкции try/catch/finally.

Используя указанный ниже код, можно получить полный путь к файлу Visio Package.vsdx с помощью объекта FileInfo, передать этот путь в качестве аргумента в метод Package.Open и возвратить объект Package в вызывающий код.

Открытие VSDX-файла в виде пакета

После метода Main в классе Program (или Module1 в Visual Basic) добавьте указанный ниже код.

В методе Main класса Program (или Module1 в Visual Basic) добавьте указанный ниже код.

Выбор и чтение частей пакета из пакета

С помощью кода в указанной ниже процедуре можно получить объект PackagePartCollection из объекта Package в виде коллекции, выполнить итерацию объектов PackagePart в этой коллекции, а затем записать универсальный код ресурса (URI) и тип контента каждого объекта PackagePart в консоль.

Выполнение итерации частей пакета в пакете

После метода OpenPackage в классе Program (или Module1 в Visual Basic) добавьте указанный ниже код.

Добавьте следующий код в блок using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic):

Выполните отладку решения, нажав клавишу F5. По завершении работы программы выйдите из нее, нажав любую клавишу.

Консольное приложение создает примерно следующие выходные данные (для краткости часть выходных данных опущена):

Package part URI: /docProps/app.xml

Content type: application/vnd.openxmlformats-officedocument.extended-properties+xml

Package part URI: /docProps/core.xml

Content type: application/vnd.openxmlformats-officedocument.core-properties+xml

Package part URI: /docProps/custom.xml

Content type: application/vnd.openxmlformats-officedocument.custom-properties+xml

Package part URI: /docProps/thumbnail.emv

Content type: image/x-emf

Package part URI: /visio/document.xml

Content type: application/vnd.ms-visio.drawing.main+xml

Package part URI: /visio/_rels/document.xml.rels

Content type: application/vnd.openxmlformats-package.relationships+xml

Package part URI: /_rels/.rels

Content type: application/vnd.openxmlformats-package.relationships+xml

Press any key to continue …

Обычно требуется выбрать один объект PackagePart, не выполняя итерацию всех таких объектов. Вы можете получить объект PackagePart из объекта Package, используя его связь с объектом Package или другим объектом PackagePart. В формате файлов Visio 2013 связь представляет собой дискретный объект, который описывает, каким образом часть документа связана с пакетом файла или как две части документа связаны друг с другом. Например, сам пакет файла Visio 2013 имеет связь со своей частью Visio Document, а часть Visio Document имеет связь с частью Windows. Эти связи представлены как экземпляры классов PackageRelationship или PackageRelationshipCollection.

Класс Package предоставляет доступ к нескольким методам, которые используются для получения связей и содержатся в нем в виде объектов PackageRelationship или PackageRelationshipCollection. С помощью метода GetRelationshipsByType(String) вы можете создать экземпляр объекта PackageRelationshipCollection, содержащий объекты PackageRelationship одного определенного типа. Безусловно, чтобы использовать метод Package.GetRelationshipsByType, вы должны знать, какой тип связи необходим вам. Типы связей представляют собой строки в формате пространства имен XML. Например, тип связи части Visio Document — https://schemas.microsoft.com/visio/2010/relationships/document.

После того как вы получите сведения о связи объекта PackagePart с объектом Package или другим объектом PackagePart (то есть когда у вас будет объект PackageRelationship, который ссылается на необходимый вам объект PackagePart), вы сможете использовать эту связь для получения универсального кода ресурса (URI) этого объекта PackagePart. После этого можно передать универсальный код ресурса (URI) в метод Package.GetPart, чтобы возвратить объект PackagePart.

Кроме того, вы можете получить ссылку на определенный объект PackagePart, используя только метод Package.GetPart и универсальный код ресурса (URI) объекта PackagePart. В этом случае можно исключить этап получения связей части пакета. Некоторые части пакета в пакете файла Visio можно сохранять в расположения, отличные от расположений, используемых по умолчанию, в пакете. Не следует рассчитывать на то, что часть пакета всегда будет расположена в одном и том же универсальном коде ресурса (URI) для каждого файла. > Вместо этого для доступа к отдельным объектам PackagePart рекомендуется использовать связи.

Выполните указанные ниже действия, чтобы получить объект PackagePart (часть Visio Document), используя объект PackageRelationship из объекта Package, который ссылается на часть.

Выбор определенной части пакета в пакете с использованием связи

После метода IteratePackageParts в классе Program (или Module1 в Visual Basic) добавьте указанный ниже метод.

Замените код в блоке using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic) указанным ниже кодом.

Как было сказано выше, вы также можете получать объекты PackagePart, используя их связи с другими объектами PackagePart. Это важно, так как в документах Visio любой сложности у большинства объектов PackagePart нет связи с объектом Package. Например, у отдельной части Page Content в пакете файла (то есть /visio/pages/page1.xml) имеется связь с частью Page Index (то есть /visio/pages/pages.xml), но не с самим пакетом файла. Если у вас нет точного универсального кода ресурса (URI) отдельной страницы в пакете, вы можете использовать ее связь с частью Page Index, чтобы получить ссылку на нее.

Класс PackagePart предоставляет доступ к методу GetRelationshipsByType(String), который можно использовать для возврата объекта PackageRelationshipCollection, содержащего объект PackageRelationship только одного типа. Если у вас есть объект PackageRelationshipCollection, вы можете выбрать необходимый вам объект PackageRelationship из коллекции и сослаться на объект PackagePart.

С помощью указанного ниже кода можно получить объект PackagePart из объекта Package, используя его связь с другим объектом PackagePart (получив объект PackageRelationship из последнего).

Выбор определенной части пакета с использованием ее связи с другой частью пакета

После метода GetPackagePart в классе Program (или Module1 в Visual Basic) добавьте указанный ниже метод перегрузки.

Добавьте указанный ниже код в блок using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic) после кода, указанного в предыдущей процедуре. (Не удаляйте код, который вы добавили в предыдущей процедуре.)

Чтобы можно было вносить изменения в XML, включенный в часть документа, необходимо сначала загрузить документ XML в объект, который позволяет читать XML c помощью классов XDocument или XmlDocument. Оба эти класса предоставляют доступ к методам, используемым для решения таких задач, как выбор элементов XML, содержащихся в документах XML, создание, чтение и запись атрибутов, а также вставка новых элементов XML в документ.

С помощью класса XDocument можно создавать запросы к XML, используя LINQ. Используя LINQ, можно легко выбирать отдельные элементы из документа XML, создавая запросы, а не выполняя итерацию всех элементов в коллекции и не проверяя их, чтобы выбрать необходимые элементы. По этим причинам в процедурах, описанных ниже в этой статье, для работы с XML используется класс XDocument и другие классы пространства имен System.Xml.Linq.

С помощью указанных ниже процедур можно открыть объект PackagePart как документ XML в объекте XDocument.

Чтение XML в части пакета

После последней перегрузки для метода GetPackagePart в классе Program (или Module1 в Visual Basic) добавьте указанный ниже метод.

Добавьте указанный ниже код в блок using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic) после кода, указанного в предыдущей процедуре.

Выбор и изменение данных XML в части пакета

После загрузки части документа в объект XDocument для выбора элементов XML и внесения изменений в документ XML можно использовать LINQ. Вы можете изменять данные XML, добавлять или удалять данные, а затем сохранять документ XML обратно в часть документа.

Самая распространенная задача управления форматом файлов Visio — выбор определенных элементов или коллекций элементов XML в документе. Пространство имен System.Xml.Linq включает класс XElement, который представляет элемент XML. С помощью класса XElement можно на детальном уровне получить доступ к данным, содержащимся в файле Visio, от отдельных элементов Shape до элементов ValidationRule (в качестве примера).

С помощью указанного ниже кода можно выбрать элементы Shape из объекта XDocument (содержащего часть Page Contents), а затем выбрать определенный элемент Shape.

Выбор определенного элемента в части пакета

После метода GetXMLFromPart в классе Program (или Module1 в Visual Basic) добавьте указанный ниже метод.

После метода GetXElementsByName в классе Program (или Module1 в Visual Basic), описанного на предыдущем этапе, добавьте указанный ниже метод.

Добавьте указанный ниже код в блок using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic) после кода, указанного в предыдущей процедуре.

После получения ссылки на объект XElement, содержащийся в объекте XDocument, вы можете управлять им, как и любыми другими данными XML, и, соответственно, изменять данные, содержащиеся в файле Visio. Например, если при открытии в Visio у какой-либо фигуры имеется текст, соответствующий элемент Shape будет содержать по крайней мере один элемент Text. Если вы измените значение этого элемента Text, то при просмотре файла в Visio у текст фигуры изменится.

Добавьте указанный ниже код в блок using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic), чтобы изменить текст в фигуре Start/End (Начало/конец) с Begin process (Начать процесс) на Start process (Запустить процесс).

В предыдущем примере кода существующий текст фигуры и строка, используемая для его замены, содержат одинаковое количество символов. Кроме того, обратите внимание на то, что запрос LINQ изменяет значение последнего дочернего узла возвращаемого элемента (который в данном случае представляет собой текстовый узел). Это сделано, чтобы не допустить изменения параметров элемента cp, который представляет собой дочерний элемент элемента Text. > Если программно изменить текст фигуры путем перезаписи всех дочерних элементов элемента Text, это может привести к нестабильности файла. Как показано в примере выше, форматирование текста представлено элементами cp в элементе Text в файле. Определение форматирования хранится в родительском элементе Section. Если эти два элемента информации станут несогласованными, файл может вести себя непредсказуемо. Приложение Visio исправляет многие виды несогласованности, но лучше убедиться, что все изменения, внесенные программным способом, согласованы. В этом случае вы сможете контролировать поведение файла.

Когда вы вносите изменения в XML части документа, эти изменения хранятся только в памяти. Чтобы сохранить их в файл, необходимо сохранить XML обратно в часть документа.

В указанном ниже коде показано, как с помощью классов XmlWriter и XmlWriterSettings записать XML обратно в часть пакета. Несмотря на то что для сохранения XML обратно в часть можно использовать метод Save(), классы XmlWriter и XmlWriterSettings позволяют более тонко управлять выводом данных, в том числе указывать тип кодировки. Класс XDocument предоставляет доступ к методу WriteTo(XmlWriter), который берет объект XmlWriter и записывает XML обратно в поток.

С помощью указанных ниже действий можно сохранить XML из страницы Visio обратно в часть Page Contents.

Сохранение измененного XML обратно в пакет

После метода GetXElementByAttribute в классе Program (или Module1 в Visual Basic), описанного на предыдущем этапе, добавьте указанный ниже метод.

Добавьте указанный ниже код в блок using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic) после кода, указанного в предыдущей процедуре.

Выполните отладку решения, нажав клавишу F5. По завершении работы программы выйдите из нее, нажав любую клавишу.

Откройте файл Visio Package.vsdx в Visio 2013.

Теперь фигура «Начало/конец» должна содержать текст Start process (Запустить процесс).

Пересчет данных в файле

При внесении некоторых изменений в данные в файле приложению Visio может потребоваться пересчитать документ при открытии файла. В Visio имеется большое количество логики для схем, особенно для связей фигур (то есть когда одна фигура зависит от другой) и соединения фигур. Если изменить какие-либо данные, которые используются в пользовательской логике, приложению Visio потребуется распространить изменения на все затронутые вычисляемые данные в файле.

Формат файла Visio 2013 включает пару методов, которые вы можете использовать для пересчета данных в файле. Существует три типа сценариев, которые необходимо учесть, принимая решение о том, необходимо ли выполнить пересчет в файле Visio, и о том, как сделать это.

Изменения данных не затрагивают другие значения в формате файла. Вам не нужно добавлять дополнительные инструкции в Visio для пересчета документа. Как было показано выше, вы можете часто изменять текст фигуры без необходимости пересчитывать документ.

Изменения данных ограничиваются изменением значений ячеек ShapeSheet в XML и при этом имеются другие значения ShapeSheet, зависящие от этих данных. В этом случае необходимо добавить инструкцию по обработке XML (используя класс XProcessingInstruction) в элемент Cell, который был изменен. Например, ячейка ThemeIndex для фигуры влияет на значения нескольких других ячеек ShapeSheet, содержащихся в фигуре. Если вы измените ячейку ThemeIndex в самом файле (например, элемент Cell со значением N, равным ThemeIndex), то для обновления зависимых значений вам придется добавить инструкцию по обработке в элемент Cell.

Изменения данных влияют на расположение соединительных линий или точек соединений. Вот еще одна ситуация: в данные ShapeSheet внесено много изменений, и вы хотите пересчитать весь документ с помощью одной инструкции (а не добавлять отдельные инструкции по обработке для каждого изменения). В этом случае вы можете дать приложению Visio указание пересчитать весь документ при открытии документа. Для этого добавьте свойство RecalcDocument в часть Custom File Properties (/docProps/custom.xml) пакета Visio. Пример сценария такого типа — изменение положения или размера фигур на связанной схеме.

Учтите, что это самый затратный вариант с точки рения производительности.

Выполните указанные ниже действия, чтобы вставить элемент Cell в элемент Shape, где из-за нового значения необходимо пересчитать другие элементы Cell в том же объекте Shape. Новый элемент Cell включает инструкцию по обработке в виде дочернего элемента. Это позволяет сообщить приложению Visio о том, что необходимо выполнить локальный пересчет.

Пересчет значений для одной фигуры

Замените код из двух предыдущих примеров (изменение текста фигуры и вызов метода SaveXDocumentToPart ) в блоке using в методе Main класса Program (в блоке Using метода Main в модуле Module1 в Visual Basic) указанным ниже кодом.

Выполните отладку решения, нажав клавишу F5. По завершении работы программы выйдите из нее, нажав любую клавишу.

Откройте файл Visio Package.vsdx в Visio 2013. Теперь у фигуры «Начало/конец» должен быть другой цвет заливки.

Цвет фигуры зависит от значения ячейки ThemeIndex: оно определяет активную тему, из которой фигура наследует параметры. В предыдущем примере фигура настроена так, чтобы наследовать параметры другой темы (ячейка ThemeIndex имеет значение 25). Если вы не используете инструкцию по обработке, цвет текста фигуры (который также зависит от значения ячейки ThemeIndex) не будет пересчитан. Цвет заливки фигуры изменится на белый, а текст будет по-прежнему белый и станет нечитаемым. Кроме того, если не использовать инструкцию по обработке, Visio может обновить фигуру позже, и файл будет в нестабильном состоянии, при котором значения параметров форматирования фигуры могут быть обновлены непредсказуемым образом.

Если вы изменяете данные в файле таким образом, что приложению Visio требуется пересчитать документ (например, изменяете положение связанной фигуры, из-за чего приложению Visio необходимо принудительно изменить маршруты соединительных линий), вам необходимо добавить инструкцию по пересчету в файл Visio. Чтобы создать инструкцию, добавьте элемент property, атрибут name которого имеет значение RecalcDocument, в XML в часть Custom File Properties пакета файла Visio. Рекомендуется проверить часть Custom File Properties и убедиться, что инструкция RecalcDocument еще не зарегистрирована в файле.

С помощью указанного ниже кода можно изменить значение ячейки PinY фигуры «Начало/конец» из предыдущих примеров. Этот код выбирает элемент Cell, который содержит данные ячейки PinY в виде объекта XElement, путем использования значения его атрибута N. Затем код добавляет инструкцию по пересчету в часть Custom File Properties файла Visio.

Пересчет всего документа, когда он открыт

После метода SaveXDocumentToPart в классе Program (или Module1 в Visual Basic), описанного на предыдущем этапе, добавьте указанный ниже метод.

После метода RecalcDocument в классе Program (или Module1 в Visual Basic), описанного на предыдущем этапе, добавьте указанный ниже метод.

Замените код из предыдущего примера в блоке using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic) указанным ниже кодом.

Выполните отладку решения, нажав клавишу F5. По завершении работы программы выйдите из нее, нажав любую клавишу.

Откройте файл Visio Package.vsdx в Visio 2013.

Теперь фигура «Начало/конец» должна быть расположена в 2 дюймах от верхнего края схемы. Маршрут соединительной линии между фигурами «Начало/конец» и «Процесс» должен быть изменен согласно изменениям макета. Если не добавить свойство RecalcDocument в файл, положение фигуры изменится, а маршрут соединительной линии не будет изменен, и соединительная линия не будет вести к новому расположению фигуры.

Добавление новой части пакета в пакет

Один из самых распространенных сценариев изменения пакета файла — добавление новой части документа в пакет. Например, если вы хотите добавить страницу в документ Visio путем добавления контента в пакет, вам потребуется добавить часть Page Contents в пакет.

Процесс добавления новой части в пакет прост.

Создайте документ XML с данными для объекта PackagePart. Уделите особое внимание пространствам имен XML, управляющим схемой для определенного типа документа XML, который вы создаете.

Создайте файл, в котором будет содержаться XML, и сохраните его в расположение в объекте Package.

Создайте необходимые связи между новым объектом PackagePart и объектом Package или другими объектами PackagePart.

Обновите все существующие части, которые должны ссылаться на новую часть. Например, если вы добавляете новую часть Page Contents (новую страницу) в файл, вам также потребуется обновить часть Page Index (файл /visio/pages/pages.xml), чтобы она включала правильные сведения о новой странице.

Выполните указанные ниже действия, чтобы создать часть Ribbon Extensibility в файле Visio. Новая часть Ribbon Extensibility добавляет на ленту новую вкладку с одной группой, содержащей одну кнопку.

Создание части пакета

После метода CheckForRecalc в классе Program (или Module1 в Visual Basic) из предыдущей процедуры добавьте указанный ниже метод.

После метода CreateCustomUI в классе Program (или Module1 в Visual Basic), описанного на предыдущем этапе, добавьте указанный ниже метод.

Замените весь код в блоке using в методе Main класса Program (блок Using метода Main в модуле Module1 в Visual Basic) указанным ниже кодом.

Выполните отладку решения, нажав клавишу F5. По завершении работы программы выйдите из нее, нажав любую клавишу.

Откройте файл Visio Package.vsdx в Visio 2013 и перейдите на вкладку CUSTOM (Настраиваемая).

При открытии файла в Visio 2013 настроенная лента выглядит, как показано на рис. 2.

Рис. 2. Вкладка Custom (Настраиваемая) на ленте Visio 2013

Как открыть визио документ vsdx

Благодарности

Мы хотим поблагодарить Visio MVP Эла Эдланда (Al Edlund) за его вклад в создание примеров кода, изложенных в данной технической статье. Эл — признанный специалист по управлению форматами файлов Visio, в том числе форматом XML-данных документа Visio (VDX) и новым форматом файлов Visio (VSDX). Эл создал проекты, которые позволяют программным способом изучить форматы файлов Visio и показать их внутреннюю структуру.

Дополнительные сведения о том, как Эл работает с форматом файлов Visio, см. по ссылкам в разделе «Дополнительные ресурсы» ниже.

См. также

Видеоролик pkgVisio_pt1 на веб-сайте YouTube.

Видеоролик pkgVisio_pt2 на веб-сайте YouTube.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *