Не выводится rtf в отчёт
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Не выводится rtf в отчёт
Добрый день!
Подскажите пожалуйста есть файл закодированный в 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;
}
}
}
Подскажите пожалуйста есть файл закодированный в 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;
}
}
}
Re: Не выводится rtf в отчёт
Здравствуйте.
Внутри события GetValue значение надо присваивать следующим образом:
Судя по вашему коду, у вас rtf сначала заархивирован в Zip-архив, а уже потом переведён в Base64 ?
Спасибо.
Внутри события GetValue значение надо присваивать следующим образом:
Код: Выделить всё
e.Value = System.Xml.XmlConvert.EncodeName(Stimulsoft.Report.Components.StiRichText.PackRtf(your_rtf_in_string));
Спасибо.
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Re: Не выводится rtf в отчёт
Добрый вечер. Как, реализован алгоритм я не могу точно ответить, не я делал данный код просто с этим кодом работают картинки. В БД хранится строка Byte в text ячейке. Может у вас есть какое-нибудь описание как правильно работать с base64 строками ?
Re: Не выводится rtf в отчёт
Здравствуйте.
Поэтому приводим общую информацию.
Base64 — стандарт кодирования двоичных данных при помощи только 64 символов ASCII.
Т.е. при раскодировании base64-строки получается массив байт.
Предположим, что внутри массива - RTF-файл, в ASCII кодировке. Тогда код для получения его содержимого должен быть таким:
Спасибо.
Пример вашей базы вы не присылали, и мы не знаем, как именно хранится у вас информация в базе данных.В БД хранится строка 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));
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Re: Не выводится rtf в отчёт
Добрый день. Стали выводится знаки в hex кодировке PK _x0003_0004 и в таком роде, сейчас разбираюсь, как средствами stimulsofta превратить это в читаемый текст, может вы подскажете
Re: Не выводится rtf в отчёт
Здравствуйте.
Поэтому надо использовать также кусок кода из первого поста, который разархивирует из zip-архива.
Спасибо.
Символы "PK _x0003_0004" означают, что у вас исходное значение в базе заархивировано в zip, как и картинки.Стали выводится знаки в hex кодировке PK _x0003_0004 и в таком роде, сейчас разбираюсь, как средствами stimulsofta превратить это в читаемый текст, может вы подскажете
Поэтому надо использовать также кусок кода из первого поста, который разархивирует из zip-архива.
Спасибо.
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Re: Не выводится rtf в отчёт
Доброе утро.
Почему то когда я все сделал распаковал потом из base64 перевел, выходит пустая строка
Почему то когда я все сделал распаковал потом из base64 перевел, выходит пустая строка
Re: Не выводится rtf в отчёт
Здравсвтуйте,
Вышлите пример данных для анализа.
Спасибо.
Вышлите пример данных для анализа.
Спасибо.
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Re: Не выводится rtf в отчёт
Добрый день
Прикладываю файл с зашифрованы файлом который хранится в бд и сам отчет в котором пытаюсь строку реализовать и вывести
Прикладываю файл с зашифрованы файлом который хранится в бд и сам отчет в котором пытаюсь строку реализовать и вывести
- Вложения
-
- Новый текстовый документ.txt
- (64 КБ) 240 скачиваний
-
- test.mrt
- (11.13 КБ) 225 скачиваний
Re: Не выводится rtf в отчёт
Здравствуйте.
Судя по тому. что вы прислали, данный файл не полный. Он обрезан и его размер 65535.
После конвертации из Base64 мы видим, что получился ZIP-архив, внетри которого храниться PDF файл с именем "Инф. письмо КТТК Красноярск 2020-2021.pdf".
Далее не можем с ним ничего сделать, так как файл обрезан.
В любом случае это не RichText и он не может быть использован в нашем продукте.
Спасибо.
Судя по тому. что вы прислали, данный файл не полный. Он обрезан и его размер 65535.
После конвертации из Base64 мы видим, что получился ZIP-архив, внетри которого храниться PDF файл с именем "Инф. письмо КТТК Красноярск 2020-2021.pdf".
Далее не можем с ним ничего сделать, так как файл обрезан.
В любом случае это не RichText и он не может быть использован в нашем продукте.
Спасибо.