DocToPdfConverter省略了Page / NumPages字段

时间:2016-08-04 09:33:09

标签: c# syncfusion

在我们的应用程序中,我们有一些文档导出,这些文档导出是通过读取Word文档,替换多个占位符然后直接返回修改后的word文档或使用Syncfusion DocIO及其DocToPdfConverter将其转换为PDF而生成的。并返回。 到目前为止一切都很好。

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

e.g。如果word文档包含

  

[Field:Page / Field:NumPages](即[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文件。不幸的是,由于各种原因,这不是一种选择。

2 个答案:

答案 0 :(得分:0)

我怀疑提到的Page字段和NumPage字段缺失问题可能会因以下代码而引发。

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

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

答案 1 :(得分:0)

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