2016-09-26 14 views
0

此问题是由question相关(接下来)。为什么Word中的形状出现空行?

我从数据库中的数据动态生成Word文档。在这一代中,我需要让某个部分的第一页的顶部边距与该部分中的其他页面不同。由于这个原因需要花费很长时间才能正确解释,所以我不能只创建一个具有不同顶部边界的新部分。

为了解决我的问题,我以为我会创建一个没有边框,没有填充(不可见)的形状(矩形),这是我希望我的边缘的高度。然后我会把它绝对放在(0,0)处。我也会使它wrapTopAndBottom,以便它将页面正文中的文本向下推。这是工作......除了一个小问题。

enter image description here

正如你可以看到有一个大的空白我的形状后,立即区域。那里有实际的空白行。你可以在这个图像中看到更好的线条,我在这些线条中放置了文本。

enter image description here

当我看到在Word中存档头xml文件,不存在这些行。我不确定他们来自哪里或如何摆脱它们。我可以使用Word手动删除它们,但每次我重新生成文件时,都会将它们放回原处。如果有人知道这是为什么发生和/或如何解决它,我会很感激帮助。

感谢。

+1

只是从截图中很难说出发生了什么。你可以分享生成这些文档的代码(请制作一个可重复使用的小例子),或者添加一个链接到Word文档?通常,使用所需的布局/格式在Word中创建文档以及使用Open XML SDK中包含的Document Reflector生成将生成该文档的C#代码会非常有帮助。 –

回答

0

我终于明白了这一点。

对不起,我无法在这里发布代码。首先,我没有使用C#,我正在使用PHP。其次,我不得不发布代码来显示标题的创建方式,这在这样的论坛上是令人望而却步的。第三,我真的不允许在这里发布公司的代码。

无论如何,一旦我看到它,问题就很简单。我们将多个绝对定位的对象(形状,文本,图像,whatnot)放在标题内。在创建这些对象的类中,每个对象都放置在一个<w:p>元素内。例如,如果有3个这样的对象,那么XML就像这样。

<hdr> 
    <p>Some Object</p> 
    <p>Some Object</p> 
    <p>Some Object</p> 
</hdr> 

的问题是,即使每个内部<p>对象的绝对定位时,<p>元件本身创建该线的线和空间。所以上面的头部会有3个空行。如果标题有6个或7个对象,这成为一个问题,因为空白行会将标题边缘向下并强制页面的内容向下。这是不受欢迎的行为。

解决方案很简单。所有绝对定位的对象可以放置在同一个<p>元素中。无论您拥有多少个对象,这只会在标题中留下1个空白行。

相关问题