Имя: Пароль:
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) уже писал в первой сотне, если нужно готовое - завтра, ибо лениво
(хотя уже был пост на мисте, по обычию всем интереснее как узнать Родителя)