【问题标题】:CEF Sharp: printing resolutionCEF Sharp:打印分辨率
【发布时间】:2023-03-25 13:39:01
【问题描述】:

我正在使用 CEFSharpC# 包装器为 CEF)将网页打印为 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
});

但是,与在“真实”Chrome 应用程序中手动打印相同页面相比,生成的 PDF 非常模糊。

我做了一个比较截图来显示差异:

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

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

理想情况下,我想完全禁用压缩,或者至少让它更接近原生 Chrome 级别。能做到吗?

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

【问题讨论】:

    标签: c# google-chrome chromium-embedded cefsharp


    【解决方案1】:

    我猜图像是模糊的,因为 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 可能会忽略这些设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      相关资源
      最近更新 更多