Страница 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())));
Спасибо.