ADN Club > Другие продукты Autodesk

API для чтения DWF и DWFx

<< < (2/2)

VetalBY:
С примерами не помогу, но приходилось сталкиваться немного с dwfx (не путать с dwf) и поделюсь информацией, может будет полезно:
1. DWFX это по сути майкрософтоский XPS, для которого есть API на .NET. Правда, мне это не помогло, так как DWFX - это, скажем так, расширенный XPS и не все читается с помощью его API
2. DWFX (он же XPS) по сути своей есть zip архив. Поэтому можно изменить расширение на zip и просмотреть его. Изучив его структуру, можно попытаться всё, что нужно, вычитать с помощью .NET без проблем. Именно этим вариантом я и воспользовался.

Владимир Шу:

--- Цитата: VetalBY от 05-02-2019, 11:36:50 --- DWFX (он же XPS) по сути своей есть zip архив. Поэтому можно изменить расширение на zip и просмотреть его. Изучив его структуру, можно попытаться всё, что нужно, вычитать с помощью .NET без проблем. Именно этим вариантом я и воспользовался.
--- Конец цитаты ---
да это то понятно, по структуре он напоминает xlsx и подобные форматы и распарсить его не сложно... но вдруг есть нормальный инструмент... если нет, то придется делать самому =(

Александр Ривилис:
Владимир Шу,
В DWFToolkit есть примеры. И достаточно много. Но они все на С++.

Владимир Шу:

--- Цитата: Александр Ривилис от 05-02-2019, 14:26:28 ---Но они все на С++
--- Конец цитаты ---
Да, именно по этому я и спрашивал, может ли кто ни будь скачать пример на С#, который есть по ссылке.

ЗЫ.
Лано, для моих целей пока вполне достаточно разархивировать файл и из файла DWFDocumentSequence.dwfseq который в корне архива взять ссылку на файл манифеста, ну а там понятно: перебираешь dwf:Section , смотришь что за файл dwg и  что там за пометки в файле по ссылке в поле "markup object definition" ... для моих скромных потребностей пока достаточно...

VetalBY:
Вот примерный код по извлечению листов из dwfx и их свойств на c#


--- Код - C# [Выбрать] ---        private static void ProcessDwfx(string dwfxPath)        {            var pageListUri = new List<string>();            var container = Package.Open(dwfxPath, FileMode.Open);             try            {                foreach (var part in container.GetParts())                {                    if (part.Uri.ToString().EndsWith(".fpage"))                    {                        pageListUri.Add(part.Uri.ToString());                    }                }                 foreach (var pageUri in pageListUri)                {                    var xDoc = new XmlDocument();                     int nF = pageUri.LastIndexOf("/", StringComparison.InvariantCulture);                    var descriptorUri = pageUri.Substring(0, nF + 1) + "descriptor.xml";                    PackagePart part = container.GetPart(new Uri(descriptorUri, UriKind.Relative));                    Stream stream = part.GetStream(FileMode.Open, FileAccess.Read);                    StreamReader reader = new StreamReader(stream);                    string text = reader.ReadToEnd();                     nF = text.IndexOf(" ", StringComparison.InvariantCulture);                    text = text.Substring(0, nF + 1) + "xmlns:native=\"http://www.autodesk.com/global/dwf/ePlot.xsd\"" + text.Substring(nF);                     xDoc.PreserveWhitespace = true;                    xDoc.LoadXml(text);                     //парсим xDoc и достаем свойства листов                }             }            finally            {                container.Close();            }        }

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Перейти к полной версии