没有X服务器的dotnet核心Linux运行时上的DinkToPdf库

时间:2019-05-30 07:00:10

标签: c# .net-core debian wkhtmltopdf dinktopdf

我正在研究dotnet核心应用程序,该应用程序(除其他外)根据某种协议创建PDF文档。 我创建了一个充满数据的HTML文档(Bootstrap网格,没有图形,只有文本),然后使用DinkToPdf库(wkhtmltopdf工具的包装器)将其转换为PDF。 在我的开发机器(Win 10 x64)上,一切正常,PDF看起来非常不错。 当我使用dotnet核心运行时将其部署到Debian VPS时,PDF看起来很糟糕,文档具有较大的文本,并且网格被破坏了。 VPS没有GUI / X服务器,只有ssh访问。 看起来GlobalSettings属性(例如ViewportSize,PaperSize或DPI)在Linux上未正确使用。 问题出在哪里?在Linux上使用它有任何先决条件吗? 你有经验吗?

public class ProtocolPdfService : IProtocolPdfService
{
    private static IConverter converter = new SynchronizedConverter(new PdfTools());
    private readonly GlobalSettings pdfSettings = new GlobalSettings
    {
        ColorMode = ColorMode.Color,
        Orientation = Orientation.Portrait,
        PaperSize = PaperKind.A4,
        ViewportSize = "1920x1080",
        DPI = 300
    };

    public Stream GetProtocolPdf(int protocolId)
    {
        ...
        var pdfByte = GeneratePdfFromHtml(renderedHtml);
        return new MemoryStream(pdfByte);

    }
    public byte[] GeneratePdfFromHtml(string htmlContent)
    {
        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = pdfSettings,
            Objects = {
                new ObjectSettings() {
                    PagesCount = true,
                    HtmlContent = htmlContent,
                    WebSettings = { DefaultEncoding = "utf-8" },
                    UseLocalLinks = false,
                    UseExternalLinks = false,
                    ProduceForms = false,
                }
            }

        };
        return converter.Convert(doc);
    }
}

0 个答案:

没有答案