Встроенный просмотрщик PDF в элементе управления WinForms - PullRequest
1 голос
/ 10 июня 2009

Я пытаюсь встроить средство просмотра PDF в элемент управления WinForms таким образом, чтобы я мог отображать PDF для пользователя в контексте моего приложения. Мне также нужно запретить пользователю копировать текст, печатать или сохранять копию (конфиденциальные данные).

До сих пор я пытался использовать WebBrowser для размещения элемента управления Activex Acrobat Reader. Это сближает меня, но оставляет 2 проблемы.
1. Любые PDF-файлы, которые я открываю, остаются открытыми с точки зрения дескриптора файла до тех пор, пока приложение не закроется. Я пытался вызвать Dispose () и Navigate () безрезультатно.
2. Мне нужно отключить панель инструментов в Reader. Я не могу установить настройки просмотра в исходных файлах PDF, но я рассматриваю возможность использования iText для перезаписи файлов с установленными настройками (если я могу это сделать).

Я также был бы рад хорошо рекомендованной сторонней библиотеке, которая делает это.

Ответы [ 2 ]

2 голосов
/ 10 июня 2009

Re: 1. Это отстой, но вы можете сделать копию PDF во временную папку

Path.GetTempPath()

и открывайте его каждый раз, когда пользователю нужно было просмотреть этот PDF, так что вы позволяете Reader блокировать этот файл все, что ему нужно.

Re: 2. Вы пытались добавить

toolbar=0

к URL? Ссылка (и пример!) На:

см. http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf#toolbar=0

0 голосов
/ 10 июня 2009

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

Импортирует iTextSharp.text.pdf ....

Dim reader As PdfReader = New PdfReader(fileName)
PdfEncryptor.Encrypt(reader, New FileStream(mailFileName, FileMode.CreateNew), PdfWriter.STRENGTH128BITS, _
    "password", "password", PdfWriter.AllowCopy Or PdfWriter.ALLOW_PRINTING)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...