在我们的应用程序中,我们有一些文档导出,这些文档导出是通过读取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文件。不幸的是,由于各种原因,这不是一种选择。
答案 0 :(得分:0)
我怀疑提到的Page字段和NumPage字段缺失问题可能会因以下代码而引发。
wordDoc.UpdateDocumentFields();
wordDoc.UpdateWordCount();
wordDoc.UpdateTableOfContents();
请妥善删除上述代码并检查问题是否已解决。如果您仍然面临问题,那么您可以通过support@syncfusion.com与我们的支持团队联系以解决问题。
答案 1 :(得分:0)
我们现在使用Winnovative Word To PDF Converter for .NET,它不仅在这种情况下完全符合我们的要求,而且还在其他情况下使用Syncfusion转换器。