如何删除空白行和空白页

各位大神,我遇到一个这样的问题:多个文档拼接在一起的时候,有时候会产生空白页和空白行,如何删掉这些多余的空白行呢?

@pechem,

我已经观察了您的要求并要求您分享您的要求的详细信息以及您有兴趣在最终使用的API。

if (docTemplate.Range.Bookmarks[“JSMB”] != null)
{
builderTemplate.MoveToBookmark(“JSMB”);
docTemplate.FirstSection.PageSetup.SectionStart = SectionStart.Continuous;
asposeDC.insertDocumentAfterBookMark(docTemplate, docJSMB, “JSMB”);
}

以上代码是将一个docJSMB文档追加到docTemplate文档的"JSMB"标签处,生成的word文档中这个地方衔接处会产生空白行,有时候会有空白页,我就是想咨询一下,这些空白行或者空白页通过后续的操作有办法删除掉吗?

@pechem,

为确保及时准确的回复,请在此处压缩并附上以下资源进行测试:

  • 您的简化输入Word文档
  • Aspose.Words 19.1生成的输出文档显示了不良行为
  • 您的预期文档显示正确的输出。 您可以使用MS Word创建预期文档。
  • 还请创建一个独立的简单控制台应用程序(没有编译错误的源代码),这有助于我们在最终重现您当前的问题并将其附加到此处进行测试。 请不要在其中包含Aspose.Words DLL文件以减小文件大小。
  • 突出显示Aspose.Words中有问题区域的对比屏幕截图生成了关于您的预期’.docx’的’.docx’文件并将其附加到此处进行测试

一旦您准备好这些信息,我们将立即开始调查您的问题,并为您提供更多信息。 谢谢你的合作。

真的非常感谢您的回答,我这个问题的重心是如何删除空白行和空白页,而不是空白行和空白页是如何产生的,因为这个空白行和空白页不一定是Aspose产生的。我这样问这个问题吧:我有一个word文档,文档的内容包含空白行和空白页,如何使用aspose.words for .net去掉这个空白行和空白页呢?
比如我上传的附件文档中,原始文档是test.doc,如何去掉里面的空白行和空白页变成test1.doc呢?
万分感谢!!!!!Template.zip (4.1 KB)

@pechem,

您可以使用以下代码从Word文档中删除空白行和空白页。

Document doc = new Document("E:\\template\\test1.doc");

foreach (Paragraph para in doc.GetChildNodes(NodeType.Paragraph, true))
{
    if (string.IsNullOrEmpty(para.ToString(SaveFormat.Text).Trim()))
    {
        para.Remove();
    }
}

doc.Save("E:\\template\\19.1.doc");

希望这可以帮助。

哇塞,测试过完全可以,十分感谢您提供的办法。另外还想问一下如果我只想删除文档中固定位置的某几段的空白行有简单的办法吗?

@pechem,

您可以通过索引获取任何段落,如果它为空,则将其删除:

Paragraph para = doc.FirstSection.Body.Paragraphs[5];
if (string.IsNullOrEmpty(para.ToString(SaveFormat.Text).Trim()))
{
    para.Remove();
}

因为所有段落都是自动生成的,无法知道哪个段落是第几段,在这种情况下,如何只删除空白页而不删除空白行呢???

@pechem,

我想,您可以实现以下工作流程来实现此目的:

  • 找到包含分页符的段落
  • 使用[LayoutCollector.GetEndPageIndex]方法获取该段落的页码。
  • 获取本段的下一个和上一个兄弟姐妹,并检查他们所包含的页码
  • 如果兄弟姐妹的页面索引与目标段落的页面索引不同,则表示具有分页符的段落在该页面上是唯一的
  • 在这种情况下,您只需删除该段落即可

希望这可以帮助。