CEF Sharp:打印分辨率

CEF Sharp: printing resolution

我正在使用 CEFSharpCEFC# 包装器)将网页打印为 PDF,如下所示:

browser.PrintToPdfAsync(@"C:\out.pdf", new PdfPrintSettings
{
    BackgroundsEnabled = true,
    HeaderFooterEnabled = false,
    Landscape = false,

    MarginType = CefPdfPrintMarginType.Custom,
    MarginBottom = 0,
    MarginTop = 0,
    MarginLeft = 0,
    MarginRight = 0,

    PageWidth =  210000,
    PageHeight = 297000
});

但是,问题是生成的 PDF 与在 "real" Chrome 应用程序中手动打印同一页相比非常模糊。

我做了一个比较截图来显示不同之处:

(以全分辨率打开它以注意差异)

基本上,如您所见,CEF 似乎比原生 Chrome 打印功能更能压缩图像和其他非矢量图形。

理想情况下,我想完全禁用压缩,或者至少让它更接近原生 Chrome 水平。可以吗?

也相关:有没有办法以更高分辨率打印? PdfPrintSettings class 只接受以微米为单位的宽度和高度测量值,但我看不到任何设置渲染定义 (DPI) 的方法...这可能吗?

我猜图像模糊是因为 PDF 打印为预览: https://bitbucket.org/chromiumembedded/cef/src/6006f77bd9e030e9b456e180798c7c13d19cae08/libcef/browser/printing/print_view_manager.cc?at=master&fileviewer=file-view-default#print_view_manager.cc-110

我的拉取请求将 PDF 打印添加到 CEF。作为预览打印对我来说似乎已经足够了。它允许编写更少的代码并实现更少的 PDF 打印组件。

也有可能是其他一些设置导致图像模糊。例如: https://bitbucket.org/chromiumembedded/cef/annotate/6006f77bd9e030e9b456e180798c7c13d19cae08/libcef/browser/printing/print_view_manager.cc?at=master&fileviewer=file-view-default#print_view_manager.cc-50

它需要一些调试。为此,您很可能需要从源代码构建 CEF: https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding

无法设置 DPI,因为 Chromium 本身在其 PDF 打印对话框中没有这样的设置。尽管您可以尝试在此处设置不同的 DPI 选项: https://bitbucket.org/chromiumembedded/cef/src/6006f77bd9e030e9b456e180798c7c13d19cae08/libcef/browser/printing/print_view_manager.cc?at=master&fileviewer=file-view-default#print_view_manager.cc-53 但 Chromium 可能会忽略这些设置。