2010-07-18 2 views
5

Я создаю книгу для друга. У него есть содержание в слове (docx), поэтому у меня есть несколько вопросов. Я создал поток ранее о том, как подойти к этому, и лучшим ответом было создание PDF-файлов из него. Главным моментом этого было то, что мы можем иметь вставные текстовые поля, ссылки и оглавление.хостинг PDF в приложении C#

Теперь мне было интересно, могу ли я разместить pdf-файлы в своем приложении. Я хочу сделать «Adobe Reader» в основном. Есть ли там библиотека, которая делает это? Могу ли я использовать установленные COM/dll для этого?

Причина в том, что я должен был создать как раздел «викторины» в своем приложении, или «отчетную карточку» или даже «закладку».

Спасибо, ребята.

ответ

6

Выполнение a пользовательский браузер PDF контроль может быть чрезвычайно сложной задачей. Вместо этого вы могли бы использовать настоящий Adobe Reader в своем приложении, поскольку он предоставляется как элемент управления COM, который может быть размещен в любом приложении Windows. Вот шаги:

  1. Начало нового приложения WinForms
  2. сделать управление Acrobat доступны на панели инструментов (Tools -> Добавить/Удалить панели элементов: включить «Adobe Acrobat 7.0 Браузер документа» на вкладке Компоненты COM). Не забудьте взять чашку кофе, прежде чем нажимать на вкладку COM.
  3. Перетащите элемент управления в форме
  4. Манипулирование его:

    axAcroPDF1.LoadFile("mypdf.pdf"); 
    axAcroPDF1.Show(); 
    
+0

Я проголосую за это, потому что это сработает. Хотя я думаю, что с помощью WebBrowser управление проще. – David

+0

@David, в то время как метод «WebBrowser» действительно проще реализовать, он дает вам небольшой контроль над PDF-файлом по сравнению с компонентом Adobe, который позволяет вам перемещаться, печатать, ... –

+0

Awesome! но возможно ли мне также распределить правильную библиотеку? Установщик должен выполнить эту работу. Как насчет легкого чтения в формате PDF, такого как foxit, можно ли его использовать аналогичным образом? – masfenix

1

Я знаю, что это было задано раньше, но я не могу вспомнить, где. Принятый ответ был что-то вдоль этих линий:

Было бы очень плохая идея, чтобы создать свой собственный ридер PDF, потому что:

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

Было бы гораздо лучше найти способ использования читателя Acrobat, который они уже разработали, и бесплатно распространять.

Это очень легко сделать. Все, что вам нужно, чтобы мы использовали элемент управления WebBrowser (при условии, что это WinForms) и установите DocumentSource в файл PDF. Элемент управления WebBrowser будет автоматически использовать все, что уже было установлено на клиентском ПК, как и Internet Explorer.

1

я имел очень хороший опыт, работающие в самые Aspose библиотеки. Они доступны и сэкономит вам много времени.

1

Вы можете встроить Adobe Reader в свои приложения через компонент ActiveX, который установлен на вашем компьютере вместе с читателем. Вы можете добавить его в свой VS Toolbox со вкладки COM Components. Любой, у кого установлен Abobe Reader, сможет использовать ваше приложение для просмотра документов в формате PDF. Обратите внимание, что если программа Adobe Reader не установлена, ваша программа не будет работать или вам необходимо каким-то образом предоставить библиотеку приложение. Если вы хотите что-то, что не требует Adobe Reader, вы можете посмотреть iText#.

+0

Недостатком является то, что ваше приложение не будет работать на машинах, на которых не установлен Adobe Reader. Я думаю, что OP только что-то создает для друга, но я был бы очень недоволен, если бы мне пришлось установить Adobe Reader только для использования какого-либо другого приложения ... –

+0

Искренне, друг подрядчик для более крупной компании. Компании нужно будет распространять это для своих клиентов и хорошо, они не могут отправить что-то, если оно будет работать. – masfenix

+0

Компания, тем не менее, может распространять библиотеки adobe без разрешения adobe (нормальная лицензия на redist позволяет только перераспределить полный инсталлятор: http://www.adobe.com/products/reader/rdr_distribution1.html). Я ожидал бы, что foxit будет иметь аналогичные требования –

0

Потенциальная проблема с использованием компонента Adobe ActiveX/com заключается в том, что у пользователя должен быть установлен Adobe Reader для этого (я не думаю, что вы можете и/или разрешили перераспределять только элемент управления ActiveX и не могли бы Не пытайтесь заставить моих пользователей установить Adobe Reader). Поэтому для более серьезной работы я бы попытался использовать библиотеку Pdf, которую вы можете распространять с помощью своего кода, например, написать (предположительно очень маленькую) оболочку P/Invoke для библиотеки с открытым исходным кодом http://ccxvii.net/mupdf/, или если вы можете/захотите позволить себе использовать некоторые коммерческие библиотека.

Проблема с использованием элемента управления веб-браузером заключается в том, что вы должны быть осторожны, чтобы проверить, что произойдет, если целевой пользователь в качестве вложения PDF отключен в IE. Может случиться так, что вместо встраивания вы получите внешний считыватель Adobe (или что-то, зарегистрированное как обработчик pdf). Возможно, это было обходным путем, но я был укушен этим раньше (в результате возникла одна из проблем «работы на моей машине»)

+0

Проблема в том, что библиотека не поддерживает PDF-файлы, у которых есть ссылки, встроенные или текстовые поля и т. Д., Или нет? – masfenix

+0

Ну, это будет зависеть от библиотеки :) Я не уверен в mupdf, если честно, но IIRC sumatrapdf основан на mupdf, и суматра хотя бы поддерживает встроенные ссылки, ToC и закладки. Тайлер Йенсен упомянул Aspose, я предполагаю, что это будет поддерживать более продвинутые функции PDF, но я никогда не использовал его сам, и это немного дорого ... Для mupdf я думаю, вы могли бы просто попробовать и посмотреть, поддерживает ли sumatrapdf нужные вам функции, а затем исследовать сколько усилий будет использовать уровень P/Invoke для .net. –

+0

О, и, конечно, mupdf - это GNU GPL3 («Для коммерческого лицензирования обращайтесь по адресу [email protected]»).Поэтому вам обязательно нужно убедиться, что вы соблюдаете условия лицензии –

Смежные вопросы