我正在使用ChromiumWebBrowser將可能包含影像的本地 html 頁面轉換為 PDF,以便在資訊亭列印機上列印。PDF 的尺寸應為 80 毫米 x 200 毫米。以下是到目前為止的代碼:
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 的螢屏截圖,因為這會影響列印質量;列印文字更清晰。
如何使用 CefSharp 的 ChromiumWebBrowser 縮放頁面以適應 PDF 頁面?或者我怎樣才能弄清楚ScaleFactor應該是什么?
這是生成的 PDF 的第一頁和第二頁的螢屏截圖:

uj5u.com熱心網友回復:
PrintToPdfAsync 使用與https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF相同的代碼路徑
沒有適合頁面的特定支持。在鉻添加支持之前,不會有內置選項。
可能要查看的選項:
- 添加一些css媒體列印規則
- 根據內容大小計算比例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/529993.html
標籤:C#pdf印刷铬头孢锋利
