Как програмно да активирате/деактивирате „Показване на PDF в браузъра“ за Acrobat / Reader XI или DC за използване с Adobe ActiveX Control

Имаме приложение .NET C#, което използва контролите на Adobe ActiveX. За версии 7-10 както на Adobe Acrobat, така и на Adobe Reader, за да използвате тази контрола, трябваше да включите настройката „Показване на PDF в браузъра“. Можете да направите това ръчно от GUI, като използвате

Preferences > Internet > Display PDFs in browser

или програмно чрез директно задаване на настройките на системния регистър

HKEY_CURRENT_USER\Software\Adobe\(Product Name)\(Version)\Originals
"bBrowserIntegration"=dword:00000001

Което следва препратката към SDK http://www.adobe.com/devnet-docs/acrobatetk/tools/PrefRef/Windows/Originals.html#BrowserIntegration. Нашето приложение използва програмната настройка на тази стойност в регистъра, когато нашите клиенти имат версии 7-10 на Adobe Reader или Adobe Acrobat. Връзката по-горе също показва, че този ключ на регистъра bBrowserIntegration е отхвърлен в XI (11). Старият път на регистъра все още съществува в новите версии, т.е.:

HKEY_CURRENT_USER\Software\Adobe\(Product Name)\(Version)\Originals

но вече няма ключ bBrowserIntegration точно както показва документацията, той е отхвърлен.

Изглежда, че Adobe ActiveX Control все още работи добре с XI и DC, стига да е активирано Display PDF в браузъра, както винаги.

За версии XI (11) и DC има две публикувани връзки, които ясно показват как да постигнете това ръчно:

XI (11): https://helpx.adobe.com/acrobat/11/using/display-pdf-browser-acrobat-xi.html
DC (current): https://helpx.adobe.com/acrobat/using/display-pdf-in-browser.html

Когато тестваме Adobe Reader DC, ако не изпълним стъпките за активиране на Display PDF в браузъра за нова клиентска инсталация, тогава нашето приложение ще изведе COM error и след това, ако активираме настройката, следвайки инструкциите в връзката по-горе, всичко работи според очакванията с нашето приложение, изобразява PDF файлове с помощта на Adobe ActiveX Control, което е подобно на това, което очакваме да видим в по-стари версии (7-10), когато настройката на системния регистър не е зададена (вижте моята стара публикация и моето собствено решение обратно след това Как да се диагностицира причината, да се коригира или да се заобиколи свързаната с Adobe ActiveX / COM грешка 0x80004005 програмно?).

Така че остава въпросът какъв е очакваният програмен еквивалент или за ръчния процес в XI или DC днес, или еквивалентът на това, което работи в 7-10, като зададете съответно настройката на системния регистър bBrowserIntegration. Искаме да можем да го включим и след това да го върнем към предишната настройка, когато приложението ни приключи (така че приложението ни да не принуждава потребителя да запази настройката само защото приложението ни се нуждае от това), което правим днес за 7 -10.

Изглежда не мога да намеря никакви препратки онлайн за това как да активирам/деактивирам интегрирането на браузъра от гледна точка на разработчиците, така че нашето приложение да може да продължи да използва ActiveX Control и да не се появяват COM грешки, принуждавайки потребителя да промени това ръчно.

Основният приоритет е да се разбере решението за DC, тъй като това представлява новата парадигма за Adobe Acrobat/Reader.


person Streamline    schedule 06.07.2015    source източник
comment
Навигирате ли WebBrowser контрола към PDF файл? Или да хоствате директно Acrobat Reader ActiveX?   -  person noseratio    schedule 07.07.2015
comment
Ние използваме вътрешното хостване на приложението на Adobe Acrobat ActiveX Control в нашето приложение, за да показваме PDF файлове, НЕ използвайки контрола на уеб браузър в приложението. Използването на контролата ActiveX изисква настройките „показване на pdf в браузъра“, както ако използвате самия IE за показване на PDF   -  person Streamline    schedule 07.07.2015


Отговори (1)


Обмисляли ли сте използването на сценария „Безплатна регистрация“? Той позволява да използвате COM/ActiveX компоненти във вашето приложение, без да регистрирате ActiveX глобално и позволява да заредите изолирания COM/ActiveX контрол за вашето приложение само въз основа на интерфейсите, дефинирани в XML манифеста, включен заедно с вашето приложение.

Вижте тази публикация за списъка с инструменти и тази публикация за примерен XML манифест за използване на Flash плъгин и този ръководство стъпка по стъпка. Предполагам, че за контрол на Adobe Reader трябва да използвате PDF.ocx от папката C:\Program Files\Adobe\Acrobat \Reader\ActiveX.

АКТУАЛИЗАЦИЯ (27 юли 2015 г.): В най-новите версии на Adobe Reader те използват AcroPDF.dll и го преместиха в \Program Files\Common Files\Adobe\Acrobat\ActiveX\, както проверих с Adobe Reader 11. За съжаление AcroPDF.dll извежда грешка при опит за инсталиране чрез regsvr32.exe. Предполагам, че проверява някои допълнителни ключове преди инициализиране, за да защити от неразрешена употреба (докато потребителят не отблокира контролата в IE). Изглежда, че няма начин официално и програмно да се заобиколи изискването потребителят изрично да разреши контрола на PDF за използване от приложения, различни от Adobe.

Също така вижте дискусията относно възможните проблеми на платформата x64: по-добрият и по-надежден начин е да използвате Управление на Adobe Reader индиректно чрез хостване на контролата WebBrowser на IE, която съответно ще извика вградената контрола за преглед на PDF.

person Eugene    schedule 20.07.2015
comment
Благодаря, звучи интересно, но не ми е ясно как това ще реши непосредствения проблем. Нямаме проблем с регистрацията, доколкото мога да преценя. Библиотеките на Adobe ActiveX (AxAcroPDFLib.dll & AcroPDFLib.dll), които предоставяме в нашето приложение, предназначени да взаимодействат с която и PDF програма да е инсталирана (Reader или Acrobat), изискват настройката Display PDF in Browser да бъде обърната от версия 7-10 или ние получите COM грешка. Настройките току-що бяха премахнати/преместени за 11 & DC и опция за инсталиране задава това сега. Тази настройка влияе върху това дали COM грешката се показва или не. - person Streamline; 20.07.2015
comment
Това може да помогне да използвате контролата ActiveX на Adobe Reader, дори ако не е регистрирана в системата (т.е. не е налична в IE), като просто я препратите от XML манифеста, така че да бъде достъпна за вашето приложение само когато е регистрирана глобално. Възможно е да се направи с управление на флаш плейър, но трябва да опитате с Adobe Reader, за да се уверите, че работи и за него. - person Eugene; 20.07.2015
comment
Когато казвате, дори ако не е регистриран в системата ... искате да кажете, че това е същото влияние като това, което се случваше с настройката на предишната версия Показване на PDF в браузъра в Предпочитанията? Доколкото мога да преценя, проблемът беше в регистъра, а не в регистрацията. Основната цел е как да активираме текущия еквивалент на това, което беше настройка, до която имахме достъп в системния регистър, а не че регистрирахме нещо, когато активирахме тази настройка. Искате да кажете, че тези две неща са еднакви? - person Streamline; 22.07.2015
comment
Използването на контролата ActiveX изисква настройките „показване на pdf в браузъра“, както ако използвате самия IE за показване на PDF – това означава, че ако потребителят активира това, Adobe Reader регистрира COM обекта (PDF.ocx) и той става достъпен за IE, за вашето приложение и други. След като потребителят деактивира, Adobe Reader дерегистрира този глобален COM обект (т.е. контрол на зрителя). Ето защо ви предлагам да опитате сценарий без регистрация, който може да ви помогне да използвате PDF.ocx, дори ако не е глобално регистриран. - person Eugene; 23.07.2015
comment
с други думи опитайте да регистрирате PDF com контрола за IE ръчно с командата: regsvr32 c:\Program Files\Adobe\Acrobat 6.0\Reader\ActiveX\pdf.ocx в режим Като администратор - person Eugene; 23.07.2015
comment
Благодаря за твоето обяснение. Сега разбирам защо предлагате безплатна регистрация. С вашия указател за използване на pdf.ocx, това като заместител ли е на библиотеките на Adobe ActiveX (AxAcroPDFLib.dll & AcroPDFLib.dll), които предоставяме в нашето приложение? Тази част все още не ми е ясна. Дали pdf.ocx замества тези две и можем ли да превключим и вече няма нужда да предоставяме тези dll файлове с нашето приложение? - person Streamline; 23.07.2015
comment
Освен това току-що намерих това adobe.com/support/techdocs/318268.html и в долната част пише The Acrobat Control е проектиран специално за използване с Internet Explorer; това не е пълнофункционална ActiveX контрола, която можете да използвате, за да разрешите на приложения, различни от Internet Explorer, да показват PDF файлове. така че се чудя дали този PDF.ocx наистина е същата COM контрола, която използва настоящата ни реализация на Adobe ActiveX, или е някакъв друг COM обект? Както и този forums.adobe.com/thread/746286 vi - person Streamline; 23.07.2015
comment
Както и този forums.adobe.com/thread/746286, който гласи PDF.OCX беше МНОГО СТАР (преди Acrobat 8) НЕПОДДЪРЖАН компонент. От Acrobat 8 ​​вече предлагаме AcroPDF.dll, който е ПОДДЪРЖАНА част от SDK. което ме прави любопитен дали този PDF.ocx е път, който не е част от текущата реализация на Adobe Reader DC. Знаете ли подробностите или обясненията? - person Streamline; 23.07.2015
comment
Да, те се преместиха в AcroPDF.dll в \Program Files\Common Files\Adobe\Acrobat\ActiveX\ и току-що проверих с Adobe Reader 11. За съжаление AcroPDF.dll извежда грешка, когато се опитва да го инсталира с помощта на regsvr32.exe. Предполагам, че проверява някои допълнителни ключове преди инициализиране, за да защити от неразрешена употреба (докато потребителят не го деблокира в IE). Ето някои допълнителни връзки, за да проверите experts-exchange.com/Software /Internet_Email/Web_Browsers/ и forums.adobe.com/thread/1475520 ( относно използването на x64 платформа). - person Eugene; 23.07.2015
comment
И изглежда, че няма начин официално и програмно да се заобиколи изискването потребителят изрично да разрешава PDF контрол за използване от приложения, различни от Adobe. - person Eugene; 23.07.2015