DocToPdfConverter省略Page/NumberPages字段
本文关键字:NumberPages 字段 Page 省略 DocToPdfConverter | 更新日期: 2023-09-27 18:00:06
在我们的应用程序中,我们有几个文档导出,它们是通过读取Word文档、替换一些占位符生成的,然后直接返回修改后的Word文档,或者使用Syncfusion DocIO及其DocToPdfConverter
将其转换为PDF并返回。到目前为止还不错。
问题是,在生成的PDF中,只有空白文本,而不是页码。
例如,如果单词文档包含
[
Field:Page
/Field:NumPages
](即[5/7])
生成的PDF将包含
[/]
转换代码如下(bytes
是以前生成的word文档,它仍然包含Page/Numberpages字段):
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以解决问题。
我们现在使用Winnovive Word To PDF Converter for.NET,它不仅在这种情况下,而且在Syncfusion转换器出错的其他几种情况下,都能实现我们想要的功能。