Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Извлечение текста из файла

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

Не могу добиться ЧтениемТекста того, что вижу при открытии Notepad++, хоть обстену.
COMОбъект("ADODB.???")
   Kassern
 
1 - 01.04.21 - 12:11
(0) а что за файл то?
   sunshineuee
 
2 - 01.04.21 - 12:15
(1) по контектсу любой. отлаживаю на пдф. но мне нужно его отправить в post запросом и в пост положить исходное текстовое представление
   Волшебник
 
3 - 01.04.21 - 12:19
(2) Если любой — это слишком сложная задача. Научитесь сначала работать с TXT, DOC/DOCX.
Файлы PDF оставьте на десерт.
   sunshineuee
 
4 - 01.04.21 - 12:22
(3) Постман из любого файла формаирует файл отправки... и делает это не двоичными данными
   Волшебник
 
5 - 01.04.21 - 12:24
(4) Постман молодец.
   Kassern
 
6 - 01.04.21 - 12:25
(4) берешь API постмана и делаешь все то же самое уже через 1с)
   Галахад
 
7 - 01.04.21 - 12:26
(0) Попробуй "ИзвлечениеТекста".
   sunshineuee
 
8 - 01.04.21 - 12:36
Я уже получаю даже TXT, который мне нужен через COMОбъект("ADODB.Stream"). Но не могу даже из него нормально извлечь текст, 1совское ЧтениеТекста все коверкает...
   Волшебник
 
9 - 01.04.21 - 12:37
(8) Покажи программный код
   sunshineuee
 
10 - 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) Здесь нет "ЧтениеТекста"
   sunshineuee
 
12 - 01.04.21 - 12:44
Кодировка везде UTF-8
   sunshineuee
 
13 - 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");
    ЗаписьТекста.Записать(ЧтениеТекста.Прочитать());
    ЗаписьТекста.Закрыть();
   sunshineuee
 
14 - 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) какая магия по вашему происходит при смене расширения файла и удаления бом?
   sunshineuee
 
16 - 01.04.21 - 13:35
(15) Возможно никакой. Если бы я извлек текст нормально извлек текст нормально из ПДФ, мне бы не потребовалось менять расширение)
   Почему 1С
 
17 - 01.04.21 - 13:40
двочиныеданныеПДФ = Новый ДвоичныеДанные("путь к файлу пдф");
кодированныйпфдвтексте = Base64Строка(кодированныйпфдвтексте);
   Почему 1С
 
18 - 01.04.21 - 13:42
(17) кодированныйпфдвтексте = Base64Строка(двочиныеданныеПДФ ); апичатка
   acht
 
19 - 01.04.21 - 13:44
(0) ИзвлечениеТекста
   sunshineuee
 
20 - 01.04.21 - 13:53
Base64Строка(ДД) и ИзвлечениеТекста дают тоже другой результат. Файл тоже меняется
   Почему 1С
 
21 - 01.04.21 - 13:56
(20) Base64Значение(кодированныйпфдвтексте) вернет исходные данные
   Почему 1С
 
22 - 01.04.21 - 13:58
http сервис куда отправляешь файл тоже на 1с?
   sunshineuee
 
23 - 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



Вообще не похоже
   sunshineuee
 
24 - 01.04.21 - 13:59
(22) )))))
Если б его можно было изменить, я бы пошел этим путем. Сервис не в 1с, не редактируется, даже в отладку не ставится
   polosov
 
25 - 01.04.21 - 14:00
(10) Пользуйся нормальными продуктами https://dl.xpdfreader.com/xpdf-tools-win-4.03.zip
   polosov
 
26 - 01.04.21 - 14:00
+(25) В составе увидишь утилиту pdftotext
   Почему 1С
 
27 - 01.04.21 - 14:04
(26) да ему извлечение текста пдф надо, а сам файлик отослать через http post на сервер, это на сколько я понял
   Почему 1С
 
28 - 01.04.21 - 14:04
не извлечение текста
   sunshineuee
 
29 - 01.04.21 - 14:06
(27) вообще мне нужно извлечь текст и отправить на сервер. И проблема в том, что извлекаемый текст при чтении меняется
   sunshineuee
 
30 - 01.04.21 - 14:07
(26)  Как этим пользоваться?
 
 
   polosov
 
31 - 01.04.21 - 14:09
   Почему 1С
 
32 - 01.04.21 - 14:09
(29) По показаниям в (4) сдается мне что вы не верно изъясняетесь
   sunshineuee
 
33 - 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
есть же родное Извлечение Текста
   DES
 
35 - 01.04.21 - 21:49
(34) оно  строки кучкует в одну


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.