Доброе утро
Перепроверил и правда ошибся и не тот файл отправил прошу прошения, прикрепляю rtf файл
Не выводится rtf в отчёт
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Re: Не выводится rtf в отчёт
- Вложения
-
- Новый текстовый документ (2).txt
- (42.66 КБ) 219 скачиваний
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Re: Не выводится rtf в отчёт
Добрый день! не получиться видимо отправить полную сроку 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 в файле пример
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 скачивания
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Re: Не выводится rtf в отчёт
Спасибо за помощь, удалось решить проблему строкой
e.Value = System.Xml.XmlConvert.EncodeName(StiRichText.PackRtf(System.Text.Encoding.UTF8.GetString(memoryStream.ToArray())));
Сейчас не понятно как шрифт можно уменьшить если текст вставляется через код?
e.Value = System.Xml.XmlConvert.EncodeName(StiRichText.PackRtf(System.Text.Encoding.UTF8.GetString(memoryStream.ToArray())));
Сейчас не понятно как шрифт можно уменьшить если текст вставляется через код?
Re: Не выводится rtf в отчёт
Здравствуйте,
В RTF размер шрифта в самом файле указывается, и может много раз меняться внутри файла, можно только дополнительным кодом сменить шрифт сразу во всем RTF-файле на какой-то один заданный. Если вам этот вариант подойдёт - напишем код.
Спасибо.
В RTF размер шрифта в самом файле указывается, и может много раз меняться внутри файла, можно только дополнительным кодом сменить шрифт сразу во всем RTF-файле на какой-то один заданный. Если вам этот вариант подойдёт - напишем код.
Спасибо.
-
- Сообщения: 18
- Зарегистрирован: 20 фев 2020, 14:43
Re: Не выводится rtf в отчёт
Добрый день! Напишите пожалуйста код, а можно в это коде будет менять шрифт и тип шрифта?
А еще появился такая проблема если установить опцию "может расти" то пропадает шапка логотипа
А еще появился такая проблема если установить опцию "может расти" то пропадает шапка логотипа
Re: Не выводится rtf в отчёт
Здравствуйте,
Можете использовать следующий код:
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())));
Спасибо.
Можете использовать следующий код:
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())));
Спасибо.