Aspose.words 转pdf 出现多出一页现象

这份word 文档中出现第五页存在多个换行符(导致间距过大),而由于客户性质导致不好编辑word。用wps 等转出来的pdf 不存在这个问题。该如何解决这个问题呢?



SDtext2025.docx (62.6 KB)

@lhh

Cause

在将Word文档转换为PDF时,出现多余的空白页通常是由于文档中存在多个换行符或段落间距设置不当。这可能导致PDF生成时,系统认为需要额外的页面来容纳这些空白。

Solution

要解决这个问题,可以尝试以下几种方法:

  1. 检查段落间距:确保文档中的段落间距设置合理,避免设置过大的间距。
  2. 删除多余的换行符:在Word文档中,检查并删除不必要的换行符,特别是在文档的末尾。
  3. 使用Aspose.Words的选项:在转换时,可以使用PdfSaveOptions类来控制输出格式和布局设置。

Code

以下是一个示例代码,展示如何设置PdfSaveOptions并进行转换:

Document doc = new Document("path/to/your/document.docx");
PdfSaveOptions options = new PdfSaveOptions();
options.setExportDocumentStructure(true); // 导出文档结构
options.setPreserveFormFields(true); // 保留表单字段
doc.save("path/to/output/document.pdf", options);

Next Steps

  1. 检查并调整Word文档中的段落设置和换行符。
  2. 使用上述代码进行PDF转换,并观察输出结果。
  3. 如果问题仍然存在,可以尝试使用不同的PDF保存选项,或联系Aspose支持团队获取进一步的帮助。

希望这些建议能帮助您解决问题!如果还有其他疑问,请随时告诉我!

试过你说的方法,并不能解决。至于你说的第一点第二点,报告是客户提供的不方便修改
这是使用的部分代码

PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
pdfSaveOptions.setCompliance(PdfCompliance.PDF_17);
pdfSaveOptions.setUseHighQualityRendering(true); // 高质量渲染
pdfSaveOptions.setEmbedFullFonts(false);
pdfSaveOptions.setUseCoreFonts(true); // 使用基本字体减少体积
pdfSaveOptions.setAdditionalTextPositioning(true); // 精确文本定位
pdfSaveOptions.setUseBookFoldPrintingSettings(true);
pdfSaveOptions.setExportDocumentStructure(true); // 导出文档结构
pdfSaveOptions.setPreserveFormFields(true); // 保留表单字段

// 设置PDF输出的大纲(书签)选项
OutlineOptions outlineOptions = pdfSaveOptions.getOutlineOptions();
// 1. 不自动创建缺失的大纲级别
outlineOptions.setCreateMissingOutlineLevels(false);
// 2. 设置默认书签的大纲级别为1(顶级)
outlineOptions.setDefaultBookmarksOutlineLevel(1);
// 3. 设置默认不展开任何大纲级别(0表示全部折叠)
outlineOptions.setExpandedOutlineLevels(0);
// 4. 设置标题大纲级别为0(不将标题显示为大纲)
outlineOptions.setHeadingsOutlineLevels(0);

document.save(destPath, pdfSaveOptions);

@lhh 我可以看到,我这边生成的 PDF 与 MS Word 2019 生成的 PDF 看起来相同:
ms.pdf (354.2 KB)

另外,您文档中使用的“仿宋_GB2312”字体在我这边不可用。请问能否将其附加到这里进行测试?由于字体规格不同,字体替换可能会导致文档布局差异。

好像明白了。在MS Word 2019 打开文档和用wps 打开文档效果都不一样。很大概率用户是用wps 编辑的保存格式为.doc 或者.docx 格式。这种情况有解决方案吗?

@lhh 遗憾的是,"Aspose.Words "模仿了 "MS Word "的行为。 唯一的办法是修改文档,删除一些空行,将 "Section Break"移到前一页。