我有一个代码,其中我创建了一个有4行的段落,其中3行使用制表符来分隔行标签和参数。令人惊讶的是,一段代码在另一种形式中完美无缺地工作,这让我非常头疼,尽管它实际上是100%相同的。在行标签和参数之间会出现两行额外的行。
Dim ParPara As New Paragraph ' create new paragraph
Dim formtext As New FormattedText
formtext.Bold = True
formtext.AddText("ABC 12345")
Dim formtext2 As New FormattedText
formtext2.Bold = True
formtext2.AddText("163658468435831484")
Dim formtext3 As New FormattedText
formtext3.Bold = True
formtext3.AddText("PARAMETER 1")
ParPara.Add(formtext4)
ParPara.AddLineBreak() ' intentional line break at the end of line
ParPara.AddText("Row Header 1:")
ParPara.AddTab()
ParPara.Add(formtext)
ParPara.AddLineBreak() ' intentional line break at the end of line
ParPara.AddText("Row Header 2:")
ParPara.AddTab()
ParPara.Add(formtext2)
ParPara.AddLineBreak() ' intentional line break at the end of line
ParPara.AddText("Row Header 3:")
ParPara.AddTab()
ParPara.Add(formtext3)
...
TableRowHead0F.Cells(1).Add(ParPara)我甚至比较了该段的记忆内容,这两种形式都是100%相同的,一种是完美的,另一种是插入额外的NewLine中断:

记忆中的结构是正确的:

migradoc样式在两种形式(工作和失败)中都是相同的设置。
有人知道为什么会发生这种事吗?
编辑:正如建议的那样,我比较了MDDDL,没有发现任何区别:

我不知道,是否可以有一些上下文(单元格风格?)影响到这件事,但这真的很奇怪。这不是我第一次在MigraDoc上看到这样的事情.
编辑2:
问题是在转换一种样式的定义行的顺序时,我在代码的末尾有第2行代码:
Dim sStyle As Style = PruvDoc.Styles(StyleNames.Normal)
sStyle = PruvDoc.Styles.AddStyle("Quest", "Normal")
sStyle.ParagraphFormat.TabStops.Clear()
sStyle.ParagraphFormat.TabStops.AddTabStop("9cm", TabAlignment.Left, TabLeader.Dots)...and,这意味着制表符被应用于“普通”样式,而不是"Quest“。与预期相反,它的定义很好的部分,其中的问题锁定(很好的了解)。
发布于 2019-02-06 09:10:52
研究此类问题的一种有用方法是:您可以为工作的版本和不工作的版本创建MDDDL文件,然后比较MDDDL文件。
见这里:
http://pdfsharp.net/wiki/MigraDocDDL.ashx
MDDDL文件有些可读性,可以用来检查您实际添加到文档中的内容--即使您只有一个版本不像预期的那样工作。
https://stackoverflow.com/questions/54539263
复制相似问题