Подскажите пожалуйста контрол который может отображать PDF-файлы?

Solomka
Дата: 27.05.2014 10:40:38
Стандартный Web-Browser который есть в стандартном наборе элементов, не подходит...

Если очень важно, почему не подходит: При добавлении контрола браузера на просто форму - всё работает великолепно, так как надо. Но мне надо положить браузер на UserControl, проект для которого будет компилировалться в библиотеку, которая будет вставляется в другой конечный проект, где как раз на форме и надо отобразить PDF-файл на UserControl'e, который распологается на WindiwsForm'e в конечном проекте. А вот в конечном проекте PDF-файл не отображается номрально: в браузере пишеться сообщение "не корректная ссылка", а сам файл открывается в другом окне программы просмотра PDF-файлов Adobe-reader...
По той же причине не подходит "Microsoft WEbBrowser", который есть в COM элементах управления...

Подскажите пожалуйста бесплатный контрол который может отображать PDF-файлы?
Сон Веры Павловны
Дата: 27.05.2014 14:50:52
http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/
Внутри используется винформсовый UserControl, в свою очередь использующий акробатовский AxAcroPDFLib.AxAcroPDF - разумеется, для этого в системе должен быть установлен acrobat reader.
Если такое решение устроит, нужно учесть еще вот такой нюанс: http://stackoverflow.com/questions/1359616/axacropdflib-at-closing-problem-c-sharp
L1G
Дата: 27.05.2014 21:14:44
есть вот такое: https://github.com/pvginkel/PdfViewer
по поводу лицензионности используемого им pdf.dll - вот его следующая инкарнация: https://code.google.com/p/pdfium/ (сохранился ли тот же интерфейс - не проверял)
Solomka
Дата: 28.05.2014 09:55:36
Сон Веры Павловны
http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/
Внутри используется винформсовый UserControl, в свою очередь использующий акробатовский AxAcroPDFLib.AxAcroPDF - разумеется, для этого в системе должен быть установлен acrobat reader.
Если такое решение устроит, нужно учесть еще вот такой нюанс: http://stackoverflow.com/questions/1359616/axacropdflib-at-closing-problem-c-sharp


Не решает проблему - при запуске в конечной программе, всё равно запускает AcrobatReader в новой окне с передаваемым адресом файла
Сон Веры Павловны
Дата: 28.05.2014 11:09:52
Solomka
Не решает проблему - при запуске в конечной программе, всё равно запускает AcrobatReader в новой окне с передаваемым адресом файла

УМВР.
Solomka
Дата: 28.05.2014 13:12:16
L1G
есть вот такое: https://github.com/pvginkel/PdfViewer


Здесь уже дела лучше, но чего-то где-т у меня косяк, не пойму как исправить....
Скачиваю проект, распаковываю, делаю стартовым WindowsFormApplicationProject - всё замечательно компилируется, запускается работает...
Но почему-то, когда я добавляю ещё один проект WindowsFormApplicationProject и в него добавляю просмотрщик - возникает ошибка:


Картинка с другого сайта.



Файл проекта: http://yadi.sk/d/kwcJbOjURV5m4

Может кто подскажет?
Solomka
Дата: 28.05.2014 13:21:22
Сон Веры Павловны
Solomka
Не решает проблему - при запуске в конечной программе, всё равно запускает AcrobatReader в новой окне с передаваемым адресом файла

УМВР.

У меня тоже всё работает нормально, если запускать в том же Solution, в другой проекте разрабатываемый UserControl...
Но в конечном приложении он подгружается через библиотеку, среда Net почему-то не хочет отображать PDF-файл в браузере, и запускает передаваемый файл в AdobeReader...
Если вспомнить историю, то мне пришлось использовать в другой бибилиотеке сторонний контрол для проигрывания видео, потому что стандартный WindowsMediaPlayer не работал так как нужно.

Поэтому я сейчас пытаюсь найти control, который будет просто отображать PDF-файлы, пофиг на редактирование - главное отображение работала внутри установенный рамок элемента управления
Сон Веры Павловны
Дата: 28.05.2014 14:23:48
Solomka
среда Net почему-то не хочет отображать PDF-файл в браузере

В каком браузере?? Решение, на которое дана ссылка выше, не работает ни с каким браузерами вообще. UserControl хостит в себе AxAcroPDFLib.AxAcroPDF, в котором и отображается PDF; когда UserControl помещен на форму, то PDF отображается именно в этой форме. Никаких браузеров тут нет в помине.
L1G
Дата: 28.05.2014 22:58:58
возможно, не может найти dll - положи его в папку с твоим exe, что ли
кстати, в старой версии еще не было никакого xpdf
можно указать PdfEngine.Chrome вместо AutoDetect и убедиться, что pdf.dll загружается без ошибки
Solomka
Дата: 30.05.2014 10:41:17
L1G
возможно, не может найти dll - положи его в папку с твоим exe, что ли
кстати, в старой версии еще не было никакого xpdf
можно указать PdfEngine.Chrome вместо AutoDetect и убедиться, что pdf.dll загружается без ошибки

Это лечиться каким-то странным образом:
  switch (engine)
            {
                case PdfEngine.Chrome:
                    return new Chrome.PdfDocument(path);
                case PdfEngine.XPdf:                     
                        return new XPdf.PdfDocument(path);                   
                default:
                    throw new ArgumentOutOfRangeException("engine");
            }

переделываем в :
  switch (engine)
            {
                case PdfEngine.Chrome:
                    return new Chrome.PdfDocument(path);

                case PdfEngine.XPdf:
                    try
                    {
                        return new XPdf.PdfDocument(path);
                    }
                    catch (System.TypeInitializationException exp)
                    {
                        return new Chrome.PdfDocument(path);
                    }

                default:
                    throw new ArgumentOutOfRangeException("engine");
            }

только два дня были потрачены зря, потому что всё равно эта сборка не подгружается, вызывая исключение System. Reflection.TargetlnvocationException