Я печатаю файлы PDF, конвертируя каждую страницу в изображение PNG с помощью PDFiumSharp. Затем я рисую это изображение в Graphics.
private void PrintPage(object sender, PrintPageEventArgs ev)
{
ev.Graphics.DrawImage(images[pageNum], ev.Graphics.VisibleClipBounds);
pageNum++;
if (pageNum == images.Count)
{
ev.HasMorePages = false;
}
else
{
ev.HasMorePages = true;
}
}
public void Print()
{
printDocument.PrintPage += new PrintPageEventHandler(PrintPage);
pageNum = 0;
if (printDocument.PrinterSettings.IsValid)
{
printDocument.Print();
}
else
{
throw new Exception("Printer is invalid.");
}
}
Проблема в том, что принтер получает очень большие данные и весь процесс работает медленно. Я пробовал использовать команду lpr
в Windows. Он работает напрямую с файлами PDF, но мое приложение должно поддерживать двустороннюю печать, другой источник бумаги и т. Д., Что недоступно в lpr
.
Как я могу распечатать PDF-файл с помощью System.Drawing.Printig (или чего-то еще, что предлагает аналогичные функции) без преобразования в изображение? Я использую .NET Core 3.1, мое приложение должно быть кроссплатформенным.