asp.net-core - Aspose.Words 将 Word 文档保存为 pdf 格式丢失
问题描述
我正在使用 Aspose.Words for .NET 替换文档中的一些合并字段,然后将文件保存为 PDF,但是,由于转换为 PDF,我的格式变得混乱(即使对于非合并字段)(请参阅图像)。代码很简单,所以我看不到我缺少什么。
正如你所看到的,有些字段缩进了一点,而不是很好地对齐。
我生成 PDF 和替换合并字段的代码是:
public async Task<Stream> GenerateContractAsync(string requestRegistrationId)
{
var requestRegistration = await _requestRegistrationRepository
.FindRequestRegistration(requestRegistrationId)
.Include(rr => rr.Request.QualityType)
.Include(rr => rr.User)
.SingleOrDefaultAsync();
var file = await _fileService
.LoadFileAsync("Concept contract.docx");
var user = requestRegistration.User;
var document = new Aspose.Words.Document(file);
document.MailMerge.Execute(
new[]
{
"EmployeeName", "EmployeeDateOfBirth", "EmployeePlaceOfBirth", "EmployeeSSN", "EmployeeCity",
"EmployeeAddress", "ContractStartDate", "EmployeeFunction", "HourlyWage", "WageDeductionApplied"
},
new object[]
{
user.FullName, $"{user.Birthday:dd-MM-yyyy}", "Oss", user.Bsn, user.City,
$"{user.PostalCode}, {user.City}", $"{requestRegistration.Request.StartDate:dd-MM-yyyy}",
requestRegistration.Request.QualityType.Name, $"{requestRegistration.Request.HourlyRate:C}",
user.PayrollTaxDiscountEnabled ? "Ja" : "Nee"
}
);
var mergedDocumentStream = new MemoryStream();
document.Save(mergedDocumentStream, SaveFormat.Pdf);
#if DEBUG
mergedDocumentStream.Seek(0, SeekOrigin.Begin);
await _fileService.SaveFileToDiskAsync($"{user.Id}-{DateTimeOffset.Now:g}.pdf", "", mergedDocumentStream);
#endif
mergedDocumentStream.Seek(0, SeekOrigin.Begin);
return mergedDocumentStream;
}
任何帮助将不胜感激。
解决方案
出现此问题的原因是缺少字体。有关详细信息,请参阅以下文章。
Aspose.Words 如何使用 True Type 字体
在您的情况下,您需要在执行此 Aspose.Words 代码的机器上安装“Verdana”、“Arial”和“Cambria”字体。只需将这些字体文件从 Windows 机器复制到其他 MAC 机器即可。
我与 Aspose 一起担任开发人员宣传员。
推荐阅读
- node.js - 使用 Angular 和 Node 为上传文件设置正确的标头
- python - id() 到底显示了什么?
- d3.js - InkScape 使用嵌入的 xlink:href SVG 文件对 SVG 进行像素化,用于 D3js 图中的节点
- python - “。” 通配符在 python 的正则表达式中对我不起作用?
- node.js - 如何以及在何处(最好)使用 RethinkDB 部署 NodeJs 应用程序
- postgresql - pgsql中绑定游标和未绑定游标的区别:
- python - SLAM 与注册
- python - 如何获得主要和次要刻度标签
- php - 使用 PHP 连接 MySQL
- c++ - 带有类的 C++ 类型双关语