У меня есть около 8 записей, которые я хочу напечатать в одной партии, каждая на отдельной странице. Однако для примера UWP для этого используется более 600 строк кода для его выполнения. Мне кажется, что это намного проще, чем это. Я думал, что все, что нам нужно сделать, это добавить каждую страницу в PrintDocument
и отправить задание на печать. Очевидно нет. Я использую это:Печать нескольких страниц из UWA
async void Print()
{
var printDocument = new PrintDocument();
var printDocumentSource = printDocument.DocumentSource;
var printMan = PrintManager.GetForCurrentView();
printMan.PrintTaskRequested += PrintTaskRequested;
var pages = new List<Page>();
foreach (var item in items)
{
(//Set up variables)
var printPage = new PageToPrint() { //Set properties };
printPage.Set_Up(); //Set up fields
pages.Add(printPage);
}
printDocument.SetPreviewPage(1, page);
printDocument.SetPreviewPageCount(pages.Count, PreviewPageCountType.Final);
foreach (var page in pages)
{
printDocument.AddPage(page);
}
printDocument.AddPagesComplete();
await PrintManager.ShowPrintUIAsync();
}
void PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
{
PrintTask printTask = null;
printTask = e.Request.CreatePrintTask("Kimble Print Job", sourceRequested =>
{
printTask.Completed += PrintTask_Completed;
sourceRequested.SetSource(printDocumentSource);
});
}
private async void PrintTask_Completed(PrintTask sender, PrintTaskCompletedEventArgs args)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() =>
{
PrintManager printMan = PrintManager.GetForCurrentView();
printMan.PrintTaskRequested -= PrintTaskRequested;
});
}
Однако он не будет генерировать предварительный просмотр печати. Он просто сидит там, вращаясь и вращаясь, и если я нажму «печать», это не удастся (PDF не открывается, работа никогда не попадает на физический принтер.)
Я надеялся, что печать будет не менее разумно легко с PrintDocument
, и я все еще думаю, что похоже, что так должно быть. Я просто пропустил его здесь, или действительно ли занимает 600 строк кода для отправки простого задания на печать?
Что такое 'items' в вашем коде? И что такое класс PagetoPrint? Это то же самое с официальным образцом? Если это то же самое, что такое функция 'SetUp'? Поскольку официальный образец работает хорошо, более подробная информация о ваших частях кода может помочь решить вашу проблему. –
Элементы представляют собой массив классов, которые я использую для установки 'TextBlock' и т. Д. ('SetUp') на' PageToPrint', который является 'страницей'. – RareNCool