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

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

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

Сообщение SergeyPerm »

Доброе утро
Перепроверил и правда ошибся и не тот файл отправил прошу прошения, прикрепляю rtf файл
Вложения
Новый текстовый документ (2).txt
(42.66 КБ) 219 скачиваний
SergeyPerm
Сообщения: 18
Зарегистрирован: 20 фев 2020, 14:43

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

Сообщение SergeyPerm »

Добрый день! не получиться видимо отправить полную сроку base64 т.к. она в бд как то записывается что потом тока через поток выводится/

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();
e.Value = System.Xml.XmlConvert.EncodeName(Stimulsoft.Report.Components.StiRichText.PackRtf(str));
break;
}
}
}

Сначала идет декодирование из base64 а потом извлечение из архива и уже вывод должен происходить

Удалось извлечь полную строку base64 в файле пример
Вложения
пример.txt
(61.44 КБ) 203 скачивания
SergeyPerm
Сообщения: 18
Зарегистрирован: 20 фев 2020, 14:43

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

Сообщение SergeyPerm »

Спасибо за помощь, удалось решить проблему строкой

e.Value = System.Xml.XmlConvert.EncodeName(StiRichText.PackRtf(System.Text.Encoding.UTF8.GetString(memoryStream.ToArray())));

Сейчас не понятно как шрифт можно уменьшить если текст вставляется через код?
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

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

Сообщение Aleksey »

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

В RTF размер шрифта в самом файле указывается, и может много раз меняться внутри файла, можно только дополнительным кодом сменить шрифт сразу во всем RTF-файле на какой-то один заданный. Если вам этот вариант подойдёт - напишем код.

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

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

Сообщение SergeyPerm »

Добрый день! Напишите пожалуйста код, а можно в это коде будет менять шрифт и тип шрифта?
А еще появился такая проблема если установить опцию "может расти" то пропадает шапка логотипа
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

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

Сообщение Aleksey »

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

Можете использовать следующий код:

string st = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());

Stimulsoft.Report.Controls.StiRichTextBox richTextBox = new Stimulsoft.Report.Controls.StiRichTextBox(false);
richTextBox.Rtf = st;
richTextBox.SelectAll();
richTextBox.SelectionFont = new Font("Calibri", 24);
st = richTextBox.Rtf;
e.Value = System.Xml.XmlConvert.EncodeName(StiRichText.PackRtf(st));


это переделанная ваша строка
e.Value = System.Xml.XmlConvert.EncodeName(StiRichText.PackRtf(System.Text.Encoding.UTF8.GetString(memoryStream.ToArray())));

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