首页 文章

Aspose.Words保存Word文档,因为pdf丢失了格式

提问于
浏览
0

我使用Aspose.Words for .NET来替换我的文档中的一些合并字段,然后将文件保存为PDF,但是,我的格式化通过转换为PDF(即使对于非合并字段)也变得混乱(参考图像) . 代码很简单,所以我看不到我错过的东西 .

word文档,预处理:
enter image description here

生成的pdf:
enter image description here

正如您所看到的,某些字段缩进了一点而不是很好地对齐 .

我生成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;
    }

任何帮助将不胜感激 .

1 回答

  • 1

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

    How Aspose.Words Uses True Type Fonts

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

    我和Aspose一起担任开发者布道者 .

相关问题