我正在研究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);
}
}