Имя: Пароль:
1C
1C 7.7
v7: Распарсить PDF в TXT
0 mishaPH
 
24.08.11
13:45
Коллеги, есть задачка.
приходят к нам от 7г континента акты о приеме товара в формате pdf.
нужно их распарсить и сравнить с накладными отгрузок им.

В общем есть некие конверторы с текстовой строкой чтобы его в текстовый файл затащить а далее обработать.
А делал ли кто подобное в 7ке. может есть какая компонента чтобы из 7ки рулить или вообще сразу прочитать пдфку.
пдф текстовый не картинка.
1 andrewks
 
24.08.11
13:49
ого
а в другом формате они не могут слать?
2 Холст
 
24.08.11
13:50
имхо бесполезняк пытаться полученный текст разбирать
ПДФ трансформер (им помоему и в автоматическом режиме можно) разбирать док в эксель файл а потом разбирать эксельку
3 trdm
 
24.08.11
13:52
Шмахабра говорил что есть актив-ха который может пдф жевать.
Тусуется где то в составе продуктов адоба, это у него спрашивать надо.
ПС. за пдф в обмене данных надо топить еще при рождении.
4 mishaPH
 
24.08.11
13:56
(1) да попробуй.
(2) да ладно обычный даже пдф ридер может сохранять текст в ТХТ

(3) да есть конвертеры говорю даже с командной строкой. не проблема завязаться на него. Но интересует ваш опыт.
5 ildary
 
24.08.11
13:56
Я делал подобное (добрый человек на мисте делился основой для чтения пдф), но было 2 нюанса - 1) данные в пдф должны быть не в виде картинки 2) хранение в пдф бывает с придурью в тот момент, когда данные не влазят на одну строку.
6 Господин ПЖ
 
24.08.11
13:59
чего его парсить... "save as" в xml или еще во что-то вменяемое и читать... полный акробат делать "save as" программно умеет.
7 trdm
 
24.08.11
14:01
Блин, легче из ворда получить данные чем с пдфа )
8 andrewks
 
24.08.11
14:02
(6) нахрена полный пдф? даже бесплатный ридер может в тхт сохранить
9 andrewks
 
24.08.11
14:03
+(8) *полный акробат
10 aka AMIGO
 
24.08.11
14:04
я пользуюсь FineReader"ом..
правда, у меня не так много пдф-документов
11 mishaPH
 
24.08.11
14:09
(10) есть такое тормозно. да им если там картинки проще.
(8) может. руками. а надо автоматом. если знаешь коммандную строку как сделать. напиши.
12 Господин ПЖ
 
24.08.11
14:13
(8) не может...
13 andrewks
 
24.08.11
14:13
(12) может. только что сохранил. такшта не надо
14 andrewks
 
24.08.11
14:14
+(13)если что, 10-й юзаю
15 mishaPH
 
24.08.11
14:14
(12) может. не проблема
16 mishaPH
 
24.08.11
14:15
но тут надо автоматом чтобы было. доков очень много и человек участвовать не должен в этом.
17 mishaPH
 
24.08.11
14:16
http://www.coolutils.com/ru/PDF-to-TXT

Вот нарыл. но может есть бесплатная фигня а может кто и библиотечку писал.
18 Господин ПЖ
 
24.08.11
14:17
savefile

Sub savefile

Dim acroApp
Dim acroAV
Dim acroPD
Dim jso

sfile = "C:\222.pdf"

Set acroApp = CreateObject("AcroExch.App")
Set acroPD = CreateObject("AcroExch.PDDoc")

acroPD.Open sfile

Set jso = acroPD.GetJSObject

jso.saveAs "C:\\TEMP\\333.xml", "com.adobe.acrobat.xml-1-00", "", true

acroPD.Close
acroApp.CloseAllDocs
acroApp.Exit

Set acroPD = Nothing
Set acroApp = Nothing

End Sub
19 andrewks
 
24.08.11
14:17
(11) ключей ком.строки на это дело, похоже, нет. а если сендкеями?
20 mishaPH
 
24.08.11
14:19
(18) это как к 7ке прикрутить. простите за необразованность
21 andrewks
 
24.08.11
14:19
(18) это с платным акробатом, как я вижу?
22 Господин ПЖ
 
24.08.11
14:21
(20) ну банально можно оформить в виде vbs скрипта... из 7.7 через shell.run дергать его с передачей внутрь параметров... или попробовать переписать. Я не помню как 7.7 com объект получать надо для CreateObject("AcroExch.App").
23 andrewks
 
24.08.11
14:22
за сохранение в текст отвечает плагин saveasrtf.api
24 Господин ПЖ
 
24.08.11
14:22
(21) ну я думаю общий смысл будет тот же. Объекты может быть будет иные... так в SDK и гугле все есть...
25 Господин ПЖ
 
24.08.11
14:22
(23) ооо... там видать вообще все иначе...
26 andrewks
 
24.08.11
14:23
было бы просто замечательно, если бы бесплатный ридер поставлял ком-объекты. вопрос, так ли это? надо гуглить
27 andrewks
 
24.08.11
14:28
вот по ком.строке:
http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf

ессесно, того, что надо, там нет
28 Злопчинский
 
24.08.11
14:34
в свое время была анлогичная ТС проблема. Все конверторы идут лесом. Если надо конвертнуть текст - то тут можно сказать ОК. Конвертация таблиц и таблицеподобного - практически нулевая, потом практически руками собирать из текста.
.
так что если пдф можно конвертнуть в иксемель, то это гуд, иксемель парсить ужо легче. другое дело что практически на каждый док или чуть изменилось что-то в доке - придется алгоритм подкручивать... (както так?)
29 andrewks
 
24.08.11
14:37
почитай здесь, вроде что-то светится нужное
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/reader/pdfs/reader_overview.pdf
30 mishaPH
 
24.08.11
14:37
(28) таблички нафик не нужны. мне нежен текст который я отработаю далее сам. вполне устраивает как это делает пдф ридер когда сохраняешь в тхт
31 mishaPH
 
24.08.11
15:47
епть. все осложняется еще и тем, что X5 групп от которой приходит этот пдф, конвертер который с коммандной строкой работает за пдф не принимает. какой то слегка свой формат.
Но ридер читает.
32 FN
 
24.08.11
15:52
(31) давно уже решил такую проблему. только решение не со всеми файлами проходит.
скинь пример файла на почту или файлообменник
33 Злопчинский
 
24.08.11
15:54
ну.. х5 с еди работает, вроде как там у них даже есть ответ по еди о приемке - тот самый акт...
34 mishaPH
 
24.08.11
15:55
(33) кстати. пойду с манагерами пообщаюсь
35 mishaPH
 
24.08.11
15:55
заказы получаем
36 mishaPH
 
24.08.11
15:57
через ЕДИ мы с ними не работаем. работаем с каким-то порталом от них а там только заказы.
37 Torquader
 
24.08.11
16:01
(31) В pdf хорошо кладутся отсканированные документы, в которых текста может и не быть - не ваш случай ?
38 mishaPH
 
24.08.11
16:02
(37) нет. это чисто текстовый пдф. прекрасно текст сохраняется даже адоб ридером
39 FN
 
24.08.11
16:04
Функция pdf_ПрочитатьСимвол(Знач Значение="0") Экспорт
    Нотация=16;
    Значение=СокрЛП(Значение);
    Если Значение="0" Тогда Возврат(0) КонецЕсли;
    Результат=0;
    Длина=СтрДлина(Значение);
    Для Х=1 По Длина Цикл
         М=1;
         Для У=1 По Длина-х Цикл М=М*Нотация КонецЦикла;
         Результат=Результат+(Найти("0123456789ABCDEF",Сред(Значение,х,1))-1)*М;
   КонецЦикла;
   Если Результат>127 Тогда
       Результат=Результат+16;
   КонецЕсли;
   
    Возврат Окр(Результат);
КонецФункции

Функция pdf_ПеревестиСтроку(стр)
   новстрока="";
   для х=1 по СтрДлина(стр) Цикл
       новстрока=новстрока+Симв(pdf_ПрочитатьСимвол(Сред(стр,х,2)));
       х=х+1;
   КонецЦикла;
   Возврат новстрока;
КонецФункции

Функция pdf_ПолучитьСмещение(знач стр)
   Поз=Найти(стр,"BT");
   Поз2=Найти(стр,"Td");
   Стр=Сред(стр,поз+3,поз2-5);
   Поз3=Найти(стр," ");
   Стр=Сред(стр,Поз3+1);
   Возврат Окр(Число(стр));
КонецФункции

Функция ОтфильтроватьPDF(Файл)
   fso=СоздатьОбъект("Scripting.FileSystemObject");
   ттт="";
   Текст=СоздатьОбъект("Текст");
   Если Найти(Файл,"""")<>0 Тогда
       Файл=СтрЗаменить(Файл,"""", """""");
       ссылкаНаФайл=fso.GetFile(СокрЛП(Файл)).OpenAsTextStream(1);
       Сообщить("ОК");
       ТемпФайл=fso.GetTempName();
       
       ФС.КопироватьФайл(СокрЛП(Файл),КаталогВременныхФайлов()+ТемпФайл,0);
       Файл=КаталогВременныхФайлов()+ТемпФайл;
       
   КонецЕсли;
   ссылкаНаФайл=fso.GetFile(СокрЛП(Файл)).OpenAsTextStream(1);
   ПоследнаяяСтрока=-1;
   ТекстИнфо="Попытка распаковки файла PDF";
   Форма.Обновить(0);
   Пока ссылкаНаФайл.AtEndOfStream=0 Цикл
       Буфер=Прав(Буфер+ссылкаНаФайл.Read(1),20);
       Если Прав(Буфер,1)<>"<" тогда Продолжить; КонецЕсли; //не наше...
       Буфер=Прав(Буфер+ссылкаНаФайл.Read(1),20);
       Если Прав(Буфер,2)="<<" Тогда //стандартный тег
           Продолжить;
       КонецЕсли;
       ТекСтрокаВерт=pdf_ПолучитьСмещение(Буфер);
       Буфер=Прав(Буфер,1);
       Пока ссылкаНаФайл.AtEndOfStream=0 Цикл
           СледСимв=ссылкаНаФайл.Read(1);
           Если Найти("0123456789ABCDEF",СледСимв)<>0 тогда
               Буфер=Буфер+СледСимв;
               Продолжить;
           ИначеЕсли СледСимв=">" Тогда
               Прервать;
           Иначе //какой-то мусор
               Буфер="";
               Прервать;
           КонецЕсли;
       КонецЦикла;
       Если ПустоеЗначение(Буфер)=0 тогда
           Если ТекСтрокаВерт<>ПоследнаяяСтрока Тогда
               ПоследнаяяСтрока=ТекСтрокаВерт;
               Текст.ДобавитьСтроку(ттт);
               ттт="";
           КонецЕсли;
           ттт=ттт+pdf_ПеревестиСтроку(Буфер);
           Буфер="";
       КонецЕсли;
   КонецЦикла;
   Если ПустоеЗначение(ттт)=0 тогда
       Текст.ДобавитьСтроку(ттт);
   КонецЕсли;
   Возврат Текст;
КонецФункции

Процедура ЗагрузкаИзТекста(Источник,Разделитель="")
   спРазделителей=СоздатьОбъект("СписокЗначений");
   Если ПустоеЗначение(Разделитель)=1 Тогда
       спРазделителей.ДобавитьЗначение(";");
       спРазделителей.ДобавитьЗначение(СимволТабуляции);
       спРазделителей.ДобавитьЗначение("|");
   Иначе
       спРазделителей.ДобавитьЗначение(Разделитель);
   КонецЕсли;
   текст=СоздатьОбъект("Текст");
   спШирина=СоздатьОбъект("СписокЗначений");
   Строк=Источник.КоличествоСтрок();
   для х=1 по Строк Цикл
       Если х%10=0 тогда
           ТекстИнфо="Чтение файла: обработано "+х+" из "+Строк+" строк";
       КонецЕсли;
       Форма.Обновить(0);
       ТекСтрока=Источник.ПолучитьСтроку(х);
       для ш=1 по спРазделителей.РазмерСписка() Цикл
           ТекСтрока=СтрЗаменить(ТекСтрока,спРазделителей.ПолучитьЗначение(ш),РазделительСтрок);
       КонецЦикла;
       текст.Очистить();
       текст.ДобавитьСтроку(ТекСтрока);
       ТЗ.НоваяСтрока();
       для ш=1 по текст.КоличествоСтрок() Цикл
           Если ш>ТЗ.КоличествоКолонок() Тогда
               ТЗ.НоваяКолонка();
               спШирина.ДобавитьЗначение(1);
           КонецЕсли;
           ТекЗнач=текст.ПолучитьСтроку(ш);
           ТЗ.УстановитьЗначение(х,ш,ТекЗнач);
           Если Мин(СтрДлина(СокрЛП(Строка(ТекЗнач))),40)>спШирина.ПолучитьЗначение(ш) тогда
               спШирина.УстановитьЗначение(ш,Мин(СтрДлина(СокрЛП(Строка(ТекЗнач))),40));
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
   
   для ш=1 по спШирина.РазмерСписка() Цикл
       ТЗ.УстановитьПараметрыКолонки(ш,,,,,спШирина.ПолучитьЗначение(ш)*1.25);
   КонецЦикла;
КонецПроцедуры


Процедура Загрузка()
   Текст=ОтфильтроватьPDF(файл);
   ЗагрузкаИзТекста(Текст);
...

и тд
40 FN
 
24.08.11
16:05
(39)+ пробуй сам, а я убежал
41 mishaPH
 
24.08.11
16:06
мерси
42 andrewks
 
24.08.11
16:28
(41) мне кажется, тебе стоит заменить конвертер на более вменяемый
ftp://ftp.foolabs.com/pub/xpdf/xpdfbin-win-3.03.zip
43 bw
 
24.08.11
16:38
(36)Портал прекращает у х5 свою работу,идет запуск работы через операторов ЕДЕ.
44 Сияющий Асинхраль
 
24.08.11
16:42
Вот неплохая штука и бесплатная
http://text-mining-tool.com/
45 Сияющий Асинхраль
 
24.08.11
16:44
+(44) Заодно и в консоли работает, чтобы программно можно было файлы входящие и выходящие задавать...
46 Mikeware
 
24.08.11
16:53
(36)(43) И причемм датой полного перехода с портала на EDI объявлена эпическая 11.11.11
Начали с заказов, сейчас ввели подтверждение заказов и подтверждение приемки.
47 FN
 
24.08.11
18:35
(41) получилось?
48 mishaPH
 
24.08.11
19:31
(43) Я в курсе. но у них ттарифы пипец. там за каждый док охрененных денег требуют. итак только за накладные 50 штук в месяц.

(42) попробую.

(47) не завтра буду заниматься.

(46) да я в курсе. Но на то есть руководство, дадут задачу сделаю. Пока задача освободить человека от проверок соответствия отгруженного с принятым.
49 mishaPH
 
24.08.11
19:31
(44) мерси. посмотрю все
50 ice777
 
24.08.11
19:48
(0) эти сволочи просто поставили <хеззнаеткакой>pdf принтером и гонят туда печать, вместо того, чтоб мозгом подумать. не уважаю.)
51 DJ Anthon
 
24.08.11
20:00
ABBYY  ;))))))))
52 mishaPH
 
24.08.11
20:02
(51) есть и даже куплен. но нет коммандной строки. и тормозной скатина.
53 Smallrat
 
24.08.11
20:06
Делал на УФ:

&НаКлиенте
Процедура ВыбратьФайл(Команда)
   ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   ДиалогОткрытияФайла.Фильтр = НСтр("ru = ""Текст""; en = ""Text""")+"(*.pdf)|*.pdf";
   ДиалогОткрытияФайла.Заголовок = "Выберите файл";
   ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина;
   Если Не ДиалогОткрытияФайла.Выбрать() Тогда
       Возврат;
   КонецЕсли;
   ФайлPDF = ДиалогОткрытияФайла.ПолноеИмяФайла;
   
   КаталогВременныхФайлов = КаталогВременныхФайлов();
   ФайлУтилиты1 = Новый Файл(КаталогВременныхФайлов + "pdftotext.exe");
   ФайлУтилиты2 = Новый Файл(КаталогВременныхФайлов + "hstart.exe");
   ФайлУтилиты3 = Новый Файл(КаталогВременныхФайлов + "xpdfrc");
   Если Не ФайлУтилиты1.Существует() Или Не ФайлУтилиты2.Существует() Или Не ФайлУтилиты3.Существует() Тогда
       Адрес = ПолучитьУтилиту();
       ИмяZip = КаталогВременныхФайлов + "pdftotext.zip";
       Описание = Новый ОписаниеПередаваемогоФайла(ИмяZip, Адрес);
       МассивОписаний = Новый Массив;
       МассивОписаний.Добавить(Описание);
       ПолучитьФайлы(МассивОписаний,,,Ложь);
       
       ЧтениеZip = Новый ЧтениеZipФайла(ИмяZip);
       ЧтениеZip.ИзвлечьВсе(КаталогВременныхФайлов, РежимВосстановленияПутейФайловZIP.Восстанавливать);
       ЧтениеZip.Закрыть();
   КонецЕсли;
   ТекстКоманды = """" + КаталогВременныхФайлов + "hstart.exe"" /NOCONSOLE /WAIT ""pdftotext.exe -layout """ + ФайлPDF + """ """ + КаталогВременныхФайлов + "temp.txt""""";
   
   WshShell = Новый COMОбъект("WScript.Shell");
   WshShell.Run(ТекстКоманды, 5, 1);
   
   Текст = Новый ДвоичныеДанные(КаталогВременныхФайлов + "temp.txt");;
   УдалитьФайлы(КаталогВременныхФайлов + "temp.txt");
   Адрес = ПоместитьВоВременноеХранилище(Текст, ЭтаФорма.УникальныйИдентификатор);
   
   ОбработатьТекст(Адрес);

КонецПроцедуры

&НаСервере
Функция ОбработатьТекст(Адрес)
   
   Результат = Новый Массив;
   
   ФайлПриемник = ПолучитьИмяВременногоФайла("txt");
   ДанныеХранилища = ПолучитьИзВременногоХранилища(Адрес);
   ДанныеХранилища.Записать(ФайлПриемник);

   Текст = Новый ТекстовыйДокумент;
   Текст.Прочитать(ФайлПриемник, "UTF-8");

       //обрабатываем текст

КонецФункции

&НаСервере
Функция ПолучитьУтилиту()
   Обработка = РеквизитФормыВЗначение("Объект");
   МакетУтилиты = Обработка.ПолучитьМакет("УтилитаКонвертации");
   Адрес = ПоместитьВоВременноеХранилище(МакетУтилиты, ЭтаФорма.УникальныйИдентификатор);
   Возврат Адрес;
КонецФункции

Если пригодится - я могу залить куда-нить zip с утилитками, который в  макете обработки.
54 Smallrat
 
24.08.11
20:12
Хотя кому-нить наверное да пригодится - так что вот архив:
http://narod.ru/disk/22805232001/УтилитаКонвертации.zip.html
55 Smallrat
 
24.08.11
20:15
тьфу ты блин - щас только прочитал что 7.7, ну да вообщем сам механизм конвертации тот же .
56 smaharbA
 
24.08.11
20:30
ридер может работать с джабаскриптом и сам тебе распарсить
57 mishaPH
 
24.08.11
20:58
(56) адоб который стандартный?

а как сделать чтобы он захватил подсунутый файл и сохранил его в тексте. из него знаю можно.
58 smaharbA
 
24.08.11
20:59
который ридер
59 andrewks
 
24.08.11
21:05
(53) "утилитка" в (42), это проект Xpdf.
и нахрена столько кода, непонятно. там всё в три строки можно сделать - вызов экзешника с параметрами
60 andrewks
 
24.08.11
21:06
(56) я так понял, это в браузере. или нет?
61 Smallrat
 
24.08.11
21:09
(59) нуууу...
там треть кода это диалог открытия пдф
треть - распаковка утилиты из макета
и треть затрах с передачей между клиентом и сервером файлов
и еще кусочек чтобы сделать так чтобы черных окошек не было и обработка не началась до того как файл сконвертится.
62 smaharbA
 
24.08.11
21:10
(60) нет, в самом ридере, подсовывается обычный джабаскриптовый файлик куда надо и ридер сам открывает парсит и сохраняет
63 smaharbA
 
24.08.11
21:11
вариант джихостскрипта еще не предлагали ?
64 andrewks
 
24.08.11
21:11
(62) плагином подсунуть, что-ли? распиши по буквам, а то мы непонятливые :)
65 andrewks
 
24.08.11
21:15
(62) насколько я понял после прочтения доков от адобе, метод
SaveAs доступен только из API для плагинов. ни сообщениями, ни в активиксе он недоступен
66 smaharbA
 
24.08.11
21:32
(64) нет в папку загляни
%appdata%\adobe\acrobat\X.X\JavaScript
67 mishaPH
 
24.08.11
21:34
(66) там 2 скрипта мелких.
68 mishaPH
 
24.08.11
21:35
(64) да. пример в студию. Считай1 что мы тупые юзеры.
69 mishaPH
 
25.08.11
07:49
апнем что-ли. сегодня попробую кучу конвертеров.

(66) если есть решение которое позволит стандартным способом и с применением адобридера из 1с проделать это - рассказывай ;)
70 mishaPH
 
25.08.11
08:38
В общем проверил все конвертеры присланные и ссылки указанные. эту пдф никто не конвертнул. либо очень коряво.

адоб ридер стандартный все корректно в текст сихраняет.
71 ДенисЧ
 
25.08.11
08:39
(70) использовать ридера и sendkeys() не предлагать? :-)
72 mishaPH
 
25.08.11
08:40
(71) предлагай. как сделать
73 mishaPH
 
25.08.11
08:56
(22) скриптом не дает. ругается.
Говорит невозможно создание объекта контейнером активХ
AcroExch.App
74 andrewks
 
25.08.11
08:58
(73) дык это вроде объект "большого" акробата, не?
75 mishaPH
 
25.08.11
09:03
(39)    @FN  там у тебя в коде ТЗ брось структуру полей какие у тебя были. или там только ТЗ = СоздатьОбъект("ТаблицаЗначений")
76 Ёпрст
 
гуру
25.08.11
09:05
(70) PDFtransformer 2 или 3-ий Пробовал ?
77 VladZ
 
25.08.11
09:05
(0) Неужто нельзя договориться о другом формате?
78 mishaPH
 
25.08.11
09:09
(76) не помню. кучу перепробовал

(77) с кем договорится ?  с Х5 ? это всеравно что ашану свои условия ставить.
79 mishaPH
 
25.08.11
09:10
(76) если ты от абби то он у нас есть. но он 1. тормозной. 2. он не умеет работать без человека
80 FN
 
25.08.11
09:22
(75) Пустая ТЗ на форме
81 mishaPH
 
25.08.11
09:23
(80) ок
82 smaharbA
 
25.08.11
09:24
закинь

в
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Adobe\Acrobat Reader\9.0\FeatureLockDown\cDefaultExecMenuItems]
tWhiteList=...|ADBE:SaveAsAccText|SelectAll|Copy

к тому что уже есть
и в папку усерских скриптов файлик с одной строкой
app.setTimeOut('app.execMenuItem("SelectAll");app.execMenuItem("Copy");',3000);

и открой какой нибудь пдф - увидишь эффект, далее думай
83 mishaPH
 
25.08.11
09:28
В папке скриптов 2 файлика.

glob.js
glob.settings.js

создать новый со строкой
app.setTimeOut('app.execMenuItem("SelectAll");app.execMenuItem("Copy");',3000);

?
84 smaharbA
 
25.08.11
09:35
а просче джехостскрипт
85 mishaPH
 
25.08.11
09:36
(82) в реестр строку
|ADBE:SaveAsAccText|SelectAll|Copy

добавил к имеющимся. теперь при старте пдфки помоему что-то промелькнуло. но эффекта не вижу
86 smaharbA
 
25.08.11
09:36
Да
и просто открой какой нибудь пдф интерактивно (конечно содержащий текст, страниц 10 хотя бы)
87 mishaPH
 
25.08.11
09:36
(84) ?
88 smaharbA
 
25.08.11
09:36
(85) посмотри в буфере обмена ))
89 mishaPH
 
25.08.11
09:36
(86) есть на 200 счет от билайна
90 mishaPH
 
25.08.11
09:45
(86) при открытии накладной эффекта нет кроме мелькающего окошка,

при открытии счета от билайна получается выделенным весь текст. но в буфер не копирует.

app.setTimeOut('app.execMenuItem("SelectAll");app.execMenuItem("Copy");',3000);


Это отдельным файликом скрипта или встроить в какой.или имя у него должно быть определенное
91 sttt
 
25.08.11
10:10
может еще CuneiForm и openoffice. еще мс офис картинки распознавать умеет
92 mishaPH
 
25.08.11
10:11
(91) не нужны мне картинки.
93 sttt
 
25.08.11
10:13
(92) так если текст не получается получить, тогда в картинку а от туда текст
94 FN
 
25.08.11
10:16
(92) мой вариант уже испробовал?
95 sttt
 
25.08.11
10:16
96 sttt
 
25.08.11
10:16
97 mishaPH
 
25.08.11
10:20
(94) да такст какой-то мусор выдает и все.
98 mishaPH
 
25.08.11
10:21
(93) к гландам через жо..пу? без участвия человека заработает?
99 sttt
 
25.08.11
10:27
(98) ну думаю да, использовал как то утилиту пакетной конвертации из pdf (правда в изображениях был) в tiff а потом распознавал
100 mishaPH
 
25.08.11
10:29
(99) тогда нет 100% гарантии правильности цифр. жда и зачем такой гемор
101 FN
 
25.08.11
10:30
(97) скинь на почту один файлик - попробую под него код подогнать
102 sttt
 
25.08.11
10:32
вот тут смотрел wiki:Portable_Document_Format может что интересного.

(100) ну у тебя же текст и картинка будет чистая, думаю что гарантия 100% если парсить текст то тут тож нет гарантии, поставят какой символ и не сможешь как сейчас получить текст
103 sttt
 
25.08.11
10:34
а что в заголовке pdf'ка пишет? если делают через doPdf то у меня так:

%PDF-1.5
%вгПУ
1 0 obj
<<
  /Type /Catalog
  /Pages 2 0 R
  /PageLayout /OneColumn
  /PageMode /UseNone
  /OCProperties <<
  /D <<
  /Order []
  /AS [<<
  /Event /View
  /Category [/View ]
104 mishaPH
 
25.08.11
10:35
(101) ушло
105 mishaPH
 
25.08.11
10:36
(103) у них вообще пишет версия пдф 1.6
106 sttt
 
25.08.11
10:38
107 sttt
 
25.08.11
10:41
вот посмотри http://pdftk4all.sourceforge.net/ вроде написано с открытыми исходниками и из командной строки работает
108 mishaPH
 
25.08.11
10:42
(106) этого барахла как грязи.
но зачем устраивать такие сложности. адоб ридер стандартный прекрасно открывает пдф и сохраняет текст там имеющийся в файл. на 100% точно. Все остальное какая-то хрень. особенно через распознавание текста как абби.скорость очень медленная. счет от билайна распознает 4 часа блин 120 станиц.
109 mishaPH
 
25.08.11
10:42
(107) ок пасиб. посмотрю
110 mishaPH
 
25.08.11
10:44
+ 109 но оно судя по описанию просто для работы склеивания рдф и все
111 sttt
 
25.08.11
10:49
(110) еще сам смотрю ) тема самому интересна
112 Господин ПЖ
 
25.08.11
10:51
а чего, просто поставить акробат - не катит в итоге?
113 mishaPH
 
25.08.11
10:53
(112) ридер? да работает. но он открывает файлик а там далее надо нажать сохранить в тхт. а надо чтобы автоматом конвертировало.
114 sttt
 
25.08.11
11:24
попробуй эту ftp://ftp.foolabs.com/pub/xpdf/xpdfbin-win-3.03.zip там есть консольная pdftotext.exe
115 sttt
 
25.08.11
11:25
тебе ее и советовали в (42)
116 mishaPH
 
25.08.11
11:29
(115) пробовал
117 mishaPH
 
25.08.11
11:30
могу прислать эту пдф. попробуй ее в текст перегнать. если интересно
118 sttt
 
25.08.11
11:32
присылай st2009st соб qip.ru

вот еще утилита, проверил работает, только html
http://sourceforge.net/projects/pdftohtml/files/Experimental%20Versions/pdftohtml%200.40/
119 FN
 
25.08.11
11:34
(104) с наскоку не получилось :(
пробуй конверторы
120 Господин ПЖ
 
25.08.11
11:35
(113) не, полный
121 smaharbA
 
25.08.11
11:36
если лениво разбираться с джабойскрипт для ридера
качай это

ftp://ftp.foolabs.com/pub/xpdf/xpdfbin-win-3.03.zip
122 smaharbA
 
25.08.11
11:37
давно бы уже враппер прикрутил и нажал савеастекст
123 mishaPH
 
25.08.11
11:41
(121) не конвертирует он этот ПДФ. ну не конвертирует.
124 mishaPH
 
25.08.11
11:45
(122) что это за фигня.
125 mishaPH
 
25.08.11
11:46
(119) да вот же засада. 8 штук уже перепробовал
126 sttt
 
25.08.11
11:49
да уж! фигня какая то, у меня ничего не открывает этот документ из бесплатного. а последняя утилита только цифры получает.
127 mishaPH
 
25.08.11
11:51
(126) ага. а вот адоб ридер нормально 9й
128 sttt
 
25.08.11
11:53
посмотрел блокнотом там нашел следы вот этого Producer(Adobe PDF Library 8.0), нужно что то подправить
129 mishaPH
 
25.08.11
11:57
(128) да есть такое создан с помощью этого
130 sttt
 
25.08.11
12:02
вот этой штукой подправил http://www.pcvare.com/pdf-fixer.html просмотровщики стали открывать, но pdftohtml также бред выдает
131 mishaPH
 
25.08.11
12:08
там именно версия пдф 1.6 видимо конверторы не могут с ней работать даже внутреняя структура различается в отличии от 1.4 например который конвертируется нормально
132 Smallrat
 
25.08.11
12:20
(116) Там возможно надо настроить xpdfrc, когда я настраивал для своего конвертирования мне оказалось достаточно там строчки "textEncoding        UTF-8"
И если конвертятся таблицы - то конвертить надо с ключом -layout
133 Smallrat
 
25.08.11
12:20
+(132) Еще у них там валяется кириллический пакет, я правда не понял как его подключать, у меня так заработало, без него.
134 sttt
 
25.08.11
12:33
+(132) вроде действительно из за кодировок нормально не работает. восстановил файл с помощью pdftk4all и потом уже pdftohtml, в результате русский текст не получаем а только цифры и латинские символы
135 sttt
 
25.08.11
12:34
pdf-fixer не понадобился достаточно бесплатной pdftk4all
136 mishaPH
 
25.08.11
13:13
(132) гм. счас попробую.
137 mishaPH
 
25.08.11
13:21
-layout
помогло. стало подобие структуры. а вот букв нету.

"textEncoding        UTF-8"

куда прописать. я смотрю это в файлике описано sample-xpdfrc
138 mishaPH
 
25.08.11
13:24
# The Xpdf tools look for a config file in two places:
# 1. ~/.xpdfrc
# 2. in a system-wide directory, typically /usr/local/etc/xpdfrc

это где такое
139 sttt
 
25.08.11
13:24
pdftotext -enc UTF-8 -layout n2.pdf
а потом
c:\Temp\xpdfbin-win-3.03\bin32>iconv -c -f utf-8 -t cp1251 c:\Temp\xpdfbin-win-3
.03\bin32\n2.txt >c:\Temp\xpdfbin-win-3.03\bin32\n3.txt
140 sttt
 
25.08.11
13:26
ура! все победили ))
141 mishaPH
 
25.08.11
13:26
так что-то получается
142 mishaPH
 
25.08.11
13:27
после pdftotext -enc UTF-8 -layout n2.pdf

текст кракозябры
143 sttt
 
25.08.11
13:27
(141) да. потом скачай http://gnuwin32.sourceforge.net/packages/libiconv.htm
144 sttt
 
25.08.11
13:27
конвертнешь из одной кодировки в другую, строку команды выложил
145 sttt
 
25.08.11
13:30
может можно как то и через pdftotext сразу в нормальной кодировке получить но не нашел пока
146 mishaPH
 
25.08.11
13:35
ураааааа.

немного табличка хреново получилась. но распарсю думаю
147 sttt
 
25.08.11
13:35
ну да ))
148 sttt
 
25.08.11
13:37
там я видел у них исходники вроде есть )
149 mishaPH
 
25.08.11
13:38
пля аминь. ветку наверное в БЗ
150 mishaPH
 
25.08.11
13:43
опс. а если не конвертируемый файл открыть виндовым нотепадом он его нормально показывает.

утф8 кодирвока винда. если поставить в просмоторщике тотала листере то русский текст нормальный. 1с то 77 поймет интересно правильно
151 sttt
 
25.08.11
13:46
в эске вроде только вин1251 и дос, так что нужно конвертировать
152 mishaPH
 
25.08.11
13:47
(151) да 1с утф8 не понимает
153 sttt
 
25.08.11
13:48
восьмерка вроде понимает
154 mishaPH
 
25.08.11
13:48
но в оригинале табличка гладко стоит а конвертер зараза двигает пробелы. не смертельно но не удобно
155 mishaPH
 
25.08.11
13:48
(153) гм. а может какие вк есть к 7ке. счас порою кто-то с текстом работал
156 sttt
 
25.08.11
13:48
думаю справишься
157 sttt
 
25.08.11
13:49
может и есть, но экселевские причуды из восьмерки полученные без проблем не грузились в семерку
158 sttt
 
25.08.11
13:51
можно в экселе txt попробовать открыть и тогда можно перебором получить нормальный текст
159 mishaPH
 
25.08.11
13:51
ну пасибо всем. уже экономия бабла на хапугах ритейле от чего тортики не станут дороже.
160 mishaPH
 
25.08.11
13:51
(158) нафик. распарсю что есть
161 sttt
 
25.08.11
13:53
смотри сам, тут вариантов куча
162 Smallrat
 
25.08.11
13:55
если еще нужно )
(137) просто в файлике, который так и называется xpdfrc, такая строчка, у меня там в этом конфиге больше ничего нет - я выкладывал его в архиве.
(138) лежать он должен прямо там где экзешник.
163 sttt
 
25.08.11
13:56
(162) он и в командной строке нормально работает
pdftotext -enc UTF-8 -layout n2.pdf

вот как получить в кодировке cp1251?
164 Smallrat
 
25.08.11
14:10
(163) вот что написано в sample-xpdfrc
# Choose a text encoding for copy-and-paste and for pdftotext output.
# The Latin1, ASCII7, and UTF-8 encodings are built into Xpdf.  Other
# encodings are available in the language support packages.

#textEncoding        UTF-8
на сайте лежит Xpdf: Cyrillic support package
If this package includes CMap files, they contain their own copyright
notices and distribution conditions.  All other files in the package
are Copyright 2002 Glyph & Cog, LLC, and are licensed under the GNU
General Public License (GPL), version 2 or 3.

This package provides support files needed to use the Xpdf tools with
Cyrillic PDF files.

Contents:
- Bulgarian character names
- KOI8-R encoding

ftp://ftp.foolabs.com/pub/xpdf/xpdf-cyrillic.tar.gz
то бишь будет KOI-8
как прикручивать там написано - надо внести строчки в xpdfrc
165 sttt
 
25.08.11
14:13
(164) еще не смотрел, но качал этот файл. еще один момент хочу найти, как ему сказать чтоб собака поля таблицы нужным разделителем конвертировал ))
166 Smallrat
 
25.08.11
14:15
(165) было бы круто. но по-моему никак не скажешь - таблица в пдф это такая условная штука - текст просто стоит в разных местах а сверху нарисована графикой сетка.
167 sttt
 
25.08.11
14:17
(166) да он тупо пробелами заменяет, возни больше
168 sttt
 
25.08.11
14:18
причем если команду дать -raw то сжимает все пробелы до одного )
169 sttt
 
25.08.11
14:19
вот есть такая команда:
      -fixed number
             Assume fixed-pitch (or tabular) text, with the specified charac-
             ter width (in points).  This forces physical layout mode.
170 andrewks
 
25.08.11
14:19
(163) на, лови.
у меня получилось сразу в 1251 конвертить, надо только таблицу соответствующую прикрутить
171 sttt
 
25.08.11
14:22
где ловить?! ))
172 andrewks
 
25.08.11
14:22
кстати, заметил хрень.
иногда pdftotext.exe "проглатывает" часть текста.

так что будь настороже
173 andrewks
 
25.08.11
14:22
174 sttt
 
25.08.11
14:23
все получил
175 sttt
 
25.08.11
14:27
(173) с твоей кодировкой, таблица вообще... хрень полная ))
176 sttt
 
25.08.11
14:28
кажись понял как заставить конвертировать в нужные разделители )) в карте нужные символы на нужные поменять
177 andrewks
 
25.08.11
14:29
(175) где? выложи пдф-ку посмотреть
или на мыло
мойник собака newmail тчк ru
178 Smallrat
 
25.08.11
14:31
(176) Это какие на какие ? )))
А то я бы сильно упростил свой код парсинга - я там запарился колонки выделять, особенно если вдруг текст оказался в колонках близко он просто одинарным пробелом отделяет - попробуй тут разбери где какая колонка.
179 sttt
 
25.08.11
14:36
(178) если бы знать, но те карты что скинули вообще таблицу изуродовали, вот мысль и пришла что наверное из карт все тянется
180 mishaPH
 
25.08.11
14:39
получилось

в (173) -layout забыли. табличка почти норм
181 andrewks
 
25.08.11
14:40
(175) охренеть, но у меня адобе ридер при простом открытии, и потом сразу (ничего не делаюя) закрытии, твоего файлика, пишет: "Сохранить изменения в ** перед закрытием?"

напоминаю: Ридер!

первый раз такое вижу
182 andrewks
 
25.08.11
14:41
(175) предъява про порчу текста отклоняется
вот выход: http://zalil.ru/31605289
183 sttt
 
25.08.11
14:43
(182) да уже разобрались )) в (180)
184 sttt
 
25.08.11
14:44
блин, но табуляции нет ((
185 andrewks
 
25.08.11
14:45
(180) ничего я там не забыл. я для примера батник скинул, чтобы вы увидели, как таблицу кодировки подключить
186 andrewks
 
25.08.11
14:47
(184) возьми за отправную точку, что табуляция - это следующие друг за другом неразрывно пробелы в кол-ве не менее 5-ти штук
187 sttt
 
25.08.11
14:53
(186) в нашем случае не меньше трех
188 sttt
 
25.08.11
14:55
и есть одна позиция, она так вообще вылетает из строки, переноситься. количество вверху остальное внизу ))
189 mishaPH
 
25.08.11
14:56
(188) это итого помоему
190 mishaPH
 
25.08.11
14:56
(188) у меня все гладко теперь
191 sttt
 
25.08.11
14:57
не не итого:
   2                                                     1
              11130 ОТ ПАЛЫЧА Торт ТВОРОЖНО-СЛИВОЧНЫЙ 800г   ШТ   297,06297,06   18    53,47      350,53
192 sttt
 
25.08.11
14:57
но если -row установить тогда нормально
193 mishaPH
 
25.08.11
14:58
относительно. 1с понимает строку всеравно сбивает табличку. а бот нотепад показывает ровно. да фиг с ним. распарсим. там элементарно зацепится
194 mishaPH
 
25.08.11
14:58
(191) у меня норм
195 sttt
 
25.08.11
14:58
да, видимо раз на раз
196 andrewks
 
25.08.11
14:59
(191) ничё не выпадает. я тебе выход выслал, смотри ,всё норм
197 andrewks
 
25.08.11
15:00
и потом, файл вообще какой-то странный, см(181)
198 sttt
 
25.08.11
15:01
(197) да не странный, законный адобовский, возможно версия ридера старая
199 andrewks
 
25.08.11
15:01
хотя, иногда бывает на больших текстах, см.(172)
200 sttt
 
25.08.11
15:01
(196) я видимо с настройками намудрил
201 mishaPH
 
25.08.11
15:02
C:\tmp>c:\tmp\pdftotext.exe -cfg xpdfrc -enc CP-1251 -layout  c:\tmp\111.pdf
Syntax Error: Couldn't read xref table
Syntax Warning: PDF file is damaged - attempting to reconstruct xref table...
Syntax Error: Unterminated hex string
Syntax Error: End of file inside array
Syntax Error: End of file inside dictionary


кстати вот заметил на ругань. конвертит но ругается
202 sttt
 
25.08.11
15:04
(201) 8( может вот эта таблица... и предупреждает что строка там не завершена
203 andrewks
 
25.08.11
15:04
(198) законный, говоришь? а ты когда-нибудь видел  в ридере такое: http://savepic.org/2126677.png  ?

а версия 1.6, нормальная
204 sttt
 
25.08.11
15:05
(203) а какая у тебя версия? это вроде отношение имеет к формам, где то читал что с ними проблема
205 andrewks
 
25.08.11
15:07
(204)10.1.0.534
206 andrewks
 
25.08.11
15:07
кучу файлов уже этой версией пересмотрел, но такого не видел
207 mishaPH
 
25.08.11
15:09
(203) а у меня не ругается
208 andrewks
 
25.08.11
15:10
(207) какая версия?
209 Smallrat
 
25.08.11
15:11
(186) Если текст в колонках будет близко то пробел может оказаться всего один.
Ну и там вообще много приколов будет - особенно если в какой-то из строк будет многострочный текст.
210 andrewks
 
25.08.11
15:12
(209) шо я могу на это сказать? не жрите кактус, и не организуйте эл.обмен информацией в pdf.

pdf совсем для другого придуман, вообще-то.
pdf - это ДОКУМЕНТ. в коммерческом смысле
211 Smallrat
 
25.08.11
15:18
(210) ага - я тоже это сказал своим и чтобы они позвонили тем кто нам такое присылает и попросили какой-нить другой формат. Они позвонили, те сказали - нам так программа выдает и всё, пришлось жрать кактус. (((
212 andrewks
 
25.08.11
15:20
(211) тогда жрите кактус, и не пищите ;-)
213 mishaPH
 
25.08.11
15:21
(208) 9я говорит
214 mishaPH
 
25.08.11
15:21
(212) не. просто тупо это включается в цену того, что вы окупаете в магазине.
215 sttt
 
25.08.11
15:27
да можно исходник на крайний случай перекопать )) если с картами не разобраться
216 mishaPH
 
25.08.11
15:35
что самое интересное. виндовый блокнот при открытии правильно расставляет все символы. как будто табличка сохранена.
217 sttt
 
25.08.11
15:37
(216) а табы?
218 andrewks
 
25.08.11
15:38
(216) подсказка: моноширинный шрифт
219 sttt
 
25.08.11
15:40
220 sttt
 
25.08.11
15:44
вот кусок карты составлять:

http://forum.rudtp.ru/showthread.php?t=36974&p=412925&viewfull=1#post412925
221 smaharbA
 
25.08.11
19:00
Надо еще ?
222 mishaPH
 
25.08.11
19:01
(221) В принципе решение найдено но если у тебя другой способ то выкладывай. может он проще
223 smaharbA
 
25.08.11
19:05
(222) уже писал в первой сотне, если нужно готовое - завтра, ибо лениво
(хотя уже был пост на мисте, по обычию всем интереснее как узнать Родителя)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn