Имя: Пароль:
1C
1С v8
Извлечение текста из файла
0 sunshineuee
 
01.04.21
12:10
Подскажите, пожалуйста,
как можно извлечь текст из файла кроме ЧтениеТекста?

Не могу добиться ЧтениемТекста того, что вижу при открытии Notepad++, хоть обстену.
COMОбъект("ADODB.???")
1 Kassern
 
01.04.21
12:11
(0) а что за файл то?
2 sunshineuee
 
01.04.21
12:15
(1) по контектсу любой. отлаживаю на пдф. но мне нужно его отправить в post запросом и в пост положить исходное текстовое представление
3 Волшебник
 
01.04.21
12:19
(2) Если любой — это слишком сложная задача. Научитесь сначала работать с TXT, DOC/DOCX.
Файлы PDF оставьте на десерт.
4 sunshineuee
 
01.04.21
12:22
(3) Постман из любого файла формаирует файл отправки... и делает это не двоичными данными
5 Волшебник
 
01.04.21
12:24
(4) Постман молодец.
6 Kassern
 
01.04.21
12:25
(4) берешь API постмана и делаешь все то же самое уже через 1с)
7 Галахад
 
гуру
01.04.21
12:26
(0) Попробуй "ИзвлечениеТекста".
8 sunshineuee
 
01.04.21
12:36
Я уже получаю даже TXT, который мне нужен через COMОбъект("ADODB.Stream"). Но не могу даже из него нормально извлечь текст, 1совское ЧтениеТекста все коверкает...
9 Волшебник
 
01.04.21
12:37
(8) Покажи программный код
10 sunshineuee
 
01.04.21
12:42
(8) Вот так я получаю нужный мне файл TXT из PDF
    Файл=Новый COMОбъект("ADODB.Stream");
    Файл.Mode=3; // r/w
    Файл.Type=2; //1-Binary, 2-Text
    Файл.Open();
    Файл.LoadFromFile("\\server-edo\EDO_USDEP\SPECDEP\PIF\Мегаполис-Инвест\Виноградный\Входящие\20210119\ДКПБН 34 - 316.pdf");
    Файл.Position=3;
    
    ТекстБезБОМ=Новый COMОбъект("ADODB.Stream");
    ТекстБезБОМ.Mode=3; // r/w
    ТекстБезБОМ.Type=1; //1-Binary, 2-Text
    ТекстБезБОМ.Open();
    Файл.CopyTo(ТекстБезБОМ);
    Файл.Close();
    ТекстБезБОМ.SaveToFile("\\server-edo\EDO_USDEP\SPECDEP\PIF\TEST_CLIENT\TEST_FOND\Бумажные\q.txt",2);
    ТекстБезБОМ.Close();
Но даже из этого TXT я не могу извлечь текст как нужно.
ФАЙл => ЧтениеТекст => ЗаписьТекста=> Другой файл...
11 Волшебник
 
01.04.21
12:44
(10) Здесь нет "ЧтениеТекста"
12 sunshineuee
 
01.04.21
12:44
Кодировка везде UTF-8
13 sunshineuee
 
01.04.21
12:47
(11)
    ЧтениеТекста = Новый ЧтениеТекста("\\server-edo\EDO_USDEP\SPECDEP\PIF\TEST_CLIENT\TEST_FOND\Бумажные\q.txt", КодировкаТекста.UTF8);
    ЗаписьТекста = Новый ЗаписьТекста("\\server-edo\EDO_USDEP\SPECDEP\PIF\TEST_CLIENT\TEST_FOND\Бумажные\q1.txt");
    ЗаписьТекста.Записать(ЧтениеТекста.Прочитать());
    ЗаписьТекста.Закрыть();
14 sunshineuee
 
01.04.21
12:49
(11) Ппоправил для чистоты эксперимента коировку
    ЧтениеТекста = Новый ЧтениеТекста("\\server-edo\EDO_USDEP\SPECDEP\PIF\TEST_CLIENT\TEST_FOND\Бумажные\q.txt", КодировкаТекста.UTF8);
    ЗаписьТекста = Новый ЗаписьТекста("\\server-edo\EDO_USDEP\SPECDEP\PIF\TEST_CLIENT\TEST_FOND\Бумажные\q1.txt", КодировкаТекста.UTF8);
    ЗаписьТекста.Записать(ЧтениеТекста.Прочитать());
    ЗаписьТекста.Закрыть();

На выходе получаю файлы отличающиеся в двое по размеру, с похожим но ИНЫМ содержанием
15 Йохохо
 
01.04.21
12:54
(10) какая магия по вашему происходит при смене расширения файла и удаления бом?
16 sunshineuee
 
01.04.21
13:35
(15) Возможно никакой. Если бы я извлек текст нормально извлек текст нормально из ПДФ, мне бы не потребовалось менять расширение)
17 Почему 1С
 
01.04.21
13:40
двочиныеданныеПДФ = Новый ДвоичныеДанные("путь к файлу пдф");
кодированныйпфдвтексте = Base64Строка(кодированныйпфдвтексте);
18 Почему 1С
 
01.04.21
13:42
(17) кодированныйпфдвтексте = Base64Строка(двочиныеданныеПДФ ); апичатка
19 acht
 
01.04.21
13:44
(0) ИзвлечениеТекста
20 sunshineuee
 
01.04.21
13:53
Base64Строка(ДД) и ИзвлечениеТекста дают тоже другой результат. Файл тоже меняется
21 Почему 1С
 
01.04.21
13:56
(20) Base64Значение(кодированныйпфдвтексте) вернет исходные данные
22 Почему 1С
 
01.04.21
13:58
http сервис куда отправляешь файл тоже на 1с?
23 sunshineuee
 
01.04.21
13:58
(21)
(20)

PDF-1.3
%sƗ
1 0 obj
<</ColorSpace/DeviceRGB/Width 2481/Length 985268/BitsPerComponent 8/Height 3507/Filter[/DCTDecode]/Type/XObject/Subtype/Image/Name/Im1>>stream
�� JFIF ,,  ��         

 $.' ",#(7),01444'9=82<.342��             

ИЛИ
UERGLTEuMw0KJaGzxdcNCjEgMCBvYmoNCjw8L0NvbG9yU3BhY2UvRGV2aWNlUkdC

L1dpZHRoIDI0ODEvTGVuZ3RoIDk4NTI2OC9CaXRzUGVyQ29tcG9uZW50IDgvSGVp

Z2h0IDM1MDcvRmlsdGVyWy9EQ1REZWNvZGVdL1R5cGUvWE9iamVjdC9TdWJ0eXBl



Вообще не похоже
24 sunshineuee
 
01.04.21
13:59
(22) )))))
Если б его можно было изменить, я бы пошел этим путем. Сервис не в 1с, не редактируется, даже в отладку не ставится
25 polosov
 
01.04.21
14:00
(10) Пользуйся нормальными продуктами https://dl.xpdfreader.com/xpdf-tools-win-4.03.zip
26 polosov
 
01.04.21
14:00
+(25) В составе увидишь утилиту pdftotext
27 Почему 1С
 
01.04.21
14:04
(26) да ему извлечение текста пдф надо, а сам файлик отослать через http post на сервер, это на сколько я понял
28 Почему 1С
 
01.04.21
14:04
не извлечение текста
29 sunshineuee
 
01.04.21
14:06
(27) вообще мне нужно извлечь текст и отправить на сервер. И проблема в том, что извлекаемый текст при чтении меняется
30 sunshineuee
 
01.04.21
14:07
(26)  Как этим пользоваться?
31 polosov
 
01.04.21
14:09
32 Почему 1С
 
01.04.21
14:09
(29) По показаниям в (4) сдается мне что вы не верно изъясняетесь
33 sunshineuee
 
01.04.21
19:35
//https://its.1c.ru/db/metod8dev/content/5917/hdoc

    ПотокоТело = Новый ПотокВПамяти();
    ЗаписьТекста = Новый ЗаписьДанных(ПотокоТело);
    
    ЗаписьТекста.ЗаписатьСтроку("----------------------------" + Boundary);
    ЗаписьТекста.Записать(СоздатьСообщениеСДанными(ИмяФайлаЗагрузки, "\\server-edo\EDO_USDEP\SPECDEP\PIF\Мегаполис-Инвест\Виноградный\Входящие\20210119\ДКПБН 34 - 316.pdf"));          
    ЗаписьТекста.ЗаписатьСтроку("----------------------------" + Boundary);
//

    ДвоичныеДанныеТело = ПотокоТело.ЗакрытьИПолучитьДвоичныеДанные();

    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Host", "vm-ario:61100");
    ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + "--------------------------" + Boundary);

    Запрос = Новый HTTPЗапрос(Ресурс, ЗаголовокHTTP);
    Запрос.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанныеТело);
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);


Функция СоздатьСообщениеСДанными(ИмяФайлаЗагрузки, ПутьКФайлу)
    Поток = Новый ПотокВПамяти();
    ЗаписьДанных = Новый ЗаписьДанных(Поток);
    
    ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""" + ИмяФайлаЗагрузки + """");
    ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/pdf");
    
    ЗаписьДанных.ЗаписатьСтроку("");
    
    //Данные = Base64Строка(Новый ДвоичныеДанные(ПутьКФайлу));
    ЗаписьДанных.Записать(Новый ДвоичныеДанные(ПутьКФайлу));
    ЗаписьДанных.Закрыть();
    
    Возврат Поток.ЗакрытьИПолучитьДвоичныеДанные();
    
КонецФункции    

//Вопрос решён, хотя соглашусь, что в ключе такого решения сам вопрос поставлен некорректно. Предполагаемым путем вопрос не решился
34 Вафель
 
01.04.21
20:36
есть же родное Извлечение Текста
35 DES
 
01.04.21
21:49
(34) оно  строки кучкует в одну
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс