Я пытаюсь создать конвертер из HTML в PDF, используя Chrome print to PDF. опция.
Я уже пробовал программу командной строки для Chrome без головы, но я не могу добавить какие-либо настройки, поэтому я пытаюсь сейчас использовать M asterDevs.ChromeDevTools
.
Моя проблема в том, что приложение переходит в режим прерывания каждый раз, когда оно проходит ожидание, и я действительно не понимаю, в чем может быть проблема.
using System;
using MasterDevs.ChromeDevTools.Protocol.Chrome.Page;
using System.IO;
using System.Linq;
using System.Threading;
using MasterDevs.ChromeDevTools.Protocol.Chrome.DOM;
using Task = System.Threading.Tasks.Task;
using MasterDevs.ChromeDevTools;
namespace ConsoleApp4
{
internal class Program
{
const int ViewPortWidth = 1440;
const int ViewPortHeight = 900;
private static void Main(string[] args)
{
Task.Run(async () =>
{
// STEP 1 - Run Chrome
var chromeProcessFactory = new ChromeProcessFactory(new StubbornDirectoryCleaner());
using (var chromeProcess = chromeProcessFactory.Create(9222, true))
{
// STEP 2 - Create a debugging session
var sessionInfo = (await chromeProcess.GetSessionInfo()).LastOrDefault();
var chromeSessionFactory = new ChromeSessionFactory();
var chromeSession = chromeSessionFactory.Create(sessionInfo.WebSocketDebuggerUrl);
// STEP 3 - Send a command
//
// Here we are sending a commands to tell chrome to set the viewport size
// and navigate to the specified URL
//await chromeSession.SendAsync(new SetDeviceMetricsOverrideCommand
//{
// Width = ViewPortWidth,
// Height = ViewPortHeight,
// Scale = 1
//});
var navigateResponse = await chromeSession.SendAsync(new NavigateCommand
{
Url = "http://www.google.com"
});
Console.WriteLine("NavigateResponse: " + navigateResponse.Id);
var printResponse = await chromeSession.SendAsync(new PrintToPDFCommand {
Landscape = true
, DisplayHeaderFooter = true
, MarginBottom = 0
, MarginTop = 0
, MarginRight = 0
, MarginLeft = 0
});
Console.WriteLine("NavigateResponse: " + navigateResponse.Id);
Console.WriteLine("Exiting ..");
}
}).Wait();
}
}
}