Работа с файлом PDF из 1С

22.01.18

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Чтение текста из PDF, разделение на страницы многостраничного файла PDF и выгрузка данных PDF файла.

Всем привет!!! Как-то мне поступило задание прикреплять PDF файлы к документам в 1С, при том что было много документов и один многостраничный PDF файл, который необходимо было разделять на странички и каждая страница соответствовала определенному документу. Естественно мне хотелось автоматизировать полностью весь процесс, чтобы 1с сама разделяла файл PDF на листы, прочитывала каждый лист и сопоставляла его с документом. Я нашла решение и прикрепляю программы, которые мне в этом помогли:)

Программа Pdftk server позволила мне узнать сколько страниц есть в файле PDF:

ИмяИсходногоФайла = _ВыборКаталога; //ПУТЬ К НАШЕМУ МНОГОСТРАНИЧНОМУ ФАЙЛУ PDF
Скрипт = Новый COMОбъект("WScript.Shell");
ИмяКаталогаУтилит = """C:\Program Files (x86)\PDFtk Server\bin\";
КаталогОбмена = "F:\Test\"; //ПУТЬ, ГДЕ СОХРАНИМ ФАЙЛ С ДАННЫМИ О PDF ФАЙЛЕ
		
ИмяФайлаРезультатаInfPDF = КаталогОбмена + "InfPDF.txt";
ТекстКомандыInfPDF = ИмяКаталогаУтилит + "pdftk.exe"" " + ИмяИсходногоФайла + " dump_data output " + """" + ИмяФайлаРезультатаInfPDF + """";
Скрипт.Run(ТекстКомандыInfPDF,0,1);
ФайлАнализа1 = Новый Файл(ИмяФайлаРезультатаInfPDF);
ФайлАнализа1.УстановитьВремяИзменения(ТекущаяДата());
ОбъектInfPDF = Новый ИзвлечениеТекста(ИмяФайлаРезультатаInfPDF);
ТекстInfPDF = ОбъектInfPDF.ПолучитьТекст();
		
Инд = 1;
стр = "";
КоличествоСтраниц = 0;
Пока стр <> "NumberOfPages: " Цикл
   НайтиСтроку = СтрПолучитьСтроку(ТекстInfPDF,Инд);
   Если Лев(НайтиСтроку,13) = "NumberOfPages" Тогда
      RegExp = Новый COMОбъект("VBScript.RegExp");
      RegExp.IgnoreCase = Истина; //Игнорировать регистр 
      RegExp.Global = Истина; //Поиск всех вхождений шаблона 
      RegExp.Pattern = "[^0-9]"; // отбор только чисел
      КоличествоСтраниц = Число(RegExp.Replace(НайтиСтроку, ""));
      Прервать;
   Иначе
      Инд = Инд + 1;
   КонецЕсли;
КонецЦикла;
//В ИТОГЕ МЫ НАШЛИ СТРОКУ ГДЕ ОБОЗНАЧЕНО КОЛИЧЕСТВО СТРАНИЦ, ТАКЖЕ МОЖНО ДОСТАТЬ ДРУГИЕ ДАННЫЕ

Далее программа Pdftk server при помощи команды "cat + "номер страницы"  + output" разбила мне файл PDF по страницам в цикле:

Страница = 1;
Пока Страница <= КоличествоСтраниц Цикл
	ИмяСводногоФайла = "page-" + (Формат(Страница, "ЧЦ=3; ЧВН=")) + ".pdf";        
	ИмяФайлаРезультата = КаталогОбмена + ИмяСводногоФайла;
	ТекстКоманды = ИмяКаталогаУтилит + "pdftk.exe"" " + ИмяИсходногоФайла + " cat " + Страница + " output " + """" + ИмяФайлаРезультата + """";
	Скрипт.Run(ТекстКоманды,0,1);
	ФайлАнализа = Новый Файл(ИмяФайлаРезультата);
	ФайлАнализа.УстановитьВремяИзменения(ТекущаяДата());
	Страница = Страница + 1;
КонецЦикла;

В итоге у меня в папке есть много файлов PDF по одной страничке, теперь мне необходимо прочитать каждый файл при помощи программы PDF2TXT:

Файлы = НайтиФайлы(КаталогОбмена,"*.pdf");
ПутьКPDF2TXT = "C:\Program Files (x86)\PDF2TXT"; 
Для каждого элемент из Файлы Цикл
	ПутьPDF = Элемент.ПолноеИмя;
	pdf = ПутьPDF;
	txt = СтрЗаменить(pdf,"pdf","txt");
	Команд = ПутьКPDF2TXT+"\pdf2txt.exe " + pdf + " " + txt; 
	ЗапуститьПриложение(Команд,,Истина);
	ОбъектТ = Новый ИзвлечениеТекста(txt);
	ТекстФ = ОбъектТ.ПолучитьТекст();
//////ДАЛЬШЕ МОЖЕТЕ ДЕЛАТЬ С ТЕКСТОМ ЧТО ХОТИТЕ, СРАВНИВАЙТЕ, ИЩИТЕ КАКУЮ-ТО ИНФОРМАЦИЮ//////

КонецЦикла;

 

Вот ссылки на программы: 

Pdftk Server

PDF2TXT (на 30 дней)

Решила дополнить статью, так как наша программа PDF2TXT бесплатна всего 30 дней, пришлось искать другой способ преобразования pdf в txt. Так вот, я нашла приложение pdftotext, вот как она работает в 1с:

НашФайл = ("F:\File.pdf");
ПутьКPDFtoTEXT = "F:\"; //например наш pdftotext лежит на диске F
pdf = НашФайл;
txt = СтрЗаменить(pdf,"pdf","txt");
Команд = ПутьКPDFtoTEXT +"pdftotext.exe " + "-enc UTF-8 " + pdf + " " + txt; 
ЗапуститьПриложение(Команд,,Истина);			

Мы создали текстовый файл в кодировке UTF-8, теперь его нужно прочитать:

ФайлЧтение  = Новый ЧтениеТекста(txt,КодировкаТекста.UTF8);    
ТекстФ = ФайлЧтение.Прочитать();
ФайлЧтение.Закрыть();

Вот где я скачала программу-помощницу:

Инструменты XPDF  (по ссылке скачать инструменты xpdf, в архиве найдете pdftotext,  остальные файлы не нужны)

Надеюсь, моя работа поможет многим!)

чтение текста из PDF разделение на страницы

См. также

SALE! 20%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141478    798    297    

419

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    23994    169    51    

127

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    51205    228    69    

185

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36577    94    66    

89

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56197    59    105    

61

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171158    303    257    

378

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186859    589    509    

526

SALE! 10%

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

55778 50200 руб.

24.04.2015    194960    150    243    

280
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. cool.vlad4 2 07.01.18 04:47 Сейчас в теме
делал свою компоненту Native на C++ пару лет назад, все никак руки доделать не дойдут ибо сейчас это не актуально, то что нашел, прикрепил. умеет сохранять страницы в текст(правда там поленился убрать вывод информации по шрифтам и прочему), в png, количество страница...но основная цель была сохранение в png
Прикрепленные файлы:
ЗаписатьPDFToPNG.epf
wild83; 7OH; ksnik; Паланик; andrey314; akR00b; Stalnoff; Zarikus26; tyasytova; sharonovev; AllexSoft; kraynev-navi; DrAku1a; Margo462; +14 Ответить
2. cool.vlad4 2 07.01.18 04:49 Сейчас в теме
(1)
м и прочему), в png, количество страница...но осн
если найду, выложу еще компоненту делал, которая наоборот собирает из изображений pdf
Zarikus26; DarkAn; kraynev-navi; +3 Ответить
16. kraynev-navi 681 09.01.18 15:19 Сейчас в теме
(2) Иногда вот так сталкиваешься, часами ищешь решение как ТС. Крутишь ghost, sumatra (https://www.sumatrapdfreader.org/docs/Command-line-arguments.html - кстати, бесплатная тулза), пробуешь на своих данных и мощностях и думаешь, блин, ну умел бы писать нативные компоненты, написал бы уже изящно и работало бы всегда.
Спасибо за труд! (утащил к себе в нору)
3. Margo462 500 07.01.18 15:33 Сейчас в теме
(1) обязательно пригодиться, спасибо)
25. 🅵🅾️🆇 524 12.01.18 11:11 Сейчас в теме
(0) (1) Можно воспользоваться tesseract ocr (смотрите на github'е)
Там крайне много возможностей, в том числе можно получать не только сырой текст, но и положение онного на странице.

Ставиться не сложно, на лине так вообще одной строкой в терминале.
Под винду уже есть собраные версии.
28. cool.vlad4 2 12.01.18 14:20 Сейчас в теме
(25) ага, и качество распознавания ниже плинтуса, пробовал я его, тут речь идет об извлечении текста, который не нужно распознавать, он и так текст
41. sharonovev 18.06.18 10:52 Сейчас в теме
(1)Наше то,. что долго искал.

Есть вопрос - попробовал использовать закомментированный кусок кода:

ДвДанные = Конвертер.ПолучитьДанныеИзображения();

Платформа благополучно отъезжает.

На сохранении файла - работает корректно все.

Этот метод работает?

(1)
49. andrey314 14 14.01.22 18:28 Сейчас в теме
(1)Спасибо. А исходниками не компоненты не поделитесь?
56. Паланик 8 22.09.22 12:51 Сейчас в теме
По
(1) Дружище, спасибо за обработку!!! Сильно выручил!
4. DarkAn 1093 09.01.18 10:03 Сейчас в теме
Я в свое время тоже разбирался с разбиением ПДФов. Мне понравилась программа GostScript, в ней разбиение многостраничного файла делается одной командой: вот строка из bat-файла

call "C:\Program Files\gs\gs9.20\bin\gswin64.exe" -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r100 -sPAPERSIZE=a4 -sOutputFile="Z:\!\doc-%03d.png" "Z:\!\1234.pdf"

Здесь:
"Z:\!\1234.pdf" - путь к многостраничному фалу
-sOutputFile="Z:\!\doc-%03d.png" - параметр говорит о создании файлов по маске (1 страница - 1 файл): doc-001.png, doc-002.png, doc-003.png, ...

В свое время остановился, на попытке понять как обработать не 1, 2, 3 многостраничный файлов, а 100+ (так до конца и не разобрался с параметрами). Может время придет - вернусь к работе
5. DarkAn 1093 09.01.18 10:06 Сейчас в теме
6. DrAku1a 1745 09.01.18 10:44 Сейчас в теме
Без компонент, на двоичных данных бы... За такое и 10 $m не жалко будет!
Где-то на ИС встречал в комментариях "Количество страниц в PDF-файле".
7. Margo462 500 09.01.18 11:28 Сейчас в теме
(6) интересно...хотелось бы, а то этот конвертер PDF2TXT на 30 дней, еще ключи искать, бесплатную прогу найти пока не смогла
27. 🅵🅾️🆇 524 12.01.18 11:13 Сейчас в теме
(7) Можно воспользоваться tesseract ocr (смотрите на github'е)
Там крайне много возможностей, в том числе можно получать не только сырой текст, но и положение онного на странице.

Ставиться не сложно, на лине так вообще одной строкой в терминале.
Под винду уже есть собраные версии.

UPD:
Если вопрос стоит как "искать ключи", то очивидный FineReader очивиден, дальше торрентов искать не придеться ;-)

Также практически на 100% уверен, что у гугла есть подобный вебсервис, там вроде хотели денюжек, но крайне мало и возможно есть "триал".
29. Margo462 500 13.01.18 19:58 Сейчас в теме
(27) посмотрите я дополнила статью, нашла бесплатное приложение pdftotext, работает тоже из командной строки :)
32. 🅵🅾️🆇 524 15.01.18 10:21 Сейчас в теме
(29) Это не спортивно :3
Я прохлопал ушами, что у вас изначально PDF содержащий сырой текст:
https://habrahabr.ru/post/69568/

Для ковыряния двоичных данных под окнами лучше использовать бесплатный HxD
9. DarkAn 1093 09.01.18 14:18 Сейчас в теме
(6) (7) Из личного: для решения описанной задачи (0) мы сначала воспользовались программой ABBYY Scan Station (ABBYY - по запросу спокойно предоставляет 30-дневный ключ, спокойно предоставили продление еще на 1 месяц, для тестов), после чего мы сделали приобретение, т.к. софтина ОЧЕНЬ проста в настройке и хорошо выполняет обозначенную задачу (но без распознавания).

Единственный ее недостаток и весьма значительный - это не возможность ее запустить с командной строки - то есть нет запуска по расписанию.
Но из плюсов я бы назвал цену 2-3 года назад она составляла 24 000 руб. или 10 часов франча (на тот момент).

Так мы поигрались наверное с год, пока мне не надоело запускать каждый день данную сфотину и мы приобрели ее расширенную версию - ABBYY Recognation Server. В данной софтине настроек и возможностей поболее - работает на УРА уже 1,5 года. Есть еще распознавание и индексирование - последнее требует работу оператора (при приобретении удалось зачесть стоимость ранее приобретенной ABBYY Scan Station).

По ценам уже значительно дороже и цена зависит от количества распознанных страниц в месяц. На сегодня у нас 50к страниц и этого пока хватает (1 числа каждого месяца счетчик сбрасывается).
Цены опять же в открытых источниках не найти, но я их так же приведу для понимания: Сама программа + лицензия на 15к страниц - 215 000 руб, апгрейд с 15к до 50к страниц- 170к руб, апгрейд с 15к до 100к страниц - 247к руб (цены на июль 2016)

Стоимость разовая и в дальнейшем доплат не требует.

Это не реклама, просто показал, что решили использовать у нас в организации. Иногда может быть значительно эффективнее купить готовый продукт, чем писать свое с нуля. С нуля для разработчика хорошо - ты учишься работать с "новым", но работодатель не всегда может быть заинтересован оплачивать таким образом твое обучение, если стоит вопрос в сроках и качестве (ведь сколько еще времени уйдет на отладку "подводных камней").

P.S.
Кстати в 1С Документооборот используют так же сторонние библиотеки, тот же самый GostScript указанный в (4) для "распиливания" файлов, а для распознавания другую не помню как называется. От туда можно было бы глянуть как они это делают, но пока у меня нет на это времени да и описаный выше софт решает поставленную задачу.
10. Margo462 500 09.01.18 14:36 Сейчас в теме
(9) за 215 тр я сама буду эти файлы распознавать :-D слишком дорого))
11. DarkAn 1093 09.01.18 14:45 Сейчас в теме
(10) ну я же в конце дал наводку, где посмотреть, как делают в 1С :)
12. Margo462 500 09.01.18 14:49 Сейчас в теме
13. DarkAn 1093 09.01.18 14:53 Сейчас в теме
(10) Кроме того вопрос цены, это не вопрос разработчика - не его это зона ответственности. А финансового директора или Гл. буха. Придете к ним и спросите: поставленную задачу можно решить как минимум 2мя путями. Первый вот счет на 215к и запустим через 3-5 дней. Второй писать самим, но так как мы с этими библиотеками еще не работали (опыта нет) то для полной автоматизации может потребоваться гораздо больше времени и разработчик будет занят и еще по ходу дела ошибки будем отлаживать :) Вот они пусть и принимают решение о том дорого это или нет, но ни как не разработчик :)
14. Margo462 500 09.01.18 15:03 Сейчас в теме
(13) я думаю что даже если бы прога 1 тр стоила, то все равно пришлось бы искать бесплатный способ)
15. DarkAn 1093 09.01.18 15:13 Сейчас в теме
(14) Еще раз повторюсь, стоимость это не вопрос разработчика.

(14)
я думаю
- это подтверждает. Решается приближенно достаточно просто. Возьмите свою часовую ставку помножте ее на предполагаемое время разработки и изучения, потом помножте еще раз на 2 и сравните со стоимость программы. Это приблизительно :)
lokli; klinval; pfilyk; +3 1 Ответить
17. Margo462 500 09.01.18 15:24 Сейчас в теме
(15) то, что мне нужно было готового такого нет, я скоро опубликую обработку где я это применила, по мне так проще программу PDF2TXT оплатить, там вроде 2 тр она стоит и обновления в течение года))
18. DarkAn 1093 09.01.18 15:34 Сейчас в теме
(17)
что мне нужно было готового такого нет
Ну Вы же не описали, что Вам нужно. А то что описано, я привел альтернативы и их значительно больше и по разной цене. Все зависит от Вашей занятости :)

Но мы уже отходим от темы. Появится Ваша разработка посмотрим, насколько она "уникальна". Даже самому интересно, так как механизм прикрепления файлов к объектам базы 1С сам реализовывал. Но у Вас возможно другая разработка, но интересные идеи и направления можно найти.
21. Margo462 500 09.01.18 16:28 Сейчас в теме
(18) https://infostart.ru/public/724762/ вот, ну это я сама такое придумала как к выпискам pdf подцеплять, может у кого-то будут другие мысли как это осуществить))))
22. DarkAn 1093 09.01.18 16:38 Сейчас в теме
(21)
думала как к выпискам pdf

Спасибо!
23. Margo462 500 09.01.18 17:05 Сейчас в теме
(22) убрала с публикации, как исправлю на временный каталог тогда опубликую)
57. kat__ 13.12.22 18:26 Сейчас в теме
(23) добрый день!
а не доделали обработку? очень надо такое
30. Margo462 500 13.01.18 19:59 Сейчас в теме
(18) посмотрите я дополнила статью, нашла бесплатное приложение pdftotext, работает тоже из командной строки :)
26. 🅵🅾️🆇 524 12.01.18 11:12 Сейчас в теме
(6) Предположу, что там использовался некий маркер в ДД PDF файла.
Если онный существует, то крайне просто нагуглить, а сделать еще проще.

UPD:
Попробуйте взять бесплатный HxD и поковырять различные PDF файлы, как с текстом, так состоящие из картинок.

UPD 2:
(0) Глянул сам, прям на вскидку как определить количество страниц:
Подключаете файл как поток двоичных данных на чтение, считаете количество повторений ("/Type/Page")
Попробуйте глянуть HxD ручками, все станет понятно.
Но вероятнее всего есть способ еще проще, в PDF файле может содержаться некий маркер который заранее "знает" количество страниц.
8. Dzenn 894 09.01.18 11:49 Сейчас в теме
Согласен, pdftk хорошая, годная компонента
19. comptr 35 09.01.18 15:54 Сейчас в теме
А зачем сначала перегонять PDF в ДвоичныеДанные, а потом их сохранять как PDF? Я про первые 4 строки кода.
20. Margo462 500 09.01.18 16:22 Сейчас в теме
(19) да это наверное уже лишнее, раньше ошибка была, потом не убирала просто, щас уберу)
24. Lewkis 10.01.18 07:52 Сейчас в теме
Всем добрый день. Хочу тоже поделиться своими наработками в этой области. Делал для своих нужд скрипт на Python для извлечения текста из PDF.

Если интересно, вот ссылка https://github.com/yoyuyoppe/Converter-PDF.git.

Зависимости: должен стоять python 3.x и библиотека для разбора pdf (pip install pdfminer3k)

Приложил пример запуска скрипта из 1С.
Прикрепленные файлы:
ksnik; akR00b; chinkovs; Идальго; kote; AllexSoft; sashocq; Dementor; DrAku1a; Snark13; DarkAn; Margo462; +12 Ответить
31. Margo462 500 13.01.18 19:59 Сейчас в теме
(24) посмотрите я дополнила статью, нашла бесплатное приложение pdftotext, работает тоже из командной строки :)
50. Dorn2007 28.01.22 14:35 Сейчас в теме
(31) добрый день пробую такой код
ПутьКPDF2TXT = "D:\";
	ПутьPDF = ИмяФайла;
	pdf = ПутьPDF;
	txt = СтрЗаменить(pdf," ","");
	Команд = ПутьКPDF2TXT + "\pdftotext.exe " + "-enc UTF-8 " + pdf + " " + txt;
	ЗапуститьПриложение(Команд, , Истина);
	ОбъектТ = Новый ИзвлечениеТекста(txt);
	ТекстФ = ОбъектТ.ПолучитьТекст();	

выдает ошибку
Ошибка извлечения текста из файла
{ВнешняяОбработка.ЗагрузкаСчетов.Форма.Форма.Форма(130)}: ТекстФ = ОбъектТ.ПолучитьТекст();
{ВнешняяОбработка.ЗагрузкаСчетов.Форма.Форма.Форма(118)}: ПреобразоватьФайл(ИмяФайла);

по причине:
Ошибка извлечения текста из файла
что не так?
33. spezc 792 16.01.18 10:06 Сейчас в теме
Хорошая статья, держи звезду.
34. spezc 792 16.01.18 10:08 Сейчас в теме
По горячим следам задам вопрос, кто знает как из 1С вставить картинку в PDF? У меня есть скан документа в PDF, у меня есть *.png/*.gif с макетом печати. Мне нужно получить PDF, в котором будет этот шаблон печати будет добавлен на первую (на все) страницу оригинального PDF?
35. altu71 19.01.18 08:52 Сейчас в теме
Можно упростить процесс, если использовать iFilter для PDF, например отсюда ADOBE. Тогда текст можно получить сразу из PDF файла объектом "ИзвлечениеТекста"
утюгчеловек; +1 Ответить
36. Margo462 500 19.01.18 09:21 Сейчас в теме
(35) пробовала, не получается, у нас adobe reader ограниченная версия, может поэтому...
37. altu71 19.01.18 10:07 Сейчас в теме
Ссылка, которую я вставил, на бесплатный официальный установочный файл от adobe. Достаточно его одного, можно acrobat вообще не ставить
38. Margo462 500 19.01.18 10:56 Сейчас в теме
(37) спасибо, как нибудь попробую, может получится в этот раз
39. eugenevk 208 29.03.18 17:11 Сейчас в теме
Хорошо описан pdftk server. Правда не учтено, что программа совершенно не переваривает русские буквы в каталогах и именах файлов. Когда-то давно с этим сталкивался. Проверил, все по-прежнему. Не хотят зарубежные разработчики поддерживать utf(

Вынес в отдельную обработку обход проблемы с русскими буквами, а также встроил портированный exe, чтобы не устанавливать:
Прикрепленные файлы:
СборкаРазборкаPDF.epf
nemo888; AlexS2; OStepanych; kubatay; Shamil Kulahmetov; Margo462; +6 Ответить
40. plus_sign 4 10.06.18 11:18 Сейчас в теме
(39)Большое спасибо за способ обхода проблемы с русскими буквами. Пригодилось в работе.
Часть команд pdftk без проблем глотают русские буквы в любом количестве. А вот команды dump_data* и правда не воспринимают русские буквы в имени выходного файла.
42. kras01 09.10.18 14:10 Сейчас в теме
Если надо кому,переделал обработку из поста 1 под управляемые формы
Прикрепленные файлы:
СборкаРазборкаPDF.epf
nemo888; rybakovaN; OStepanych; alevnev; +4 Ответить
60. nemo888 01.11.24 12:12 Сейчас в теме
(42) Спасибо вам за превосходную обработку! Вместе с автором статьи вы очень помогли и наверное не только мне.
43. ReDvAlL 04.09.19 12:12 Сейчас в теме
Далее программа Pdftk server при помощи команды "cat + "номер страницы" + output" разбила мне файл PDF по страницам в цикле:

Как вариант (даже наверное предпочтительнее) использовать следующую команду:
pdftk.exe ВашИсходныйФайлPDFКоторыйНадоРазбитьНаСтраницы.pdf burst

На выходе получим столько файлов PDF, сколько было страниц в исходном файле + doc_data.txt с той же технической информацией об исходном PDF, что нам возвращает dump_data. Имена у файлов будут pg_0001, pg_0002, pg_0003 и т.д.

Небольшой кусочек справки о команде burst с сайта pdflabs:
Splits a single input PDF document into individual pages. Also creates a report named doc_data.txt which is the same as the output from dump_data. If the output section is omitted, then PDF pages arenamed: pg_%04d.pdf, e.g.: pg_0001.pdf, pg_0002.pdf, etc. To name these pages yourself, supply a printf-styled format string in the output section. For example, if you want pages named: page_01.pdf, page_02.pdf, etc.,pass output page_%02d.pdf to pdftk.

P.S. За статью большое спасибо!
45. sp18s 17.09.20 16:44 Сейчас в теме
Здравствуйте! Задача следующая.
Есть несколько pdf файлов. Там изображения.
Необходимо получить новый pdf файл на 1 страницу с размещением в нём этих изображений в произвольном виде. Например, первый файл - слева, второй - справа сверху, третий - справа снизу.
Еще должен быть добавлен разный текст. Например, артикул, серия, модель товара и т.д.
Кроме того, результирующий файл должен быть в векторном виде. Для качественной печати.
Как пример такого - инструкция по сборке товара, собранная на основании нескольких pdf файлов.
Такое возможно сделать с Вашей компонентой?
46. Margo462 500 03.10.20 00:16 Сейчас в теме
47. Detache 13.08.21 10:46 Сейчас в теме
Добрый день! Задача определить максимальное разрешение картинок в dpi, чтобы принять решение о необходимости сжатия файла pdf. В растровом PDF есть параметр разрешения в dpi. Adobe также может определять размеры картинок в dpi https://yadi.sk/i/qZg0jjiIiXF8qg

Знаете какие инструменты для этого можно использовать для запуска из командной строки?
48. Detache 13.08.21 12:49 Сейчас в теме
(47) Нашел нужные утилиты pdfinfo и pdfimages в составе xpdf tools
52. user1741384 09.02.22 17:22 Сейчас в теме
Есть файл с пдф, выписка из банка на 800+ страниц, кто может перевести в 1С формат?
Отблагодарю, пишите на почту
(48)
51. user1741384 09.02.22 17:20 Сейчас в теме
Есть файл с пдф, выписка из банка на 800+ страниц, кто может перевести в 1С формат?
Отблагодарю, пишите на почту gruppdizel@yandex.ru
53. ipoloskov 164 11.05.22 12:35 Сейчас в теме
ДокументPDF (PDFDocument)
Доступен, начиная с версии 8.3.21.
Свойства:
Вложения (Attachments)
ТипФайла (FileType)
Методы:
ДобавитьОтображаемыйОбъект (AddRepresentationObject)
ДобавитьОтображаемыйОбъектАсинх (AddRepresentationObjectAsync)
ДобавитьПодпись (AddSignature)
ДобавитьПодписьАсинх (AddSignatureAsync)
Записать (Write)
ЗаписатьАсинх (WriteAsync)
КоличествоСтраниц (PageCount)
Напечатать (Print)
ПолучитьОписанияПодписей (GetSignatureDescriptions)
ПолучитьОписанияПодписейАсинх (GetSignatureDescriptionsAsync)
ПроверитьПодписи (VerifySignatures)
ПроверитьПодписиАсинх (VerifySignaturesAsync)
ПроверитьПодпись (VerifySignature)
ПроверитьПодписьАсинх (VerifySignatureAsync)
Прочитать (Read)
ПрочитатьАсинх (ReadAsync)
Конструкторы:
По умолчанию
Описание:
Предназначен для работы с PDF-документом.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.3.21.
54. user1234601 11.05.22 18:44 Сейчас в теме
Добрый день! Подскажите пожалуйста, как в 1с можно определить, что pdf файл защищен паролем?
55. silverr 13 20.05.22 12:30 Сейчас в теме
Всем доброго времени суток!
Появилась и у меня такая задача преобразования PDF-файла. От себя добавлю, оператор "-layout" для PDFTOTEXT делает таблицу документа более читаемой. Нашел еще информацию по данной проблеме: "Как извлечь данные таблицы из PDF как CSV из командной строки?". В ней есть упоминание о загадочном операторе "-bbox", описание в мануале отсутствует, пример использования мне не совсем понятен.
Может топспикер поделится опытом из своей практики работы с PDFTOTEXT.
58. vlch 24.01.23 10:13 Сейчас в теме
(55)
Из состава Ubuntu

pdftotext version 22.02.0
Copyright 2005-2022 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
Usage: pdftotext [options] <PDF-file> [<text-file>]
-f <int> : first page to convert
-l <int> : last page to convert
-r <fp> : resolution, in DPI (default is 72)
-x <int> : x-coordinate of the crop area top left corner
-y <int> : y-coordinate of the crop area top left corner
-W <int> : width of crop area in pixels (default is 0)
-H <int> : height of crop area in pixels (default is 0)
-layout : maintain original physical layout
-fixed <fp> : assume fixed-pitch (or tabular) text
-raw : keep strings in content stream order
-nodiag : discard diagonal text
-htmlmeta : generate a simple HTML file, including the meta information
-enc <string> : output text encoding name
-listenc : list available encodings
-eol <string> : output end-of-line convention (unix, dos, or mac)
-nopgbrk : don't insert page breaks between pages
-bbox : output bounding box for each word and page size to html. Sets -htmlmeta
-bbox-layout : like -bbox but with extra layout bounding box data. Sets -htmlmeta
-cropbox : use the crop box rather than media box
-colspacing <fp> : how much spacing we allow after a word before considering adjacent text to be a new column, as a fraction of the font size (default is 0.7, old releases had a 0.3 default)
-opw <string> : owner password (for encrypted files)
-upw <string> : user password (for encrypted files)
-q : don't print any messages or errors
-v : print copyright and version info
-h : print usage information
-help : print usage information
--help : print usage information
-? : print usage information
59. nemo888 01.11.24 12:10 Сейчас в теме
Спасибо автор! Вы мне очень помогли в создании обработки по разделению pdf-файлов.
Так же спасибо автору kras01 !
Оставьте свое сообщение