首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# -使用CefSharp Chromium浏览器打印成PDF格式并适合页面

C# -使用CefSharp Chromium浏览器打印成PDF格式并适合页面
EN

Stack Overflow用户
提问于 2022-11-04 10:50:52
回答 1查看 95关注 0票数 1

我使用ChromiumWebBrowser将可能包含图像的本地html页面转换为PDF,以便在kiosk打印机上打印出来。PDF的尺寸应该是80毫米x 200毫米。以下是到目前为止的代码:

代码语言:javascript
复制
using (var browser = new ChromiumWebBrowser(url, browserSettings))
{        
    if (zoomLevel > 0)
    {
        browser.FrameLoadStart += (s, argsi) =>
        {
            var b = (ChromiumWebBrowser)s;
            if (argsi.Frame.IsMain)
            {
                b.SetZoomLevel(zoomLevel);
            }
        };
    }

    await browser.WaitForInitialLoadAsync();

    var contentSize = await browser.GetContentSizeAsync();

    var viewport = new Viewport
    {
        Height = contentSize.Height,
        Width = contentSize.Width,
        Scale = 1.0
    };

    var printSettings = new PdfPrintSettings();
    printSettings.PageWidth = 80000;   // 80mm
    printSettings.PageHeight = 200000; // 200mm
    printSettings.BackgroundsEnabled = true;

    await browser.PrintToPdfAsync("D:\\chromium_pdf.pdf", printSettings);
}

如果html页面只包含文本,它将被完美地转换。此外,如果它的图像适合于指定的打印宽度和高度,它可以很好地转换。当html中包含大型图像时,就会出现此问题。这会导致部分图像从右边突出出来。

当在普通浏览器中手动打印到PDF时,显示的弹出窗口有一个勾选框,表示“适合可打印区域”,该框缩小整个页面以适应整个图像。我想通过代码来模拟。

PdfPrintSettings类中,有一个名为ScaleFactor的属性。当我将此从100%更改为50%时,图像在创建的PDF页面中非常适合。但是,这个50%的值是任意的,我想根据图像进行缩放。

我试图更改视口宽度和高度或浏览器缩放级别,但这不影响打印PDF。

我也不想截图PDF,因为这会影响打印质量;打印文本要清楚得多。

如何使用来自ChromiumWebBrowser的CefSharp来缩放页面以适应PDF页面?或者我怎样才能弄清楚ScaleFactor应该是什么?

下面是生成的PDF的第一页和第二页的截图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-05 01:44:23

PrintToPdfAsync使用与https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF相同的代码路径。

没有对适合页面的具体支持。在铬添加支持之前,不会有内置的选项。

可能需要考虑的备选方案:

rules

  • Calculate
  • 添加了一些css媒体打印的基于内容大小的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74315859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档