Ответ 1
Обновление. Первый раздел относится только к Acrobat Reader. Информацию о том, как использовать полные версии Acrobat, см. Во втором разделе.
Acrobat Reader
Я предоставлю все это, заявив, что это, вероятно, не тот ответ, который вы ищете, но я счел, что это требует больше объяснений, чем просто комментарий.
Аналогичный вопрос с автоответчиком был задан на SO (здесь), где OP пришел к выводу, что это поведение по дизайну и ничего не может быть сделано об этом, с которым я согласен, почти.
Хотя я уверен, что вы видели, что сам Reader может добавлять аннотации, единственное прямое средство для достижения этого с помощью плагина Reader (AcroPDFLib) - это для загружаемого документа "Reader Enabled", после чего аннотации становятся доступными так же, как и в Reader. Если у вас есть контроль над документами, которые вы хотите загрузить плагином, это может быть для вас решением.
На ваш вопрос о возможной установке Collab.showAnnotToolsWhenNoCollab = True
в качестве обходного пути мои поисковые запросы показали, что это является жизнеспособным обходным решением для тех, кто использует полную версию Acrobat, а не Reader. Более конкретно, на форуме Adobe (здесь), сотрудники Adobe прокомментировали использование этого свойства напрямую:
Нет, это не [о возможности комментирования в Adobe Reader]. это о включении комментариев в браузере для Acrobat Standard или Professional. Если вы хотите включить комментирование в Reader, то вы необходимо, чтобы "Reader Enable" сами PDF файлы использовали Acrobat professional или Adobe Livecycle Reader Extension Server.
Конечно, этот комментарий относится к Acrobat 9, он по-прежнему остается действительным для Acrobat XI.
Один последний бит. Я не знаю рамки вашего приложения, поэтому это может быть совершенно неактуальным, но если это коммерческое приложение, даже если вы найдете функциональное обходное решение, я бы не решался его использовать, так как это может нарушить Adobe Лицензионное соглашение для читателя (здесь); в частности раздел 4.3.3 "Отключенные функции". Краткая версия, как и в большинстве компаний, не хочет, чтобы вы обошли защиту.
Полные версии Acrobat
Следующий код создаст средство просмотра PDF (используя окно формы для рисования), откройте PDF, затем установите Collab.showAnnotToolsWhenNoCollab = True
, чтобы разрешить аннотации в открытом PDF файле. Для этого требуется ссылка на библиотеку типа Acrobat.
void CreatePdfViewerAndOpenFile(string pdfFile)
{
short AV_DOC_VIEW = 2;
short PDUseBookmarks = 3;
short AVZoomFitWidth = 2;
Type AcroExch_AVDoc = Type.GetTypeFromProgID("AcroExch.AVDoc");
_acroExchAVDoc = (Acrobat.CAcroAVDoc)Activator.CreateInstance(AcroExch_AVDoc);
bool ok = _acroExchAVDoc.OpenInWindowEx(pdfFile, this.Handle.ToInt32(), AV_DOC_VIEW, -1, 0, PDUseBookmarks, AVZoomFitWidth, 0, 0, 0);
if (ok)
{
CAcroPDDoc pdDoc = (CAcroPDDoc)_acroExchAVDoc.GetPDDoc();
object jsObj = pdDoc.GetJSObject();
Type jsObjType = jsObj.GetType();
object collab = jsObjType.InvokeMember("collab",
BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance,
null, jsObj, null);
jsObjType.InvokeMember("showAnnotToolsWhenNoCollab",
BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance,
null, collab, new object[] { true });
}
}
Вызовите этот метод из любого места, где хотите отобразить PDF. Когда закончите, обязательно вызовите метод Close
или файл PDF останется открытым в процессе Acrobat в фоновом режиме.
_acroExchAVDoc.Close(-1);
Имейте в виду, что из этого примера исключено множество "нормальных" функциональных возможностей, таких как обработка изменения формы и т.д., но она должна начать вас. Поскольку в этом примере изменение размера не обрабатывается, вы, вероятно, захотите максимизировать форму перед вызовом метода, чтобы зритель был достаточно большим, чтобы быть полезным. Для получения дополнительной информации о том, как использовать программу просмотра таким образом, загрузите Acrobat SDK (здесь) и посмотрите примерный проект ActiveViewVB, который что я использовал для создания некоторых из этого примера. Для справки я использовал SDK Acrobat XI.