OpenXML在换行线上保留格式(问题)
本文关键字:格式 问题 保留 换行 OpenXML | 更新日期: 2023-09-27 17:58:25
我在生成Word文档时遇到了严重的中断问题。
这是我在BookMark:中用于发送文本的库函数
public void sentText(string _BkMk, string _text, bool _break, RunProperties _rProp)
{
Text text = new Text(_text) { Space = SpaceProcessingModeValues.Preserve };
Run run = new Run(new RunProperties(_rProp));
run.Append(text);
Run run2 = new Run();
if (_break)
{
run2.Append(new Break());
//CarriageReturn cr = new CarriageReturn();
//run2.Append(cr);
}
foreach (BookmarkStart bookmarkStart in bookmarkMap.Values)
{
if (bookmarkStart.Name.Value == _BkMk)
{
bookmarkStart.InsertBeforeSelf(run);
if (_break)
{
bookmarkStart.InsertBeforeSelf(run2);
}
}
}
在runProperties中,cames显示字体、大小等。。。最大的问题是当我在同一个书签中发送不同的字符串时,我需要留出一行空间。我发送了一个空字符串,或者像"这样的空格,结果是一个空行,但字体(TimesNewRoman)和大小(12)不同。对我来说,保留空行中的字体大小真的很重要。。。
有什么想法吗?
如果我正确理解你的问题,而你只需要一行空白,那么你所要做的就是插入一个空白段落,它应该遵循你设置的默认字体。这将要求您将文本拆分为两个不同的段落,并进行两次不同的运行:
public void sentText(string _BkMk, string _text, bool _break, RunProperties _rProp)
{
Text text = new Text(_text) { Space = SpaceProcessingModeValues.Preserve };
Run run = new Run(new RunProperties(_rProp));
run.Append(text);
Paragraph paragraph1 = new Paragraph();
paragraph1.Append(run);
foreach (BookmarkStart bookmarkStart in bookmarkMap.Values)
{
if (bookmarkStart.Name.Value == _BkMk)
{
bookmarkStart.InsertBeforeSelf(paragraph1);
if (_break)
{
bookmarkStart.InsertBeforeSelf(paragraph1);
bookmarkStart.InsertBeforeSelf(new Paragraph());
}
}
}
}
我还建议使用段落,而不是只运行,因为当你按下回车键时,Word会创建一个空段落。