Страница 2 из 2

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

Добавлено: 03 июл 2020, 07:32
SergeyPerm
Доброе утро
Перепроверил и правда ошибся и не тот файл отправил прошу прошения, прикрепляю rtf файл

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

Добавлено: 06 июл 2020, 09:20
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 в файле пример

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

Добавлено: 06 июл 2020, 11:30
SergeyPerm
Спасибо за помощь, удалось решить проблему строкой

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

Сейчас не понятно как шрифт можно уменьшить если текст вставляется через код?

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

Добавлено: 07 июл 2020, 09:27
Aleksey
Здравствуйте,

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

Спасибо.

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

Добавлено: 07 июл 2020, 12:24
SergeyPerm
Добрый день! Напишите пожалуйста код, а можно в это коде будет менять шрифт и тип шрифта?
А еще появился такая проблема если установить опцию "может расти" то пропадает шапка логотипа

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

Добавлено: 10 июл 2020, 11:13
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())));

Спасибо.