Как печатать PDF в UWP без потери качества после растеризации в PNG
После некоторого исследования печати в UWP я выделил:
- Нет собственного способа печати PDF-документа прямо из вашего приложения без перенаправления этой задачи в Edge или другую аналогичную программу.
- Существует способ распечатать элементы XAML (например, изображение) с помощью PrintDocument.
- Существует встроенный способ рендеринга PDF в PNG с использованием класса PdfDocument.
Эти три пункта дают нам возможность распечатать PDF, но у нас есть проблема здесь:
- После растеризации в PNG качество выходного документа довольно низкое.
К счастью, PdfDocument позволяет увеличить выходное разрешение при растеризации, но...
- Но это потребляет память (разрешение x4 приводит к потреблению памяти x32)
- Но это отнимает много времени (разрешение x4 приводит к потреблению времени x7)
- Даже при разрешении выходного изображения x4 качество все еще так далеко от желаемого.
Итак, я создал образец, который вы можете поиграть с https://github.com/VitaliyPusan/UwpPrinting
Например, Microsoft Edge может печатать PDF в довольно хорошем качестве и делать это быстро и без дополнительного потребления памяти, но я понятия не имею, как я могу сделать то же самое.
Кто-нибудь знает лучший способ печати PDF в UWP?