Как создать миниатюру документа Word, если он не сохранен? - PullRequest
0 голосов
/ 30 сентября 2011

Я хочу создать COM-dll, которая будет принимать любой файл Word и генерировать файл изображения первой страницы документа.Я уже сделал это, используя функциональность IExtractImage Windows SDK, но это работает только при наличии миниатюры, сохраненной вместе с файлом.(Поскольку пользователю Word приходится прилагать дополнительные усилия для сохранения эскиза, переходя к дополнительным параметрам диалогового окна «Подготовка | Свойства», большинство документов Word не имеют предварительного просмотра.)

(К сожалению, яя застрял с использованием COM, потому что я интегрирую это решение с существующим веб-приложением ASP, которое плохо взаимодействует с .NET.)

Один из подходов, который я рассматриваю, заключается в использовании SDK для создания PDF для создания PDFфайл, или, в идеале, PDF только первой страницы файла, а затем сгенерировать изображение предварительного просмотра из PDF.(У меня нет доступа к проприетарному PDF SDK от Adobe, но если можно было бы показать, что он хорошо работает для этого решения, я бы хотел приобрести лицензию.)

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

Я заметил, что Google теперь предоставляет предварительный просмотр многих типов файлов, и мне интересно, какой подход они использовали.

Любые мысли, подсказки, предложения и / или оскорбления приветствуются.

Спасибо.

Ответы [ 2 ]

1 голос
/ 02 октября 2011

Миниатюра со старых страниц свойств OLE-Automation представляет собой очень маленький (даже не сглаженный) черно-белый метафайл, который в наши дни выглядит не очень хорошо. В классическом VB6 или VBA вы можете вызвать сохранение миниатюры с несколькими строками кода (если я правильно помню). Однако Winword, Excel и т. Д. Автоматизируются путем невидимой загрузки приложения Gui, и это не всегда работает в контексте (веб) сервера. Подумайте о том, чтобы сделать миниатюру документов при загрузке / проверке на вирусы, но не из библиотеки DLL, загружаемой на веб-сервер.

Подход Google основан, скорее всего, на некоторых компонентах с открытым исходным кодом, которые также не работают в классическом ASP.

0 голосов
/ 06 января 2017

ASP? Вы можете использовать 2JPEG . Он поддерживает форматы 275 (включая файлы Word, Excel, Publisher и Powerpoint.) Производитель рекомендует вызывать 2JPEG в качестве запланированной фоновой задачи, чтобы не влиять на производительность.

Вот пара примеров :

Синтаксис командной строки. Вы можете запустить из пакетного файла или из планировщика задач Windows:

2jpeg.exe -src "C:\In\*.*" -dst "C:\Out"

Запуск командной строки из приложения Visual C ++:

ShellExecute(NULL, "open", "2jpeg.exe", "-src \"C:\\In\\*.*\" -dst \"C:\\Out\"", NULL, SW_HIDE)

Из Visual Basic:

Shell ("""2jpeg.exe"" -src ""C:\In\*.*"" -dst ""C:\out""")

Синтаксис Delphi:

ShellExecute(0, 'open', PChar('2jpeg.exe'), PChar('-src "C:\In\*.*" -dst "C:\Out"'), nil, 0);

Сценарий PERL на сервере Windows:

exec '2jpeg.exe -src C:\In\*.* -dst C:\out';

Пример кода VB-скрипта:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run """2jpeg.exe"" -src ""C:\In\*.*"" -dst ""C:\Out""", 1, True
Set objShell = Nothing

Пример кода JavaScript:

var objShell = new ActiveXObject("Shell.Application");
objShell.ShellExecute("2jpeg.exe", "-src \"C:\\In\\*.*\" -dst \"C:\\Out\"", "", "open", "1");

Пример кода PHP:

<?php
echo exec('2jpeg.exe -src "C:\In\*.*" -dst "C:\Out" -oper Resize size:"800 600" -jpeg quality:50');
?>

Запустите приложение 2JPEG из C #:

System.Diagnostics.Process.Start("2jpeg.exe", "-src \"C:\\In\\*.*\" -dst \"C:\\Out\"");
...