在没有浏览器控制的情况下渲染Chromium浏览器

首先,简要介绍一下最终目标:

我正在构建一个基于.NET Core的跨平台打印应用程序。该应用程序将能够使用自定义页面设置打印各种文件类型,例如页眉,页脚和页边距。一个主要功能是它支持多页向上打印(例如,一张横向并排呈现两张纵向页面的风景纸,称为“ 2up”)。

在没有浏览器控制的情况下渲染Chromium浏览器

打印HTML很重要,不仅因为打印HTML,而且我想使用所有基于HTML的出色语法-在那里突出显示源代码。

我已经使用开放源.NET HTML渲染库进行了概念验证,但是它与现代HTML东西的HTML兼容性较差。

该库提供了一种度量将呈现的内容的方法,因此我计算了#页。

<header class="blueBg">
  <div class="container">
    <!-- navgation bar -->
    <nav class="navigation">
      <!-- Nav items -->
      <a href="/" class="logo">
        Logo
      </a>
      <ul class="nav-items">
        <li>home</li>
        <li>blog</li>
        <li>products</li>
        <li>clients</li>
        <li>contact us</li>
      </ul>
      
      <a href="" class="get-started">get started</a>
    </nav>
  </div>
</header>

我的页面呈现代码如下:

SizeF size = HtmlRender.MeasureGdiPlus(g,html,containingSheet.GetPageWidth());
int numPages = (int)(size.Height / containingSheet.GetPageHeight());

我现在正在尝试使用CEF完成同一件事,因为我想要一个“真实的” HTML渲染器。

我发现大多数关于屏幕外的讨论都只是在谈论SizeF size = new SizeF(containingSheet.GetPageWidth(),containingSheet.GetPageHeight()); HtmlRender.RenderGdiPlus(g,PointF(0,0),size ); 等问题,而实际上并没有。

我找不到明显的方式来对CEF说“将页面1(定义为高度/宽度)渲染到此GDI +图形对象”,然后再“渲染页面2 ...”等...

我可能缺少明显的东西,但是我看不到CEF(或允许这样做的CEFsharp” API)。

请注意,我已经考虑过尝试使用PrintToPDF,然后解析生成的PDF,呈现每个页面。我认为这行得通,但似乎是一种疯狂的回旋方式。

人们可以请我指出正确的方向吗?

lichenguse 回答:在没有浏览器控制的情况下渲染Chromium浏览器

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3002231.html

大家都在问