Форум программистов, компьютерный форум CyberForum.ru

C++ Builder

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.73
kevolk75
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 23
#1

Узнать количество страниц в документах с расширением *.pdf и *.tif - C++ Builder

14.03.2014, 09:10. Просмотров 4079. Ответов 27
Метки нет (Все метки)

Приветствую всех форумчан!

Собственно, вопрос в сабже. Существуют ли какие-либо способы это узнать? В данный момент пока разбираюсь с pdf, копаюсь в библиотеке AcroPDF, но ничего дельного не нашёл. Может быть, как-то это можно сделать через OLE?

Пожалуйста, подскажите. Заранее благодарю.

Добавлено через 1 час 9 минут
Да, забыл уточнить - это нужно сделать в C++ Builder 6.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2014, 09:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Узнать количество страниц в документах с расширением *.pdf и *.tif (C++ Builder):

Открыть документ с расширением .pdf - C++ Builder
Добрый день формчани. Сделал программку по открытию документа с расширением .pdf в Мемо1. Все работает. Но при открытии данной программке...

Как посчитать количество страниц в PDF-файлах - CMD/BAT
Мне необходимо посчитать количество страниц в PDF-файлах (в данной дирректории и во всех вложениях) и количество этих PDF-файлов....

Как получить количество страниц в документе PDF - Visual Basic .NET
kak iz biblioteka pdf reader (Axdpdf) shitat countpage in.vbnet

Парсинг PDF в TIF: без Lock программа работает быстрее, но возникает ошибка - C#
Добрый день, подскажите пожалуйста решение проблемы... Делаю прогу для парсинга PDF в TIF использую библиотеку ABCPDF if...

Узнать количество страниц на печать - Delphi
Всех с наступающим НГ! :) В общем тут меня попросили поправить одно ПО и там надо вывести на форму кол-во страниц которое будет...

Как узнать количество страниц в документе? - VBA
Подскажите пожалуйста, 1. как узнать количество страниц в документе, 2. как увеличить документ на одну страницу 3. начать печатать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
14.03.2014, 23:50 #2
Разбором самого файла - это раз, второй через COM
kevolk75
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 23
17.03.2014, 04:05  [ТС] #3
Avazart, а что вы подразумеваете под разбором самого файла? И можно где-нибудь посмотреть примеры разбора подобных задач?
И ещё один вопрос - через SDK это возможно сделать? А то я прочитал на него документацию и там прямо есть функция получения количества страниц документа pdf.
Заранее благодарю за помощь.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
17.03.2014, 04:18 #4
Согласно формату файла.
Примерное описание- http://el-izdanie.narod.ru/gl3/3-2.htm
Старая тема- Кодконвертера файла rtf в pdf
kevolk75
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 23
03.04.2014, 09:57  [ТС] #5
Avazart, спасибо большое за подсказку по PDF, по нему получилось! Хочу задать ещё вопрос - где можно более подробно изучить COM для разбора tiff? Я нашёл, например, эти ссылки:

http://www.blong.com/Conferences/Bor...++COM/3190.htm
http://www.rsdn.ru/article/com/introcom.xml

А где ещё можно прочитать про COM? Просто почитал данные темы и не совсем понятно - как и куда что подключать, какие настройки выбирать при настройке COM-объекта и т.п.
Заранее благодарю за помощь!
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,566
Записей в блоге: 17
03.04.2014, 10:35 #6
Про tiff не знаю, думаю для него можно найти использовать библиотеку без COM
raxp
10155 / 6542 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
03.04.2014, 12:52 #7
Для TIFF можно OLE-интерфейс MODI из MDIVWCTL.DLL:

Delphi
1
2
3
4
5
6
7
var doc :IDocument;
begin
  CoInitialize(nil);
  doc := tdocument.Create(nil);
  doc.create1(tifpath);
 
// doc.Images.Count - искомое количество страниц в многостраничном документе
kevolk75
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 23
04.04.2014, 07:47  [ТС] #8
raxp, спасибо за направление мысли, я начал использовать этот интерфейс и вроде уже первые ростки появились (по крайней мере, код стал уже выполняться ). Но возник такой вопрос. Вот мой код, где я считываю количество страниц:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
WideString file, fN, dN;
int kolvo = 0;
 
for (int i=0; i < ListView1->Items->Count; i++)
{
dN = ListView1->Items->Item[i]->SubItems->Strings[0];
fN = ListView1->Items->Item[i]->Caption;
file = dN+"\\"+fN;
 
try
{
IDocument *doc;
doc->Create(file);//указывает здесь на ошибку!
ListView1->Items->Item[i]->SubItems->Add(doc->Images->Count);
kolvo = kolvo + doc->Images->Count;
doc->Close(0);
}
catch (...)
{
ShowMessage("Ошибка! Не удалось считать количество страниц");
ListView1->Items->Item[i]->SubItems->
Add("Не удалось считать количество страниц!");
}
 
}
Компиляция в порядке проходит, но когда я нажимаю кнопку именно считывания tiff-файлов, он выдаёт ошибку Access Violation. Как это можно исправить? Или где-то есть ошибка в коде? MODI_TLB.h прописан, CoInitialize не помогает (происходит то же самое).
Заранее благодарю за помощь.
raxp
10155 / 6542 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
04.04.2014, 09:59 #9
MODI интерфейс должен быть зарегистрирован в системе.
kevolk75
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 23
04.04.2014, 10:23  [ТС] #10
raxp, а что значит "зарегистрирован"? Где об этом можно почитать, узнать, как это сделать? А то впервые с подобными вопросами сталкиваюсь, пока не совсем понимаю эту технологию.
Заранее благодарю за помощь.
raxp
10155 / 6542 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
04.04.2014, 12:14 #11
Это значит, что для работы с OLE/COM интерфейсом MODI (Microsoft Office Document Imaging) данной библиотеки требуется ее зарегистрировать или установить Microsoft Office Document Imaging.

http://office.microsoft.com/en-us/he...001049034.aspx
kevolk75
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 23
04.04.2014, 18:42  [ТС] #12
raxp, MODI уже был установлен к моменту создания программы. В чём ещё может быть тогда проблема?
raxp
10155 / 6542 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
04.04.2014, 23:02 #13
Если MODI установлен и работает как отдельное приложение, т.е. запустив его вы в нем можете открыть многостраничный tiff, то значит и его OLE/COM интерфейс будет доступен и должен работать.
kevolk75
1 / 1 / 0
Регистрация: 03.03.2013
Сообщений: 23
07.04.2014, 11:01  [ТС] #14
raxp, а вы можете тогда объяснить - в чём моя ошибка работы с интерфейсом? И что в приведённом вами коде означают CoInitialize(nil), tdocument, create1? Заранее благодарю за разъяснение.
raxp
10155 / 6542 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
07.04.2014, 23:25 #15
1- http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
2- класс TOleServer, надстройка над классами TComponent, IUnknown
3- метод интерфейса IDocument для доступа к файлу через OLE

Впрочем, вот вам моя либа для подсчета количества страниц в PDF и многостраничных TIFF:
Вложения
Тип файла: zip Описание API вызова библиотеки GetPagesPdfTiff.DLL.zip (8.97 Мб, 18 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 23:25
Привет! Вот еще темы с ответами:

Как узнать количество распечатанных страниц за определенный период эксплуатации - Принтеры, МФУ
как можно узнать сколько принтер распечатал страниц за всю свою жизнь, а также месяц и тому подобное?

Как узнать количество страниц в индексе Google & Yandex ? - PHP
Как узнать количество страниц в индексе Google &amp; Yandex ? Добавлено через 6 минут Посредством PHP конечно же:)

Как узнать количество страниц при печати в Excel на VBA? - VBA
Убедительная просьба помоч!!! Как узнать количество страниц при печати в Excel?

Как узнать количество страниц в текущем документе LibreOffice Writer? - OpenOffice/LibreOffice
Как узнать количество страниц в текущем документе LibreOffice Writer? Где посмотреть? Не нашел. (Версия: 5.1.5.2)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.04.2014, 23:25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru