DocToPdfConverter 省略 Page/NumPages 个字段

DocToPdfConverter omitting Page/NumPages fields

在我们的应用程序中,我们有几个文档导出,它们是通过读取 Word 文档生成的,替换一些占位符,然后直接 return 修改后的 word 文档或使用 Syncfusion DocIO 将其转换为 PDF 和他们 DocToPdfConverter 和 return 那。 到目前为止一切顺利。

问题是在生成的 PDF 中只有空白文本而不是页码。

例如如果word文档包含

[Field:Page / Field:NumPages] (i.e. [5 / 7])

生成的 PDF 将改为包含

[ / ]

转换代码是这样的(bytes是之前生成的word文档,仍然包含Page/Numpages字段):

private string ReturnPdf(string fileName, byte[] bytes)
{
    using (var wordStream = new MemoryStream(bytes))
    {
        var wordDoc = new WordDocument(wordStream);

        var converter = new DocToPDFConverter();
        PdfDocument pdfDoc = converter.ConvertToPDF(wordDoc);

        // return directly in http response instead of uploading to blob storage and returning link for one-time usage
        pdfDoc.Save(Path.ChangeExtension(Path.GetFileName(fileName), ".pdf"), HttpContext.Current.Response, HttpReadType.Save);
    }

    return null;
}

我是否遗漏了一些明显的东西,或者这实际上是转换器中的一个错误,如果它确实是一个错误,是否有任何已知的解决方法或好的替代方法(最好是免费的,但不一定如此)?

我也尝试在转换之前添加以下内容,但无济于事:

wordDoc.UpdateDocumentFields();
wordDoc.UpdateWordCount();
wordDoc.UpdateWordCount(performlayout: true);
wordDoc.UpdateTableOfContents();

编辑

通过一些尝试,我发现一种可能的解决方法似乎是在转换之前在 Word 中编辑生成的 .docx 文件。不幸的是,由于各种原因,这不是一个选择。

我怀疑提到的 Page 字段和 NumPage 字段丢失问题可能是由于以下代码引起的。

    wordDoc.UpdateDocumentFields();
    wordDoc.UpdateWordCount();
    wordDoc.UpdateTableOfContents();

所以请删除上面的代码并检查问题是否已解决。如果您仍然遇到问题,那么您可以通过 support@syncfusion.com 联系我们的支持团队来解决问题。

我们现在使用 Winnovative Word To PDF Converter for .NET,它不仅在这种情况下而且在 Syncfusion 转换器搞砸的其他几个情况下都完全符合我们的要求。