|
Как определить, сколько листов в PDF-файле? |
☑ |
0
le_
25.01.12
✎
12:04
|
Есть какой-нибудь простой способ программно определить, сколько листов в PDF-файле?
|
|
1
le_
25.01.12
✎
12:51
|
Сделал так:
Функция ОпределитьКоличествоСтраниц(ПутьКФайлуPDF)
ВозвращаемоеЗначение = 0;
ТД = Новый ТекстовыйДокумент;
ТД.Прочитать(ПутьКФайлуPDF);
КолСтр = ТД.КоличествоСтрок();
//будем использовать регулярные выражения
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.MultiLine = Ложь;
RegExp.Pattern = "Count [0-9]";
Для а = 1 По КолСтр Цикл
Matches = RegExp.Execute(ТД.ПолучитьСтроку(а));
ЧислоВхождений = Matches.Count();
Если ЧислоВхождений > 0 Тогда
Для к = 0 По ЧислоВхождений - 1 Цикл
Match = Matches.Item(к);
Стр = Число(СтрЗаменить(Match.Value, "Count ", ""));
Если Стр > ВозвращаемоеЗначение Тогда
ВозвращаемоеЗначение = Стр;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат ВозвращаемоеЗначение;
КонецФункции
|
|
2
le_
25.01.12
✎
17:25
|
Если кому-то интересно, в (1) есть ошибка.
Вот так правильно и гораздо быстрее:
Функция ОпределитьКоличествоСтраниц(ПутьКФайлуPDF)
ВозвращаемоеЗначение = 0;
ТД = Новый ТекстовыйДокумент;
ТД.Прочитать(ПутьКФайлуPDF);
КолСтр = ТД.КоличествоСтрок();
//будем использовать регулярные выражения
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Global = Истина;
RegExp.MultiLine = Ложь;
RegExp.Pattern = "Count [0-9]+";
Matches = RegExp.Execute(ТД.ПолучитьТекст());
ЧислоВхождений = Matches.Count();
Для к = 0 По ЧислоВхождений - 1 Цикл
Match = Matches.Item(к);
//Сообщить(Match.Value);
Стр = Число(СтрЗаменить(Match.Value, "Count ", ""));
Если Стр > ВозвращаемоеЗначение Тогда
ВозвращаемоеЗначение = Стр;
КонецЕсли;
КонецЦикла;
Возврат ВозвращаемоеЗначение;
КонецФункции
|
|
3
1с-кин
26.01.12
✎
09:13
|
спасибо!
|
|
4
le_
26.01.12
✎
10:44
|
К сожалению, способ (2) не со всеми файлами работает корректно, только с линеаризованными PDF.
В итоге пришлось использовать утилиту pdfinfo, которая входит в состав набора утилит Xpdf. Скачать можно здесь:
запуск: pdfinfo.exe file.pdf
запуск с сохранением результата в файл: cmd /c pdfinfo.exe file.pdf > 1.txt
Ну, а файл уже можно читать 1с-кой.
|
|