Как отобразить первую страницу docx в виде изображения на веб-странице ?
У меня есть документ word (docx). Мне нужно отобразить первую страницу docx на моей веб-странице. (Может быть, изображение)
Что я уже пробовал:
Я попытался извлечь первую страницу из docx с помощью OpenXML.
шаги: извлеките первую страницу с помощью OpenXML, преобразуйте извлеченный docx в формат изображения, а затем добавьте его на веб-страницу.
Есть ли какое-то альтернативное решение/более простое решение? Как это сделать?
RaultKlawas
Это невозможно сделать с помощью OpenXML SDK, по крайней мере, никаким простым способом.
Это потому что:
А) OpenXML SDK не знает, где заканчивается первая страница, если только вы не использовали явный элемент PageBreak в своем документе.
Как правило, OpenXML SDK не знает, сколько страниц состоит из документа и где находится каждая из этих страниц, все, что он может вам сказать, - это XML-содержимое "document.xml".
Б) OpenXML SDK не может нарисовать или визуализировать какой-либо элемент документа, опять же все, что он может сказать вам, - это XML-содержимое "document.xml".
Таким образом, эта задача требует инструмента, который будет разбивать на страницы и отображать содержимое документа.
Например, все приложения для обработки текстов имеют механизм рендеринга, который отвечает за эту задачу. Движок рендеринга способен разбивать содержимое документа на страницы и вычислять, где именно расположены все элементы документа, чтобы его можно было визуализировать в графическом интерфейсе приложения.
Итак, что вы могли бы сделать, так это использовать Microsoft Word Interop на языке C#, подобный этому:
строковый ввод = "Input.docx";
выходную строку = "выход.ПНГ";
var application = новое приложение();
приложение.Видна = ложь;
var document = приложение.Документы.Открыть(вход);
документ.ShowGrammaticalErrors = ложь;
документ.ShowRevisions = ложь;
документ.ShowSpellingErrors = false;
var page = документ.Windows[1].Форточки[1].Страницы[1];
var bits = страница.EnhMetaFileBits как байт[];
использование (var stream = new MemoryStream(bits))
{
изображения ВАР = изображения.FromStream(поток);
изображение.Сохранить(вывод, ImageFormat.Png);
}
документ.Закрывать();
приложения.Бросить();
Однако использование MS Word на сервере не рекомендуется и не поддерживается, поэтому вместо этого вы можете попробовать это Библиотека обработки текстов для C# и VB.NET.
Вот как вы могли бы выполнить эту задачу с его помощью:
строковый ввод = "Input.docx";
выходную строку = "выход.ПНГ";
документ ВАР = DocumentModel.Нагрузка(входная);
var options = new ImageSaveOptions(ImageSaveFormat.Png);
опции.Номер страницы = 0;
документ.Сохранить(вывод, параметры);
Альтернативный подход, который вы могли бы принять, заключается в следующем: преобразование Word в PDF или HTML на языке C# а затем отобразить этот PDF-файл через" iFrame " или отобразить этот HTML-код непосредственно на вашем веб-сайте.
Надеюсь, это поможет.