Как отобразить документ ворд в wpf c
Перейти к содержимому

Как отобразить документ ворд в wpf c

  • автор:

Как отобразить документ ворд в wpf c

Фиксированные документы характеризуются точной неизменной компоновкой и предназначены преимущественно для печати, но могут использоваться также и для чтения текста с экрана. К таким документам в WPF относятся документы на основе XPS. Для просмотра XPS-документа используется элемента DocumentViewer . В качестве содержимого DocumentViewer принимает элемент FixedDocument , который как раз и представляет фиксированный документ.

Фиксированный документ FixedDocument может принимать различное количество страниц. Каждая страница представляет элемент PageContent . В этот элемент помещается объект FixedPage , в который в свою очередь помещаются другие элементы — это могут эллипсы, текстовые поля и т.д. Так, в данном случае у нас две страницы. Используя свойства Width и Height, мы можем управлять размером страниц.

Также, здесь мы разместили две кнопки для загрузки и сохранения документа. Теперь в файле кода c# определим для них обработчики событий:

using Microsoft.Win32; using System.IO; using System.Windows; using System.Windows.Xps.Packaging; using System.Windows.Xps; using System.Windows.Documents; namespace DocumentsApp < public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); >private void Save_Click(object sender, RoutedEventArgs e) < SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "XPS Files (*.xps)|*.xps"; if (sfd.ShowDialog() == true) < XpsDocument doc = new XpsDocument(sfd.FileName, FileAccess.Write); XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); writer.Write(documentViewer.Document as FixedDocument); doc.Close(); >> private void Load_Click(object sender, RoutedEventArgs e) < OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "XPS Files (*.xps)|*.xps"; if (ofd.ShowDialog() == true) < XpsDocument doc = new XpsDocument(ofd.FileName, FileAccess.Read); documentViewer.Document = doc.GetFixedDocumentSequence(); >> > >

Для сохранения и открытия документа применяется класс XpsDocument . Для его использования нам надо добавить в проект библиотеки ReachFramework.dll и System.Printing.dll .

Чтобы сохранить документ, получаем объект XpsDocumentWriter и вызываем его метод Write() .

Для открытия документа просто используем метод GetFixedDocumentSequence() объекта XpsDocument.

И после запуска приложения мы сможем увидеть наш определенный в разметке xaml документ:

FixedDocument в WPF

Как видно из скриншота, контейнер фиксированных документов DocumentViewer уже имеет некоторую базовую функциональность (например, масштабирование, поиск), которые мы можем использовать.

Для эксперимента можно также попробовать создать простейшие xps-файлы в MS Word (для этого стандартный документ docx можно экспортировать в формат xps) и загрузить этот документ в нашу программу.

Документы в WPF

Windows Presentation Foundation (WPF) предлагает широкий спектр функций документов, позволяющих создавать содержимое с высокой точностью, предназначенное для более легкого доступа и чтения, чем в предыдущих поколениях Windows. Помимо расширенных возможностей и качества WPF также предоставляет интегрированные службы для отображения документов, упаковки и безопасности. В этом разделе содержатся вводные сведения о типах и упаковке документов WPF.

Типы документов

WPF разделяет документы на две основные категории на основе их предполагаемого использования; эти категории документов называются «документы фиксированного формата» и «документы нефиксированного формата».

Документы фиксированного формата предназначены для сфер применения, требующих точного представления (WYSIWYG) независимо от используемого дисплея или принтера. Документы фиксированного формата используются в компьютерной верстке, текстовой обработке и макетах форм, где строгое соответствие дизайну исходной страницы имеет критическое значение. При использовании такого макета документ фиксированного формата сохраняет точное расположение элементов содержимого независимо от используемого устройства изображения или печати. Так, страница документа фиксированного формата, отображаемая на дисплее 96 точек на дюйм, будет совершенно одинаково отображаться на лазерном принтере 600 точек на дюйм и фотонаборной машине 4800 точек на дюйм. Макет страницы остается неизменным во всех случаях, хотя качество документа повышается с учетом возможностей устройства.

Для сравнения: документы нефиксированного формата предназначены для повышения удобства просмотра и чтения; их лучше всего использовать, когда в работе с документом важнее всего удобство чтения. Вместо того чтобы использовать какой-либо определенный макет, документы нефиксированного формата динамически корректируют и перемещают содержимое с учетом переменных времени выполнения, таких как размер окна, разрешение устройства и дополнительные пользовательские настройки. Веб-страница — это простой пример документа нефиксированного формата, содержимое на которой динамически форматируется, чтобы уместиться в окне. Документы нефиксированного формата оптимизируют просмотр и чтение для пользователя в зависимости от среды выполнения. Например, один и тот же документ нефиксированного формата будет динамически переформатирован, чтобы обеспечить оптимальную читаемость на дисплее высокого разрешения 19 дюймов или небольшом экране PDA размером 2 x 3 дюйма. Кроме того, документы нефиксированного формата имеют несколько встроенных возможностей, включая поиск, режимы просмотра, оптимизирующие читаемость, и возможность менять размер и внешний вид шрифта. См. иллюстрации, примеры и подробное описание документов нефиксированного формата в разделе Общие сведения о документах нефиксированного формата.

Элементы управления документами и макеты текста

Платформа .NET предоставляет набор готовых элементов управления, упрощающих использование документов фиксированного и нефиксированного форматов и работу с текстом в приложении в принципе. Отображение содержимого документа фиксированного формата обеспечивается элементом управления DocumentViewer. Отображение содержимого документа нефиксированного формата обеспечивается тремя элементами управления: FlowDocumentReader, FlowDocumentPageViewer и FlowDocumentScrollViewer, которые соответствуют разным пользовательским сценариям (см. разделы ниже). Другие элементы управления WPF предоставляют упрощенную разметку для стандартных способов использования текста (см. раздел Текст в пользовательском интерфейсе ниже).

Элемент управления документом фиксированного формата DocumentViewer

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

DocumentViewer предназначен для отображения содержимого в режиме «только чтение»; редактирование и изменение содержимого недоступно и не поддерживается.

Элементы управления документа нефиксированного формата

Дополнительные сведения о функциях документов нефиксированного формата и создании таких документов см. в разделе Общие сведения о документах нефиксированного формата.

Отображение содержимого документа нефиксированного формата обеспечивается тремя элементами управления: FlowDocumentReader, FlowDocumentPageViewer и FlowDocumentScrollViewer.

FlowDocumentReader

Элемент управления FlowDocumentReader включает функции, которые позволяют пользователю динамически переключаться между разными режимами просмотра, в том числе постраничным режимом (одна страница), двухстраничным режимом (книжный формат чтения) и непрерывной прокруткой (без нижней границы). Дополнительные сведения о таких режимах просмотра см. в разделе FlowDocumentReaderViewingMode. Если возможность динамически переключаться между разными режимами просмотра не требуется, элементы управления FlowDocumentPageViewer и FlowDocumentScrollViewer предоставляют облегченные средства просмотра содержимого документов нефиксированного формата, которые зафиксированы в определенном режиме просмотра.

FlowDocumentPageViewer и FlowDocumentScrollViewer

FlowDocumentPageViewer отображает содержимое в постраничном режиме просмотра, а FlowDocumentScrollViewer — в режиме непрерывной прокрутки. Средства FlowDocumentPageViewer и FlowDocumentScrollViewer зафиксированы в определенном режиме просмотра. Сравните со средством просмотра FlowDocumentReader, которое включает функции для динамического переключения между разными режимами просмотра (как перечисление FlowDocumentReaderViewingMode), однако является более ресурсоемким, чем FlowDocumentPageViewer или FlowDocumentScrollViewer.

По умолчанию вертикальная полоса прокрутки отображается всегда, а горизонтальная полоса прокрутки становится видимой при необходимости. Пользовательский интерфейс по умолчанию для FlowDocumentScrollViewer не включает панель инструментов; однако свойство IsToolBarVisible можно использовать для включения встроенной панели инструментов.

Текст в пользовательском интерфейсе

Текст можно добавлять не только в документы, но и использовать в интерфейсе приложений, например в формах. В WPF имеется множество элементов управления для рисования текста на экране. Каждый элемент управления предназначен для своего сценария и имеет собственный список функций и ограничений. Как правило, элемент TextBlock следует использовать, если требуется ограниченная поддержка текста, например короткого предложения в пользовательском интерфейсе. Label можно использовать, если требуется минимальная поддержка текста. Дополнительные сведения см. в разделе Общие сведения о классе TextBlock.

Упаковка документов

API System.IO.Packaging предоставляет эффективные средства упорядочивания данных приложения, содержимого документов и сопутствующих ресурсов в одном портативном контейнере с возможностью удобного доступа и распространения. ZIP-файл — это пример типа Package, который может удерживать несколько объектов как единый блок. API упаковки предоставляет реализацию ZipPackage по умолчанию, спроектированную с использованием стандарта Open Packaging Conventions с архитектурой файлов XML и ZIP. API упаковки WPF упрощает создание пакетов, хранение в них объектов и осуществление доступа к таким объектам. Объект, хранящийся в пакете Package, называется PackagePart («частью»). Пакеты также могут включать подписанные цифровые сертификаты, с помощью которых можно идентифицировать создателя части и убедиться, что содержимое пакета не было изменено. Пакеты также включают функцию PackageRelationship, позволяющую добавлять в пакет дополнительную информацию или связывать ее с определенными частями, не меняя содержимое существующих частей. Службы пакета также поддерживают Microsoft Windows Rights Management (RM).

Архитектура пакета WPF лежит в основе ряда ключевых технологий:

  • Документы XPS, соответствующие стандарту XML Paper Specification (XPS).
  • Документы открытого XML-формата Microsoft Office «12» (.docx).
  • Пользовательские форматы хранения для собственного приложения.

В зависимости от API упаковки документ XpsDocument предназначен для хранения документов с фиксированным содержимым WPF. Документ XpsDocument — это самостоятельный документ, который можно открыть в средстве просмотра, отобразить в элементе управления DocumentViewer, перенаправить в очередь печати или вывести непосредственно на совместимый с XPS принтер.

В следующих разделах представлены дополнительные сведения о API Package и XpsDocument, предоставляемых WPF.

Компоненты пакета

Интерфейсы API упаковки WPF позволяют упорядочить данные и документы приложения в единый портативный блок. ZIP-файл является одним из наиболее распространенных типов пакетов и типом пакета по умолчанию, предоставляемым WPF. Package является абстрактным классом, на основе которого с использованием соответствующей открытым стандартам архитектуры файлов XML и ZIP реализован класс ZipPackage. Метод Open использует класс ZipPackage для создания и использования ZIP-файлов по умолчанию. Пакет может содержать три основных типа элементов:

Элемент Description
PackagePart Содержимое приложения, данные, документы и файлы ресурсов.
PackageDigitalSignature [Сертификат X.509] для идентификации, аутентификации и проверки.
PackageRelationship Добавленные сведения о пакете или определенной части.
PackageParts

PackagePart («часть») — это абстрактный класс, который относится к объекту, хранимому в классе Package. В ZIP-файле части пакета соответствуют отдельным файлам, хранящимся в ZIP-файле. ZipPackagePart предоставляет реализацию по умолчанию для сериализуемых объектов, хранящихся в классе ZipPackage. Как и в файловой системе, части, которые содержатся в пакете, хранятся в иерархическом каталоге или организованы по папкам. С помощью API упаковки WPF приложения могут записывать, хранить и считывать несколько объектов PackagePart, используя один контейнер в виде ZIP-файла.

PackageDigitalSignatures

В целях безопасности класс PackageDigitalSignature («цифровая подпись») можно связать с частями в составе пакета. Класс PackageDigitalSignature включает сертификат [509], который выполняет две функции:

  1. Идентификация и проверка подлинности создателя части.
  2. Проверка, не была ли часть изменена.

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

PackageRelationships

Класс PackageRelationship («отношение») предоставляет механизм для связи дополнительной информации с пакетом или частью в пакете. Отношение — это возможность на уровне пакета, позволяющая связывать дополнительную информацию с частью, не меняя фактического содержимого части. Вставлять новые данные непосредственно в содержимое части, как правило, нецелесообразно:

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

Отношения пакета предоставляют видимые средства добавления дополнительной информации в отдельные части или весь пакет и создания соответствующих связей между этой информацией и объектами. Отношения пакетов используются для решения двух основных задач:

  1. Определение отношений зависимости между частями.
  2. Определение информационных отношений, добавляющих примечания или другие данные, связанные с частью.

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

Отношения зависимости

Отношения зависимости используются для описания зависимостей между частями. Например, пакет может содержать HTML-часть, которая включает один или несколько тегов изображений . Теги изображений относятся к изображениям, которые хранятся как части внутри пакета или вне его (например, части, доступные через Интернет). Создание класса PackageRelationship, связанного с HTML-файлом, ускоряет и упрощает обнаружение зависимых ресурсов и доступ к ним. Браузер или приложение средства просмотра может осуществлять прямой доступ к отношениям частей и сразу приступать к сборке зависимых ресурсов, даже не зная схемы и не выполняя синтаксического анализа документа.

Информационные отношения

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

XPS-документы

Документ XML Paper Specification (XPS) — это пакет, который содержит один или несколько фиксированных документов и все ресурсы и сведения, необходимые для отображения. XPS также является собственным форматом файлов в очереди на печать Windows Vista. Класс XpsDocument хранится в стандартном наборе данных ZIP и может включать комбинацию из XML-компонентов и двоичных компонентов, таких как файлы изображений и шрифтов. PackageRelationships используются для определения зависимостей между содержимым и ресурсами, необходимыми для полного отображения документа. Структура XpsDocument предоставляет единое многофункциональное решение высокой надежности для работы с документами:

  • Чтение, запись и хранение содержимого и ресурсов документов фиксированного формата в одном портативном документе с возможностью удобного распространения.
  • Отображение документов в приложении средства просмотра XPS.
  • Вывод документов в собственном формате вывода в очередь на печать Windows Vista.
  • Перенаправление документов непосредственно на совместимый с XPS принтер.

См. также

  • FixedDocument
  • FlowDocument
  • XpsDocument
  • ZipPackage
  • ZipPackagePart
  • PackageRelationship
  • DocumentViewer
  • Текст
  • Общие сведения о документах нефиксированного формата
  • Общие сведения о печати
  • Сериализация и хранение документов

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

webbrowser и word документ

Author24 — интернет-сервис помощи студентам

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

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вставка графических объектов XAML в документ Word
Доброго времени суток. Имеется окно (точнее одна из вкладок TabControl), созданное средствами WPF.

Заполнить и распечатать документ Word
Нужно разместить на странице картинку и текст, затем вывести на печать. С помощью каких библиотек и.

Вставка данных в документ microsoft word
Привет всем. Не знаю точно, в правильном разделе создают тему. Короче есть определённый.

Сохранить DataTable в документ Word или html
Народ, у меня есть таблица DataTable как мне ее запхать в .doc или .htm Документ, нужно срочно, до.

124 / 109 / 9
Регистрация: 15.02.2013
Сообщений: 538

http://web.finar.ru/Base/NetCa. e-Doc-View
Делаете страницу в которой открывается Word документ и открываете её в браузере.

Регистрация: 23.08.2010
Сообщений: 100

ЦитатаСообщение от phantom96 Посмотреть сообщение

http://web.finar.ru/Base/NetCa. e-Doc-View
Делаете страницу в которой открывается Word документ и открываете её в браузере.

так там говорится о сайте с поддержкой php кажется. или я что-то не углядел? У меня пользователь должен работать локально с doc документом, ну даже открыть росто для чтения.

Добавлено через 17 часов 27 минут
нашел небольшое решение:
для начала необходимо вот зарегистрировать ключи:
Цитата:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \Word.Document.8]
«BrowserFlags»=dword:80000024

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \Word.RTF.8]
«BrowserFlags»=dword:80000024

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \Word.Document.12]
«BrowserFlags»=dword:80000024

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \Word.DocumentMacroEnabled.12]
«BrowserFlags»=dword:80000024

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \Excel.Sheet.8]
«BrowserFlags»=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \Excel.Sheet.12]
«BrowserFlags»=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \Excel.SheetMacroEnabled.12]
«BrowserFlags»=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \Excel.SheetBinaryMacroEnabled.12]
«BrowserFlags»=dword:80000A00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \PowerPoint.Show.8]
«BrowserFlags»=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \PowerPoint.Show.12]
«BrowserFlags»=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \PowerPoint.ShowMacroEnabled.12]
«BrowserFlags»=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \PowerPoint.SlideShow.8]
«BrowserFlags»=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \PowerPoint.SlideShow.12]
«BrowserFlags»=dword:800000A0

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes \PowerPoint.SlideShowMacroEnabled.1 2]
«BrowserFlags»=dword:800000A0

(информацию взял с этого форума)
ну а потом или вот так

Viewing Word Documents in WPF

I’m trying to programming viewing word documents in WPF I using this code I have this error int this line public partial class MainWindow : Window
the message show ‘Window’ is an ambiguous reference between ‘ System.Windows.Window’ and ‘ Microsoft.Office.Interop.Word.window’. how can correct it ?

private void BrowseButton_Click(object sender, RoutedEventArgs e) < // Create OpenFileDialog Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); // Set filter for file extension and default file extension dlg.DefaultExt = ".doc"; dlg.Filter = "Word documents (.doc)|*.doc"; // Display OpenFileDialog by calling ShowDialog method Nullableresult = dlg.ShowDialog(); // Get the selected file name and display in a TextBox if (result == true) < if (dlg.FileName.Length >0) < SelectedFileTextBox.Text = dlg.FileName; string newXPSDocumentName = String.Concat(System.IO.Path.GetDirectoryName(dlg.FileName), "\\", System.IO.Path.GetFileNameWithoutExtension(dlg.FileName), ".xps"); // Set DocumentViewer.Document to XPS document documentViewer1.Document = ConvertWordDocToXPSDoc(dlg.FileName, newXPSDocumentName).GetFixedDocumentSequence(); >> > 

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

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