Открытие PDF в .NET - PullRequest
       6

Открытие PDF в .NET

3 голосов
/ 28 октября 2009

В приложении, над которым мы работаем, мы пытаемся реализовать Справку. У нас есть справочный PDF-документ, и на данный момент считается приемлемым, что когда пользователи нажимают кнопку справки, он просто открывает PDF-файл. Приложение является настольным приложением, и файл PDF необходимо как-то включить в установку и установить на локальный компьютер.

Мне нужны две вещи:

  1. Как бы я добавить этот PDF в приложение, чтобы оно было доступно на клиентской машине после установки? Я могу либо положить его в ресурсы проекта, или я мог бы поставить это в папке приложений установщик клиента.

  2. Как мне открыть этот PDF? Я могу либо открыть этот PDF, просто запуск программы просмотра PDF по умолчанию для файл, или я могу использовать Инструмент System.WinForms.WebBrowser для показать это. Однако, если я выберу Второй вариант, я не уверен, как получить доступ к файлу, хранящемуся в ресурсы или найти его в установке папка.

Если бы вы могли предоставить мне код для этого (в VB.Net или C # .Net), это было бы здорово.

Ответы [ 5 ]

3 голосов
/ 28 октября 2009

Вот как мы это сделали:

Поместите все справочные папки в %ApplicationFolder%/Help. Итак, ваш pdf будет иметь путь %ApplicationFolder%/Help/Manual.pdf. Вы можете создать папку справки и поместить свои PDF-файлы в свой csproject, а также прикрепить все целое к csproject и установить для него copy always. Таким образом, вы можете быть уверены, что файлы pdf, которые вы копируете в папку Help, всегда самые последние.

И скопируйте все (кроме файлов pdb, конечно) из папки отладки в папку развертывания.

Затем используйте System.Diagnostics.Process.Start(pdfPath), чтобы запустить файл справки при нажатии кнопки справки. Вот как вы можете получить pdfPath:

Вот фрагмент кода:

public void Help_Click(object sender, System.EventArgs e)
{
    var appDir = Path.GetDirectoryName(Application.StartupPath);
    var helDir = Path.Combine(appDir, "Help");
    var pdfPath = Path.Combine(helDir, "Manual.pdf");

    System.Diagnostics.Process.Start(pdfPath);
}

Вы можете проверить это в режиме отладки. Просто нажмите F5 (не забудьте скопировать PDF-файл в папку отладки), и вы можете получить его

2 голосов
/ 28 октября 2009
  1. ИМХО, я бы лучше сохранил ваш pdf в папке приложения, потому что к нему проще получить доступ. Имя файла справки может быть жестко запрограммировано, поэтому его легко найти.

  2. Я предпочитаю использовать pdf в .NET через ActiveX, без WebBrowser. Это простой подход, и результат весьма полезен - вы получите полную панель инструментов и поведение Acrobat, которая может быть легко интегрирована с вашим интерфейсом. Для этого вам нужно создать отдельную форму и поместить на нее элемент управления AxAcroPDF, а затем использовать AxAcroPDF.LoadFile. Конечно, вам нужно будет ссылаться на AxAcroPDFLib. Управление может быть инициализировано так:

    var axAcroPDF = new AxAcroPDFLib.AxAcroPDF();
    axAcroPDF.Dock = System.Windows.Forms.DockStyle.Fill;
    axAcroPDF.Enabled = true;
    axAcroPDF.Name = "axAcroPDF1";
    axAcroPDF.LoadFile(fullFilepath);
    axAcroPDF1.Visible = true;
    

ps Любое решение потребует установленного Adobe Acrobat на клиентском компьютере.

1 голос
/ 28 октября 2009

Для вашей первой необходимости мне будет проще всего добавить PDF-файл в проект Visual Studio и установить для его параметра «Копировать в выходной каталог» значение «Копировать, если новее». Что касается того, как открыть файл, я бы рекомендовал использовать средство просмотра PDF по умолчанию. Используя класс .NET Process, вы можете просто запустить имя файла, используя:

System.Diagnostics.Process.Start(fullFilePath);
0 голосов
/ 28 октября 2009

Я не очень опытный программист, но я предложу «Папку приложения», как предложено «Томасом», плюс, если вас беспокоит, что в клиентской системе может не быть программы просмотра PDF по умолчанию, вы можете попытаться реализовать «TRichEditPDF 1.01» / «TRichView llPDFLib 1.0» или «PDFsharp 1.30». не знаю, насколько это практично или нет, но это вариант.

0 голосов
/ 28 октября 2009
  1. Как добавить этот PDF-файл в приложение, чтобы он был доступен на клиентском компьютере после установки? Я могу либо поместить его в ресурсы проекта, либо добавить в папку приложения установщика клиента.

Я бы выбрал второй вариант, просто потому, что проще манипулировать файлом, чем встроенным ресурсом ...

  1. Как мне открыть этот PDF? Я могу либо открыть этот PDF-файл, просто запустив средство просмотра PDF-файла по умолчанию, либо использовать инструмент System.WinForms.WebBrowser для его отображения. Однако, если я выберу второй вариант, я не уверен, как получить доступ к файлу, хранящемуся в ресурсах, или найти его в папке установки.

Веб-браузер - не очень хороший вариант ИМХО ... не все программы чтения PDF предоставляют хороший плагин для браузера, и в любом случае пользователю будет удобнее читать документ в автономном приложении для чтения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...