По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) ch-15, можно использовать вариант как в http://infostart.ru/public/138484/ - но по моему недовольному комментарию там, видно что решение далеко от идеала. лучше написать ВК на базе все той же mupdf. но проблема вся в том, что считывается именно текст, без всякого форматирования. меня это не устроило.
Нашел такое решение:
файл="C:\Doc187.pdf";
Объект= новый ИзвлечениеТекста(файл);
ТекстФ=Объект.ПолучитьТекст();
Сообщить(ТекстФ);
Для работы нужно установить Adobe PDF IFilter v6.0 (http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=2611&fileID=2457 )
Вытягивает все одной строкой, но разобрать можно.
файл="C:\Doc187.pdf";
Объект= новый ИзвлечениеТекста(файл);
ТекстФ=Объект.ПолучитьТекст();
Сообщить(ТекстФ);
Для работы нужно установить Adobe PDF IFilter v6.0 (
Вытягивает все одной строкой, но разобрать можно.
года 3-4 назад решал одному клиенту подобную задачу, на 7-ке.
может тупо, может в лоб...
короче, в и-нете надыбал бесплатную программулю, работала кроме оконного режима из командной строки. передавал на входе файл pdf, на выходе получал текстовик.
дальше распарсил как мне нужно и все...
как называлась программуля - убейте не вспомню
может тупо, может в лоб...
короче, в и-нете надыбал бесплатную программулю, работала кроме оконного режима из командной строки. передавал на входе файл pdf, на выходе получал текстовик.
дальше распарсил как мне нужно и все...
как называлась программуля - убейте не вспомню
(7) whtblck, чего вспоминать, когда в (4) и (5) уже привели ссылку на публикацию, где и используется консольная программа, авторство которой не принадлежит опубликовавшему обработку. pdftotext. да, что там помнить. берется гугль, вводится - pdf text extractor open source or free
Раньше писал это счастье вот наброски
так что вот так
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Фильтр = НСтр("ru = ""Текст""; en = ""Text""")+"(*.pdf)|*.pdf";
ДиалогОткрытияФайла.Заголовок = "Выберите файл";
ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина;
Если Не ДиалогОткрытияФайла.Выбрать() Тогда
Возврат;
КонецЕсли;
ФайлPDF = ДиалогОткрытияФайла.ПолноеИмяФайла;
КаталогВременныхФайлов = КаталогВременныхФайлов();
ДанныеОДоставке=Новый ТаблицаЗначений;
ДанныеОДоставке.Колонки.Добавить("ТипЗаявки");
ДанныеОДоставке.Колонки.Добавить("НомерВКС");
ДанныеОДоставке.Колонки.Добавить("НомерНаш");
ДанныеОДоставке.Колонки.Добавить("Субагент");
ДанныеОДоставке.Колонки.Добавить("Доставка");
ДанныеОДоставке.Колонки.Добавить("Самовывоз");
ДанныеОДоставке.Колонки.Добавить("Чек");
ДанныеОДоставке.Колонки.Добавить("Компл");
ДанныеОДоставке.Колонки.Добавить("Забор");
ДанныеОДоставке.Колонки.Добавить("Подготовка");
ДанныеОДоставке.Колонки.Добавить("ПолучиноОтКлиента");
ДанныеОДоставке.Колонки.Добавить("ОбъявленнаяСтоиомсть");
МакетУтилиты = ПолучитьМакет("pdftotext");
Адрес = ПоместитьВоВременноеХранилище(МакетУтилиты, Новый УникальныйИдентификатор);
ФайлУтилиты1 = КаталогВременныхФайлов + "pdftotext.exe";
ДанныеХранилища = ПолучитьИзВременногоХранилища(Адрес);
УдалитьИзВременногоХранилища(Адрес);
ДанныеХранилища.Записать(ФайлУтилиты1);
МакетУтилиты = ПолучитьМакет("hstart");
Адрес = ПоместитьВоВременноеХранилище(МакетУтилиты, Новый УникальныйИдентификатор);
ФайлУтилиты2 = КаталогВременныхФайлов + "hstart.exe";
ДанныеХранилища = ПолучитьИзВременногоХранилища(Адрес);
УдалитьИзВременногоХранилища(Адрес);
ДанныеХранилища.Записать(ФайлУтилиты2);
МакетУтилиты = ПолучитьМакет("xpdfrc");
Адрес = ПоместитьВоВременноеХранилище(МакетУтилиты, Новый УникальныйИдентификатор);
ФайлУтилиты3 = КаталогВременныхФайлов + "xpdfrc";
ДанныеХранилища = ПолучитьИзВременногоХранилища(Адрес);
УдалитьИзВременногоХранилища(Адрес);
ДанныеХранилища.Записать(ФайлУтилиты3);
ТекстКоманды = """" + КаталогВременныхФайлов + "hstart.exe"" /NOCONSOLE /WAIT ""pdftotext.exe -layout """ + ФайлPDF + """ """ + КаталогВременныхФайлов + "temp.txt""""";
WshShell = Новый COMОбъект("WScript.Shell");
WshShell.Run(ТекстКоманды, 5, 1);
Текст = Новый ЧтениеТекста(КаталогВременныхФайлов+"temp.txt", КодировкаТекста.UTF8);
Стр = Текст.ПрочитатьСтроку();
ЕстьНачало=Ложь;
Пока Стр <> Неопределено Цикл
Если НЕ ЕстьНачало Тогда
Пока Найти(Стр," ")>0 Цикл
Стр=СтрЗаменить(Стр," "," ");
КонецЦикла;
Если СокрЛП(стр)="1 2 3 4 5 6 7 8 9" Тогда
ЕстьНачало=Истина;
КонецЕсли;
ИНаче
Если Найти(Стр,"Итого:")>0 Тогда
ЕстьНачало=Ложь;
Продолжить;
КонецЕсли;
Стр=СокрЛП(Стр);
Пока Найти(Стр," ")>0 Цикл
Стр=СтрЗаменить(Стр," "," ");
КонецЦикла;
ПервыйПробел=Найти(Стр," ");
Если ПервыйПробел>0 Тогда
Попытка
ЧИслостроки=Число(Сред(Стр,1,ПервыйПробел));
Исключение
ЧИслостроки=0;
КонецПопытки;
массивДанных=Новый Массив;
Если ЧИслостроки>0 Тогда
массивДанных=РасшифроватьСтрокуВМассив(Стр);
ИНаче
массивДанных.Очистить();
КонецЕсли;
Если массивДанных.Количество()>7 Тогда
СтрокаВтаблице1С=ДанныеОДоставке.Добавить();
СтрокаВтаблице1С.НомерВКС=СокрЛП(массивДанных[2]);
СтрокаВтаблице1С.НомерНаш=СокрЛП(массивДанных[2]);
СтрокаВтаблице1С.ТипЗаявки="заявка";
СтрокаВтаблице1С.Доставка=Число(массивДанных[6]);
СтрокаВтаблице1С.Чек=Число(массивДанных[7]);
СтрокаВтаблице1С.ПолучиноОтКлиента=Число(массивДанных[5]);
СтрокаВтаблице1С.ОбъявленнаяСтоиомсть=Число(массивДанных[4]);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
Текст.Закрыть();
УдалитьФайлы(КаталогВременныхФайлов + "temp.txt");
УдалитьФайлы(КаталогВременныхФайлов + "pdftotext.exe");
УдалитьФайлы(КаталогВременныхФайлов + "hstart.exe");
УдалитьФайлы(КаталогВременныхФайлов + "xpdfrc");
Показатьтак что вот так
Прикрепленные файлы:
hstart.exe
pdftotext.exe
xpdfrc.exe
(13) Спасибо , помогло в решении задачи.
Нужно было реализовать чтение Этикетки ОЗОН в PDF формате.
Озон в штрихкод какой-то свой уникальный номер записывают.
Мы никак не могли этот УИД связаться с нашим номером отправления при сканировании штрих кода у себя.
Теперь можно!
Нужно было реализовать чтение Этикетки ОЗОН в PDF формате.
Озон в штрихкод какой-то свой уникальный номер записывают.
Мы никак не могли этот УИД связаться с нашим номером отправления при сканировании штрих кода у себя.
Теперь можно!
(23) 1. PdfToText не распознает, а вытаскивает текст из файла при его наличии.
2. Текст в pdf наличествовать не обязан, даже если вам кажется что он там есть. Ибо любая страница может быть одной картинкой на всю страницу.
3. Распознают PDF программы типа FineReader.
2. Текст в pdf наличествовать не обязан, даже если вам кажется что он там есть. Ибо любая страница может быть одной картинкой на всю страницу.
3. Распознают PDF программы типа FineReader.
Я тоже использовала pdftotxt, и все получилось
осталось Вам только программу поискать :)
ПутьКPDF2TXT = "C:\Program Files (x86)\PDF2TXT";
ПутьPDF = Элемент.ПолноеИмя;
pdf = ПутьPDF;
txt = СтрЗаменить(pdf,"pdf","txt");
Команд = ПутьКPDF2TXT+"\pdf2txt.exe " + pdf + " " + txt;
ЗапуститьПриложение(Команд,,Истина);
ОбъектТ = Новый ИзвлечениеТекста(txt);
ТекстФ = ОбъектТ.ПолучитьТекст();
осталось Вам только программу поискать :)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот