.NET открыть PDF в winform без внешних зависимостей
Есть ли БЕСПЛАТНАЯ библиотека, которая позволит мне открыть PDF-файл и показать его в проекте winform. Я знаю, что могу открыть его в Adobe Reader или что-то в этом роде, но мне всегда кажется, что он раздутый, и я бы рассчитывал на его установку. Есть ли хорошая легкая альтернатива, где я мог бы просто включить dll в свой проект или подобное, избегая внешних зависимостей.
Мне не нужно много функциональности просто посмотреть, изменить масштаб страницы..
Я видел несколько библиотек, но, похоже, они о создании PDF, а не о просмотре.
9 ответов
Элемент управления ActiveX, установленный с Acrobat Reader, должен работать, либо вставьте его через дизайнер, либо используйте что-то подобное.
Это потребует установки соответствующей версии программы чтения на клиенте, но, поскольку вы указываете, что вы можете просто запустить ее, в любом случае это не должно быть проблемой. читатель
Я не уверен, что вы называете "зависимостью", так как вам всегда придется полагаться на некоторый внешний код для рендеринга PDF, если вы не объедините весь источник рендеринга PDF внутри своего проекта.
Есть несколько коммерческих рендеров и очень мало бесплатных.
Если вы хотите избежать зависимостей, которые вы не можете связать, то, возможно, вы могли бы взглянуть на исходный код SumatraPDF, OpenSource PDF Viewer для окон, который использует MuPDF.
Существует также Poppler, движок рендеринга, который использует Xpdf в качестве движка рендеринга. Все это замечательно, но им потребуется немало усилий, чтобы заставить их работать и взаимодействовать с.Net.
Большинство других библиотек с открытым исходным кодом используются только для создания и управления PDF-страницами, и я не знаю ни одной, которая действительно выполняет рендеринг; это такая сложная проблема, чтобы решить правильно.
Вы все еще можете рассмотреть возможность использования GhostScript в качестве интерпретатора, потому что рендеринг страниц является довольно простым процессом.
Недостатком является то, что вам нужно будет либо повторно упаковать его, чтобы установить его вместе с приложением, либо сделать его обязательным условием (или, по крайней мере, частью процесса установки).
Это не большая проблема, и это, безусловно, проще, чем втиснуть другие движки рендеринга в.Net.
Посмотрите на этот ТАК вопрос, на который я ответил сегодня.
Он содержит дополнительную информацию и ссылку на некоторый работающий код.Net, который я разместил на другом форуме несколько месяцев назад.
Для начала вам нужно обратиться к элементу управления 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;
в противном случае Акробат может остаться без дела.
Я бы посмотрел на Foxit Reader как на легкую альтернативу Adobe Reader. Он состоит из одного файла.exe, который вы можете связать с вашим приложением, и поэтому не требует установки. Согласно их лицензионному соглашению это разрешено, если ваше приложение не установлено на мобильных устройствах. Все, что вам нужно сделать, это запустить программу чтения как новый процесс, указывая на соответствующий файл PDF. Очевидно, что недостатком этого подхода является то, что он не будет интегрирован в интерфейс вашего приложения.
Взгляните на это. Требуется довольно много библиотек (включая GhostScript), так что это не очень легкий вес. Но все зависимости включали нативное чтение PDF. Это в VB- но может быть переведено, если вам нужен C#:
http://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe
Есть бесплатная библиотека PDF. Это в основном редактирование содержимого, но это может помочь.
Это предположение.
Способ, которым браузер отображает PDF внутри него с помощью плагина. Я не уверен, требует ли приложение установки.
Вы можете использовать Foxit Reader ИЛИ Sumatra PDF.
И вы можете разместить контроль над браузером на вашей winform.
Вы можете использовать Spire.PDFViewer от Nuget. Смотрите здесь
PDF Sharp может рисовать загруженный / созданный PDF напрямую как в GDI+ (WinForms), так и в DirectX (WPF). Если вы 1) загрузите PDF и 2) отобразите его, он должен делать то, что вы хотите. О зуме; http://www.bobpowell.net/zoompicbox.htm может помочь вам, если вы в GDI+, в противном случае WPF и directx поддерживают масштабирование чего угодно изначально, из-за его типа рендеринга.
Надеюсь, это поможет.
Поместите элемент управления webBrowser в форму. strPdfFile = "C:\SomeFile.pdf" webBrowser.Url = новый Uri(strPdfFile);
Это работало для нас, пока не попробовал в системе Win7-64bit. Нужно сделать некоторую отладку сейчас.