Не выводится rtf в отчёт

Обсуждение Stimulsoft Reports.Net
SergeyPerm
Сообщения: 18
Зарегистрирован: 20 фев 2020, 11:43

Не выводится rtf в отчёт

Сообщение SergeyPerm » 02 июн 2020, 07:07

Добрый день!

Подскажите пожалуйста есть файл закодированный в base64, как его можно декодировать и вставить RichText1
Пример кода:
using (var outputMemStream = new MemoryStream(System.Convert.FromBase64String(Акт.Data)))
{
using (var s = new StiZipInputStream(outputMemStream))
{
var entry = s.GetNextEntry();
while (entry != null)
{
if (!entry.IsFile)
{
continue;
}

var memoryStream = new MemoryStream();
var sb = new byte[131072];
var flag = true;
while (flag)
{
int count = s.Read(sb, 0, sb.Length);
if (count > 0)
{
memoryStream.Write(sb, 0, count);
}
else
{
memoryStream.Flush();
flag = false;
}
}
StreamReader reader = new StreamReader(memoryStream);
string str = reader.ReadToEnd();
reader.Close();
e.Value = str;
break;

}
}
}
Ivan
Сообщения: 619
Зарегистрирован: 10 авг 2006, 01:40

Re: Не выводится rtf в отчёт

Сообщение Ivan » 04 июн 2020, 08:59

Здравствуйте.

Внутри события GetValue значение надо присваивать следующим образом:

Код: Выделить всё

e.Value = System.Xml.XmlConvert.EncodeName(Stimulsoft.Report.Components.StiRichText.PackRtf(your_rtf_in_string));
Судя по вашему коду, у вас rtf сначала заархивирован в Zip-архив, а уже потом переведён в Base64 ?

Спасибо.
SergeyPerm
Сообщения: 18
Зарегистрирован: 20 фев 2020, 11:43

Re: Не выводится rtf в отчёт

Сообщение SergeyPerm » 05 июн 2020, 15:36

Добрый вечер. Как, реализован алгоритм я не могу точно ответить, не я делал данный код просто с этим кодом работают картинки. В БД хранится строка Byte в text ячейке. Может у вас есть какое-нибудь описание как правильно работать с base64 строками ?
Ivan
Сообщения: 619
Зарегистрирован: 10 авг 2006, 01:40

Re: Не выводится rtf в отчёт

Сообщение Ivan » 06 июн 2020, 14:59

Здравствуйте.
В БД хранится строка Byte в text ячейке. Может у вас есть какое-нибудь описание как правильно работать с base64 строками ?
Пример вашей базы вы не присылали, и мы не знаем, как именно хранится у вас информация в базе данных.
Поэтому приводим общую информацию.

Base64 — стандарт кодирования двоичных данных при помощи только 64 символов ASCII.
Т.е. при раскодировании base64-строки получается массив байт.
Предположим, что внутри массива - RTF-файл, в ASCII кодировке. Тогда код для получения его содержимого должен быть таким:

Код: Выделить всё

byte[] bytes = System.Convert.FromBase64String(Акт.Data);
string your_rtf_in_string = System.Text.Encoding.ASCII.GetString(bytes);
e.Value = System.Xml.XmlConvert.EncodeName(Stimulsoft.Report.Components.StiRichText.PackRtf(your_rtf_in_string));
Спасибо.
SergeyPerm
Сообщения: 18
Зарегистрирован: 20 фев 2020, 11:43

Re: Не выводится rtf в отчёт

Сообщение SergeyPerm » 10 июн 2020, 10:43

Добрый день. Стали выводится знаки в hex кодировке PK _x0003_0004 и в таком роде, сейчас разбираюсь, как средствами stimulsofta превратить это в читаемый текст, может вы подскажете
Ivan
Сообщения: 619
Зарегистрирован: 10 авг 2006, 01:40

Re: Не выводится rtf в отчёт

Сообщение Ivan » 10 июн 2020, 21:56

Здравствуйте.
Стали выводится знаки в hex кодировке PK _x0003_0004 и в таком роде, сейчас разбираюсь, как средствами stimulsofta превратить это в читаемый текст, может вы подскажете
Символы "PK _x0003_0004" означают, что у вас исходное значение в базе заархивировано в zip, как и картинки.
Поэтому надо использовать также кусок кода из первого поста, который разархивирует из zip-архива.

Спасибо.
SergeyPerm
Сообщения: 18
Зарегистрирован: 20 фев 2020, 11:43

Re: Не выводится rtf в отчёт

Сообщение SergeyPerm » 23 июн 2020, 06:52

Доброе утро.

Почему то когда я все сделал распаковал потом из base64 перевел, выходит пустая строка
Aleksey
Сообщения: 2126
Зарегистрирован: 22 апр 2010, 02:57

Re: Не выводится rtf в отчёт

Сообщение Aleksey » 24 июн 2020, 13:55

Здравсвтуйте,

Вышлите пример данных для анализа.

Спасибо.
SergeyPerm
Сообщения: 18
Зарегистрирован: 20 фев 2020, 11:43

Re: Не выводится rtf в отчёт

Сообщение SergeyPerm » 02 июл 2020, 10:21

Добрый день

Прикладываю файл с зашифрованы файлом который хранится в бд и сам отчет в котором пытаюсь строку реализовать и вывести
Вложения
Новый текстовый документ.txt
(64 КБ) 8 скачиваний
test.mrt
(11.13 КБ) 7 скачиваний
HighAley
Сообщения: 1975
Зарегистрирован: 08 июн 2011, 07:36

Re: Не выводится rtf в отчёт

Сообщение HighAley » 02 июл 2020, 11:54

Здравствуйте.

Судя по тому. что вы прислали, данный файл не полный. Он обрезан и его размер 65535.
После конвертации из Base64 мы видим, что получился ZIP-архив, внетри которого храниться PDF файл с именем "Инф. письмо КТТК Красноярск 2020-2021.pdf".
Далее не можем с ним ничего сделать, так как файл обрезан.

В любом случае это не RichText и он не может быть использован в нашем продукте.

Спасибо.
Ответить