Подтвердить что ты не робот

.NET открыть PDF в winform без внешних зависимостей

Есть ли бесплатная библиотека, которая позволит мне открыть pdf файл и показать его в проекте winform. Я знаю, что могу открыть его в Adobe Reader или что-то еще, но он всегда кажется мне таким раздутым, и я буду полагаться на его установку. Есть ли хорошая легкая альтернатива, где я мог бы просто включить DLL в свой проект или подобное избежать внешних зависимостей.

Мне не нужно много функциональности, просто просмотрите, измените масштаб страницы.

Я видел несколько библиотек, но похоже, что они не создают PDF файл.

4b9b3361

Ответ 1

Элемент управления ActiveX, установленный с помощью программы чтения акробатов, должен работать, либо загружать его через конструктор, либо использовать что-то вроде this.

Это потребует, чтобы соответствующая версия читателя была установлена ​​на клиенте, но поскольку вы указываете, что можете просто запустить, так или иначе это не должно быть проблемой. Читатель

Ответ 2

Я не уверен, что вы называете "зависимостью", так как вам всегда придется полагаться на какой-то внешний код для рендеринга PDF, если вы не свяжете весь источник рендеринга PDF внутри вашего проекта.

Есть несколько коммерческих рендерингов и очень мало бесплатных.

Если вы хотите избежать зависимостей, которые вы не можете расслоить, возможно, вы можете взглянуть на исходный код для SumatraPDF, средство просмотра OpenSource PDF для Windows, которое использует MuPDF.
Существует также Poppler, механизм рендеринга, который использует Xpdf в качестве механизма рендеринга. Все они великолепны, но для этого потребуется немалая приверженность, чтобы заставить их работать и взаимодействовать с .Net.

Большинство других библиотек с открытым исходным кодом используются только для создания и управления страницами PDF, и я не знаю, что на самом деле делает рендеринг; это такая трудная задача решить правильно.

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

Взгляните на этот СОСТОЙНЫЙ вопрос, я ответил сегодня. Он содержит дополнительную информацию и ссылку на какой-то рабочий .NET code Я отправил на другой форум несколько месяцев назад.

Ответ 3

Я рассмотрел бы Foxit Reader в качестве легкой альтернативы Adobe Reader. Он состоит из одного файла .exe, который можно связать с вашим приложением и, следовательно, не требует никакой установки. В соответствии с их лицензионным соглашением это разрешено, если ваше приложение не установлено на мобильных устройствах. Все, что вам нужно сделать, это запустить читателя как новый процесс, указывая на соответствующий pdf файл. Очевидно, что недостатком этого подхода является то, что он не будет интегрирован в ваш интерфейс приложения.

Ответ 4

Сначала вам нужно обратиться к элементу управления Adobe Reader ActiveX

Библиотека типов библиотек Adobe Acrobat версии 1.0

% programfiles &\Common Files\Adobe\Acrobat\ActiveX\AcroPDF.dll

Затем вы просто перетащите его в свою форму Windows из панели инструментов.

И используйте такой код для инициализации элемента управления ActiveX.

private void InitializeAdobe(string filePath)
{
    try
    {
        this.axAcroPDF1.LoadFile(filePath);
        this.axAcroPDF1.src = filePath;
        this.axAcroPDF1.setShowToolbar(false);
        this.axAcroPDF1.setView("FitH");
        this.axAcroPDF1.setLayoutMode("SinglePage");
        this.axAcroPDF1.Show();
    }
    catch (Exception ex)
    {
        throw;
    }
}

Убедитесь, что, когда ваша форма закрывается, вы удаляете элемент управления ActiveX

this.axAcroPDF1.Dispose();
this.axAcroPDF1 = null;

в противном случае Acrobat может остаться лежать.

Ответ 5

Взгляните на это. Это требует довольно много библиотек (включая GhostScript), так что это не очень легкий вес. Но все зависимости включали собственное чтение PDF. Он в VB - но может быть переведен, если вам нужен С#:

http://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe

Ответ 6

Существует бесплатная библиотека PDF. Это главным образом редактирование содержимого, но оно может помочь.

Ответ 7

Это предположение.

Как браузер делает PDF внутри него с помощью подключаемого модуля. Я не уверен, нужно ли устанавливать приложение.

Вы можете использовать Foxit reader или Sumatra PDF.
И вы можете разместить элемент управления браузера в своей winform.

Ответ 8

http://pdfsharp.com/PDFsharp/

PDF Sharp может рисовать загруженный/созданный PDF непосредственно на GDI + (WinForms) или DirectX (WPF). Если вы 1) загрузите pdf и 2) отобразите его, он должен делать то, что вы хотите. О масштабировании; http://www.bobpowell.net/zoompicbox.htm может помочь вам, если вы в GDI +, иначе WPF и directx поддерживают масштабирование чего-либо изначально, из-за этого рендеринг- тип.

Надеюсь, это поможет.

Ответ 9

Поместите элемент управления WebBrowser в свою форму. strPdfFile = "C:\SomeFile.pdf" webBrowser.Url = новый Uri (strPdfFile);

Это работает для нас, пока мы не попробуем систему Win7-64bit. Теперь нужно выполнить некоторую отладку.

Ответ 10

Вы можете использовать Spire.PDFViewer из Nuget. См. здесь