Имя: Пароль:
1C
 
Разбор pdf в 8.0
Ø
0 eyerie
 
18.09.06
10:15
Есть inproc COM сервер PDFFilter.dll, который имеет нужную мне функциональность для работы с pdf. А как можно им воспользоваться из восьмерки? Вопрос возник в связи с тем, что как я понял, восьмерка позволяет загружать только специально для нее разработанные inproc сервера (так называемые внешние компоненты), реализующие специфичные интерфейсы...
1 AndreySpb
 
18.09.06
10:26
Не знаю что такое "inproc сервера", но ни разу не слышал, что в восьмерке можно использовать только какие-то специальные внешние компоненты...
Посмотри "COMОбъект", думаю это то что тебе нужно...
2 eyerie
 
18.09.06
13:13
(1)Сделать мне надо вот что: http://windowsxp.mvps.org/pdfsearch.htm
Создать Новый COMОбъект я не могу, так как для моего COM сервера не зарегистрирован ProgID.
`
<< но ни разу не слышал, что в восьмерке можно использовать только какие-то специальные внешние компоненты...
Внешняя компонента - это и есть inproc COM сервер. Только в отличие от программ, разработанных на других платформах и языках программирования, где можно без проблем загрузить ЛЮБОЙ inproc COM сервер, в восьмерке можно использовать только специальным образом написанные для этого inproc COM сервера. 1С их называет внешними компонентами.
3 Vladis
 
18.09.06
13:49
Можно использовать любой зарегестрированный в системе СОМ объект.
Почему ты пишешь что "не зарегистрирован ProgID" если по твой ссылке написано как это сделать?
4 eyerie
 
18.09.06
14:07
(3)
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pdf\PersistentHandler]
@="{B7509D6F-85EE-11d0-AF7D-00C04FD8DC02}"
Это не то! Это просто PersistentHandler для файлов .pdf, по которому потом определяется PDFFilt.dll
5 eyerie
 
18.09.06
14:19
4+ Я сейчас разбираю программу на C#, которая может искать текст в pdf документах. Там делается так. Сначала нужно выбрать файл для разбора. Так как программа позволяет разбирать много типов файлов, то определяется расширение выбранного файла, пусть это будет .pdf. Далее в реестре берется значение ключа PersistentHandler для .pdf. Оно как раз равно: B7509D6F-85EE-11d0-AF7D-00C04FD8DC02. А вот уже по этому ГУИД загружается PDFFilt.dll.
6 Vladis
 
18.09.06
14:36
есть варианты
1 В пофигураторе открываешь форму своей обработки, жмакаешь Форма\Вставить AtiveX.. , ищешь в списке свой фильтр
2 в реестре находишь по B7509D6F-85EE-11d0-AF7D-00C04FD8DC02 имя объекта (может пригодиться и для пункта 1) и обьявляешь Новый COMОбъект("тра ляля")
7 eyerie
 
18.09.06
15:17
(6)А искать нечего... Нет у этого сервера ProgID, вообще. Есть только ГУИД. И потом - это не визуальный компонент. По этой же причине нельзя использовать Новый COMОбъект, так как здесь опять же требуется ProgID.
8 Young
 
18.09.06
15:24
(7) В порядке бреда: можно попробовать GUID вместо ProgID указать (Новый COMОбъект).
9 eyerie
 
18.09.06
15:31
(8)Уже попробовал :) Результат отрицательный...
10 Young
 
18.09.06
15:34
А со скобочками фигурными пробовал? :)
11 eyerie
 
18.09.06
15:39
(10)Все одно и тоже - "Недопустимое имя класса".
12 eyerie
 
18.09.06
15:41
Похоже не получится эту dll в 1с загрузить...
Может у кого есть какие идеи как обходными путями пройти?
13 clappa
 
18.09.06
16:24
Можно написать оболочку к PDFFilt.dll в формате внешней компоненты.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший