Asp.net core Aspose.Words将Word文档另存为pdf格式将丢失格式

Asp.net core Aspose.Words将Word文档另存为pdf格式将丢失格式,asp.net-core,aspose,aspose.words,Asp.net Core,Aspose,Aspose.words,我正在使用Aspose.Words for.NET替换文档中的一些合并字段,然后将文件另存为PDF,但是,由于转换为PDF(请参阅图片),我的格式变得混乱(即使是非合并字段)。代码非常简单,所以我看不出缺少什么 word文档的预处理: 生成的pdf: 正如您所看到的,一些字段缩进得更多,而不是很好地对齐 生成PDF和替换合并字段的代码如下: public async Task<Stream> GenerateContractAsync(string requestRegi

我正在使用Aspose.Words for.NET替换文档中的一些合并字段,然后将文件另存为PDF,但是,由于转换为PDF(请参阅图片),我的格式变得混乱(即使是非合并字段)。代码非常简单,所以我看不出缺少什么

word文档的预处理:

生成的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;
    }
public async Task GenerateContractAsync(string requestRegistrationId)
{
var requestRegistration=wait\u requestRegistrationRepository
.FindRequestRegistration(请求注册ID)
.Include(rr=>rr.Request.QualityType)
.Include(rr=>rr.User)
.SingleOrDefaultAsync();
var file=await\u fileService
.LoadFileAsync(“Concept contract.docx”);
var user=requestRegistration.user;
var document=新的Aspose.Words.document(文件);
document.MailMerge.Execute(
新[]
{
“EmployeeName”、“EmployeeDateOfBirth”、“EmployeePlaceOfBirth”、“EmployeeSSN”、“EmployeeCity”,
“员工地址”、“合同开始日期”、“员工职能”、“小时工资”、“工资扣除申请”
},
新对象[]
{
user.FullName,$“{user.birth: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.payrolltaxdiscountable?“Ja”:“Nee”
}
);
var mergedDocumentStream=newmemoryStream();
保存(mergedDocumentStream,SaveFormat.Pdf);
#如果调试
mergedDocumentStream.Seek(0,SeekOrigin.Begin);
wait_fileService.SaveFileToDiskAsync($“{user.Id}-{DateTimeOffset.Now:g}.pdf”,“”,mergedDocumentStream);
#恩迪夫
mergedDocumentStream.Seek(0,SeekOrigin.Begin);
返回合并文档流;
}

任何帮助都将不胜感激。

问题是因为缺少字体。有关详细信息,请参阅以下文章

在您的情况下,您需要在执行此Aspose.Words代码的计算机上安装“Verdana”、“Arial”和“Cambria”字体。只需将这些字体文件从Windows计算机复制到其他MAC计算机上就可以了


我与Aspose合作,担任开发人员福音传道者。

您是否尝试过18.8?如果问题仍然存在,请将1)input Word文档2)Aspose.Words 18.8生成的输出文件(显示不希望出现的行为)和3)简单控制台应用程序(源代码无编译错误)压缩并上载到Dropbox,并在此处共享下载链接以供测试。我与Aspose合作,担任开发人员福音传道者。@AwaisHafeez感谢您的回复。我为您创建了此ZIP:-它包含输入文档(
ExampleDocument.docx
)、生成的输出文件(
merged.pdf
)和控制台应用程序(
Program.cs
)。出现此问题的原因是缺少字体。详情请参阅。在您的情况下,请在执行此Aspose.Words代码的计算机上安装“Verdana”、“Arial”和“Cambria”字体。只需将这些字体文件从Windows计算机复制到其他计算机即可。我与Aspose合作,担任开发人员福音传道者。@AwaisHafeez感谢您的回复。我刚刚确认,我的Mac电脑上缺少字体确实是个问题。由于我正在构建的应用程序最终将在Windows上运行,这意味着没有问题需要修复。请随意发表你的评论作为回答,我会接受的。