private RunProperties GetRunPropertyFromParagraph(Paragraph paragraph)
{
var runProperties = new RunProperties();
var fontname = "Calibri";
var fontSize = "18";
try
{
fontname =
paragraph.GetFirstChild<ParagraphProperties>()
.GetFirstChild<ParagraphMarkRunProperties>()
.GetFirstChild<RunFonts>()
.Ascii;
}
catch
{
//swallow
}
try
{
fontSize =
paragraph.GetFirstChild<Paragraph>()
.GetFirstChild<ParagraphProperties>()
.GetFirstChild<ParagraphMarkRunProperties>()
.GetFirstChild<FontSize>()
.Val;
}
catch
{
//swallow
}
runProperties.AppendChild(new RunFonts() { Ascii = fontname });
runProperties.AppendChild(new FontSize() { Val = fontSize });
return runProperties;
}
private RunProperties GetRunPropertyFromTableCell(TableRow rowCopy, int cellIndex)
{
var runProperties = new RunProperties();
var fontname = "Calibri";
var fontSize = "18";
try
{
fontname =
rowCopy.Descendants<TableCell>()
.ElementAt(cellIndex)
.GetFirstChild<Paragraph>()
.GetFirstChild<ParagraphProperties>()
.GetFirstChild<ParagraphMarkRunProperties>()
.GetFirstChild<RunFonts>()
.Ascii;
}
catch
{
//swallow
}
try
{
fontSize =
rowCopy.Descendants<TableCell>()
.ElementAt(cellIndex)
.GetFirstChild<Paragraph>()
.GetFirstChild<ParagraphProperties>()
.GetFirstChild<ParagraphMarkRunProperties>()
.GetFirstChild<FontSize>()
.Val;
}
catch
{
//swallow
}
runProperties.AppendChild(new RunFonts() { Ascii = fontname });
runProperties.AppendChild(new FontSize() { Val = fontSize });
return runProperties;
}
代码起作用了。至少在我试过的文件中。但这似乎是一种糟糕的方式,但我还没有找到更好的解决方案,所以如果你有一个,请分享:)
我是这样做的:当我更新或替换一个运行时,我确保检查何时删除旧的东西,一个元素是否有子元素,然后它是否有一个子元素,即“runproperties”。如果是,我只保存这些属性,并在删除旧内容后将它们添加到我的新运行中。
还没让我失望。
var bkms = YourBookmarkStart;
OpenXmlElement elem = bkms.NextSibling();
RunProperties oldRunProperties = null;
while (elem != null && !(elem is BookmarkEnd))
{
OpenXmlElement nextElem = elem.NextSibling();
if (elem.HasChildren)
{
try
{
oldRunProperties = (RunProperties)elem.GetFirstChild<RunProperties>().Clone();
}
catch { }
}
if (!(elem is BookmarkStart))
elem.Remove();
elem = nextElem;
}
Run r = new Run(new Text(newText));
if (oldRunProperties != null) r.PrependChild<RunProperties>(oldRunProperties);
bkms.Parent.InsertAfter<Run>(r, bkms);
它应该抓取给定段落拥有的任何运行属性,除非它没有任何运行属性,在这种情况下,它不会添加任何运行属性,因此使用文档中默认的运行属性。
好的,我有一个座位系统,它生成一个30x30的网格,对于每个网格,数据库中都有一行,但是当我在我的页面上生成这个网格时,我当前每个元素发出5个SQL请求(有900个元素),我们都知道这不是最优的。 为了呈现它,我执行一个while循环,并执行一些检查,然后回显出以下代码: 下面是一个座椅模型如何工作的例子 每个请求中有5个这样的函数,这对许多人来说是一种方式。所以我需要一些好的方法来最小化这个系统
本文向大家介绍Android获取窗体信息的Util方法,包括了Android获取窗体信息的Util方法的使用技巧和注意事项,需要的朋友参考一下 Android获取窗体信息的Util方法,方法很简单,这里就不多废话了,直接上代码 以上所述就是本文的全部内容了,希望大家能够喜欢。
问题内容: 每次我尝试使用ffmpeg获取有关我的视频文件的信息时,都会吐出很多无用的信息,混杂着很多好东西。 我正在使用。 有没有可能以友好的方式实现这一目标?我的意思是JSON会很棒(甚至丑陋的XML也可以)。 至此,我使我的应用程序使用正则表达式解析数据,但是在某些特定的视频文件上却出现了很多讨厌的角落。我已修复所有遇到的问题,但可能还会更多。 我想要类似的东西: 问题答案: 有点晚了,但也
执行 gradle help —task someTask 可以显示指定任务的详细信息. 或者多项目构建中相同任务名称的所有任务的信息. 如下例. 例 11.12. 获取任务帮助 gradle -q help —task libs的输出结果 > gradle -q help --task libs Detailed task information for libs Paths :api
接口说明 获取单体化信息 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /api/attach/1.0.0/getAttach 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 id string form 是 场景ID 响应字段说明 无 响应成功示例 { "code": 200, "data": "at
我在acroform字段中有以下pdf结构键: 我想键是字体描述,但我不明白这个值是什么意思。有人能帮忙破译吗?