找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman
社区贡献组   /  发表于:2014-4-18 11:55:00
31#
回复 30楼450289068的帖子

恩 我会同时调试并反馈,加快问题进展。
回复 使用道具 举报
450289068
论坛元老   /  发表于:2014-4-18 17:06:00
32#
多谢版主帮忙 目前总结出来
1.界面预览和打印不要乱码 但是需要保留字体段落样式 还有比如倾斜,下划线,删除线等。
2.保存为wpf,保留样式。
多谢版主了  周末愉快~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-22 09:22:00
33#
回复 32楼450289068的帖子

恩,这两个问题我还在跟进中。
请问保存为 wpf 是什么意思?是保存为 pdf 吗?

关于乱码问题我发现如果使用 RTF 格式复制汉字则不会出现乱码,不知道是否可以考虑使用对乱码区域采取RTF赋值方式来缓解当前问题。
回复 使用道具 举报
450289068
论坛元老   /  发表于:2014-4-22 10:58:00
34#
目前有结果了吗? 厂家是定位bug还是我处理的逻辑或者方法有问题。。
版主如果方便 可以给个小demo吗?
rtf赋值来缓解  不太明白 。。

希望厂家快些给出答复 ,希望版主多和厂家沟通下 呵呵 ~。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-22 12:27:00
35#
回复 34楼450289068的帖子

另外,tx 模板的数据填充部分正常做法是通过 MailMerge 来完成,不知道您为什么要手动实现。

我通过 DataTable 构造数据源,再通过 MailMerge 加载,没有出现乱码并且导出PDF时也可以保存格式。
请参加 Demo:

11046_Page_WPF.zip (252.35 KB, 下载次数: 430)
回复 使用道具 举报
450289068
论坛元老   /  发表于:2014-4-22 13:18:00
36#
我现在使用的逻辑上或者方法上并没有错误呀 而且 我目前的版本也没有MailMerge这样的Dll  所以只能通过这样的方式来处理这样的问题 ,,,,目前厂家有回复了   ????
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-22 13:45:00
37#
回复 36楼450289068的帖子

请问你们现在是否已经购买产品?购买的哪个版本? MailMerge 类处于 TXDocumentServer.dll 中。我看到代码中使用了 TXTextControl.DocumentServer.Fields.MergeField  类,所以你们应该是有这个dll的。

厂商对于 ProcessTextField 方法,尤其是这段代码功能提出疑问,请问这段代码的功能是什么?
  1. System.Windows.Controls.RichTextBox rtBox = new System.Windows.Controls.RichTextBox();
  2.                 string rftString = data[field.Parameters[0]];
  3.                 TextRange textRange = new TextRange(rtBox.Document.ContentEnd, rtBox.Document.ContentEnd);

  4.                 using (MemoryStream ms = new MemoryStream())
  5.                 {
  6.                     using (StreamWriter sw = new StreamWriter(ms))
  7.                     {
  8.                         sw.Write(rftString);
  9.                         sw.Flush();
  10.                         ms.Seek(0, SeekOrigin.Begin);
  11.                         textRange.Load(ms, DataFormats.Rtf);
  12.                         textRange.ApplyPropertyValue(TextElement.FontFamilyProperty, "宋体");

  13.                         textRange.ApplyPropertyValue(TextElement.FontSizeProperty, "16");

  14.                         #region 去除原有末尾空格与换行 减少界面排版长度 保留原头空出位置
  15.                         textRange.Text = textRange.Text.TrimEnd();
  16.                         #endregion
  17.                     }
  18.                 }
复制代码


同时RTF(RichTextBox richTextBox) 方法的作用能否解释下。

之前提到的使用 RTF 形式缓解问题,指的是,data["Name"] = "王二小";也使用RTF形式赋值。

不过这都不是正规的解决方法。我会继续把新发现的情况反馈给厂商。
回复 使用道具 举报
450289068
论坛元老   /  发表于:2014-4-22 18:03:00
38#
我需要处理具有格式或者符号的内容,具体是医院的报告内容,纯粹的textbox无法满足 所以需要使用RichTextBox,,其数据是rtf流 需要保留所有的文字样式及颜色 ,代码中RTF方法就是将控件的内容保存为字符流   

public string RTF(RichTextBox richTextBox)
        {
            string rtf = string.Empty;
            TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
            if (String.IsNullOrEmpty(textRange.Text))
                return "";
            else
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    textRange.Save(ms, System.Windows.DataFormats.Rtf);
                    ms.Seek(0, SeekOrigin.Begin);
                    StreamReader sr = new StreamReader(ms);
                    rtf = sr.ReadToEnd();

                }
                return rtf;
            }
        }
回复 使用道具 举报
450289068
论坛元老   /  发表于:2014-4-22 18:04:00
39#
只考虑极个别的字段为rtf格式 并不是所有的是这个格式的内容。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-23 10:56:00
40#
回复 39楼450289068的帖子

不知道你是否调试查看 RTF 函数的返回值是否正确,在执行到“申请医生”这个 TextField 时,返回的 rtf 编码已经错误了。并不是 TX 显示不出来。你可以把 RTF 返回值直接赋值给 RichTextBox 来查看结果。
我的测试代码:

  1. this.richTextBox1.Rtf = @"{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset134 \'ce\'a2\'c8\'ed\'d1\'c5\'ba\'da;}{\f3\fcharset128 \'91\'76\'91\'cc;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\fs24\f3 {\ltrch ?\'91\'e5\'95\'76}\li0\ri0\sa0\sb0\fi0\ql\par}";
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部