64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection.Metadata.Ecma335;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using PdfSharp.Pdf.IO;
|
|
using PuppeteerSharp;
|
|
using PuppeteerSharp.Media;
|
|
using WGneu.Windows;
|
|
|
|
namespace WGneu.Documents {
|
|
public static class Pdf {
|
|
|
|
private static readonly string CHROMIUM = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
|
|
private static IBrowser? _Browser = null;
|
|
|
|
public static void Init() {
|
|
var b = Browser;
|
|
}
|
|
|
|
private static IBrowser Browser {
|
|
get {
|
|
_Browser ??= Puppeteer.LaunchAsync(new LaunchOptions {
|
|
Headless = true,
|
|
ExecutablePath = CHROMIUM,
|
|
}).GetAwaiter().GetResult();
|
|
return _Browser;
|
|
}
|
|
}
|
|
|
|
public static async Task Convert(string path_html, string path_pdf) {
|
|
using var page = await Browser.NewPageAsync();
|
|
await page.GoToAsync("file://" + path_html);
|
|
await page.WaitForFunctionAsync("() => window.finished");
|
|
await page.PdfAsync(path_pdf, new() {
|
|
PreferCSSPageSize = true,
|
|
//Format = PaperFormat.A4,
|
|
DisplayHeaderFooter = false,
|
|
MarginOptions = new() {
|
|
Top = "0mm",
|
|
Right = "0mm",
|
|
Bottom = "0mm",
|
|
Left = "0mm",
|
|
},
|
|
});
|
|
}
|
|
|
|
public static void UpdateMetadata(string path, string title, string author) {
|
|
using var doc = PdfReader.Open(path);
|
|
doc.Info.Title = title;
|
|
doc.Info.Author = author;
|
|
doc.Save(path);
|
|
}
|
|
|
|
public static void Display(string title, string path) {
|
|
var w = new DocumentViewerWindow(title, path);
|
|
w.Show();
|
|
}
|
|
}
|
|
}
|