有没有人知道RTF文件的linter?
我正在为文字处理器编写一个简单的RTF导出工具.我已经到了我生成的文件加载到OpenOffice并且似乎工作的阶段 - 除了我刚刚发现如果我在OpenOffice中编辑它,保存它,并将它加载回OpenOffice,它神秘地变化.我的假设是我的样式表和列表没有正确布局,它在OpenOffice中产生了奇怪的变形数据结构.
我真的很喜欢一个工具,它会查看我的RTF文件,将其与规范相匹配,然后告诉我我做错了什么......
我在Linux环境中,但这是一个跨平台的应用程序,所以我愿意使用Windows工具,如果有人有的话.
我有两位代码.首先是从细胞A到细胞B的标准复制糊
Sheets(sheet_).Cells(x, 1).Copy Destination:=Sheets("Output").Cells(startrow, 2)
Run Code Online (Sandbox Code Playgroud)
我可以做几乎相同的使用
Sheets("Output").Cells(startrow, 2) = Sheets(sheet_).Cells(x, 1)
Run Code Online (Sandbox Code Playgroud)
现在第二种方法要快得多,避免复制到剪贴板并再次粘贴.但是,它不会像第一种方法那样复制格式.第二个版本几乎可以立即复制500行,而第一个版本增加了大约5秒的时间.最终版本可能超过5000个单元格.
所以我的问题是第二行可以改为包括单元格格式(主要是字体颜色),同时仍然保持快速.
理想情况下,我希望能够将单元格值与字体格式一起复制到数组/列表中,这样我就可以对它们进行进一步的排序和操作,然后再将它们"粘贴"到工作表上.
所以我的理想解决方案就是这样
for x = 0 to 5000
array(x) = Sheets(sheet_).Cells(x, 1) 'including formatting
next
for x = 0 to 5000
Sheets("Output").Cells(x, 1)
next
Run Code Online (Sandbox Code Playgroud)
是否可以在VBA中使用RTF字符串,或者只能在vb.net等中使用.
答案*
只是为了看看我的origianl方法和新方法如何比较,这里是结果或之前和之后
新代码= 65毫秒
Sheets("Output").Cells(startrow, 2) = Sheets(sheet_).Cells(x, 1)
Sheets("Output").Range("B" & startrow).Font.ColorIndex = Sheets(sheet_).Range("A" & x).Font.ColorIndex 'copy font colour as well
Run Code Online (Sandbox Code Playgroud)
旧代码= 1296毫秒
'Sheets("Output").Cells(startrow, 2).Value = Sheets(sheet_).Cells(x, 1)
'Sheets(sheet_).Cells(x, 1).Copy
'Sheets("Output").Cells(startrow, 2).PasteSpecial (xlPasteFormats)
'Application.CutCopyMode = False
Run Code Online (Sandbox Code Playgroud) 如何在Java中将RTF字符串转换为纯文本?显而易见的答案是使用Swing的RTFEditorKit,这似乎是互联网上的常见答案.然而,声称返回纯文本的write方法实际上并没有实现......它的硬编码只是在Java6中抛出IOException.
我想创建一个文本编辑器,我可以在其中使文本变粗,更改其颜色等.
我发现这个代码大致有效:
public static void BoldSelectedText(RichTextBox control)
{
control.SelectionFont = new Font(control.Font.FontFamily, control.Font.Size, FontStyle.Bold);
}
Run Code Online (Sandbox Code Playgroud)
但是当我输入更多字母时RichTextBox,文字仍然是大胆的.
除非我选择文本并点击"Make Bold"按钮,否则我怎样才能使所选文本只是粗体而下一个字符不是?
在我的<Product>身上:
<WixVariable Id="WixUILicenseRtf" Value="LICENSE.rtf" />
Run Code Online (Sandbox Code Playgroud)
LICENSE.rtf 存在,并且是一个rtf文件(我尝试使用一些不同的程序保存,以防它们中的一个出现问题).
该文件包含文本(整个许可证!),文本格式合理.
那么,为什么我的安装程序的许可证字段是空白的?

我正在尝试在Tridion中创建一个GUI扩展,我在单击按钮时将特定的html插入到RTF中....我有工具栏按钮并弹出以通知用户.但是当我插入HTML"</ div> <div class ='Page'>"时,在弹出窗口中单击"确定",它会插入"<div class ='Page'/>".
我发现applyHTML方法是什么修改插入的内容.有没有其他功能/方法可以准确插入我指示的内容,我的意思是无效的html缺少结束标签或打开标签?
对于看起来像这样的RTF项目符号列表,似乎找不到一个非常简单的工作示例:
我尝试使用Word或TextEdit.app制作一个小样本,但它们会产生大量垃圾.任何人都可以帮忙吗?
我正在显示RTF文档RichTextBox("已升级" RichEdit50W).文档中的关键字使用语法链接到网页:
{\field{\*\fldinst{HYPERLINK ""https://www.example.com/"" }}{\fldrslt{\cf1 keyword\cf0 }}}
Run Code Online (Sandbox Code Playgroud)
我不想强调关键字.在Windows 10版本1803(以及所有以前版本的Windows,包括XP,Vista,8)中,只要在锚点上设置了颜色(注意\cf1),锚点就不会加下划线.
但这不再适用于Windows 10版本1803.我将向Microsoft报告此情况.但我不确定,如果我不依赖于无证件的行为.我可以想象这个改变实际上不是一个错误,而是一个修复.所以我想知道是否有更正确的方法来防止超链接加下划线.
示例代码:
public class ExRichText : RichTextBox
{
[DllImport("kernel32.dll", EntryPoint = "LoadLibraryW", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern IntPtr LoadLibraryW(string path);
protected override CreateParams CreateParams
{
get
{
var cp = base.CreateParams;
LoadLibraryW("MsftEdit.dll");
cp.ClassName = "RichEdit50W";
return cp;
}
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ExRichText rtb = new ExRichText();
rtb.Parent = this;
rtb.SetBounds(10, 10, …Run Code Online (Sandbox Code Playgroud) 我想在视图中显示RTF文档.本文档将在Microsoft Word中开发,并包含图像.
使用提供的标准例程执行此操作的最佳方法是什么?
我真的希望示例代码从bundle中加载RTF文档.亲切的问候,杰森
我想我已经在Windows或.NET中发现了一个错误,正在寻找解决方法。
要重现该问题,请首先启用Windows功能“ Beta:使用Unicode UTF-8进行全球语言支持”。
您可能需要重启机器。
现在,只需在Winforms / C#中创建两个RichTextBox组件,然后添加事件:
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
string s = richTextBox1.Rtf;
richTextBox2.Rtf = s;
}
Run Code Online (Sandbox Code Playgroud)
最后,运行该程序,只需在第一个RichTextBox中键入一些内容,当它尝试写入时就会崩溃,并显示消息“文件格式无效” richTextBox2.Rtf。如果Windows功能“测试版:将Unicode UTF-8用于全球语言支持”被禁用,则不会崩溃。
我在这里考虑两个潜在的解决方法:
1:以某种方式在C#应用程序中禁用了整个“测试版:使用Unicode UTF-8进行全球语言支持”功能,并假装从未启用过该功能。
2:在调整另一个RichTextBox的RTF之前,以某种方式编辑RTF字符串以符合新RTF应该具有的未知要求。考虑到第一个RichTextBox应该具有完全相同的RTF,这似乎是违反直觉的,但是无论如何...
************* Exception Text **************
System.ArgumentException: File format is not valid.
at System.Windows.Forms.RichTextBox.StreamIn(Stream data, Int32 flags)
at System.Windows.Forms.RichTextBox.StreamIn(String str, Int32 flags)
at System.Windows.Forms.RichTextBox.set_Rtf(String value)
at unicodeTesting.Form1.richTextBox1_TextChanged(Object sender, EventArgs e) in D:\Code\c#\_tests\unicodeTesting\Form1.cs:line 30
at System.Windows.Forms.Control.OnTextChanged(EventArgs e)
at System.Windows.Forms.TextBoxBase.OnTextChanged(EventArgs e)
at System.Windows.Forms.TextBoxBase.WmReflectCommand(Message& m)
at System.Windows.Forms.TextBoxBase.WndProc(Message& m)
at System.Windows.Forms.RichTextBox.WmReflectCommand(Message& m)
at System.Windows.Forms.RichTextBox.WndProc(Message& m) …Run Code Online (Sandbox Code Playgroud)