Мне нужно реализовать печать в моем приложении Win 8.1, и ключевым требованием является возможность создания страницы после принтер был выбран и нажата кнопка печати. Это устраняет требования безопасности вокруг изображений и не подлежит обсуждению. В конце концов, это тот момент, когда мне придется загружать изображения, необходимые для печати.Изображение не видно при печати
В настоящее время для моего тестирования, я использую образ, который является локальным для проекта:
string testImageLocalSource = "ms-appx:///Assets/testImage.png";
В моем тестовом проекте я работаю, я уверен, генерации страницы печати во время обработчика событий PrintDocument.AddPages
следующим образом (макет/маржинальный код удален для краткости):
private void PrintDocument_AddPages(object sender, AddPagesEventArgs e)
{
var printPageDescription = e.PrintTaskOptions.GetPageDescription(0);
FrameworkElement printPage;
printPage = new MainPrintPage();
// get the printable content
Grid printableArea = (Grid)printPage.FindName("printableArea");
Run myRun1 = new Run();
myRun1.Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
myRun1.FontStyle = Windows.UI.Text.FontStyle.Oblique;
myRun1.Foreground = new SolidColorBrush(Windows.UI.Colors.Purple);
myRun1.FontSize = 42;
Image i = new Image();
i.Source = new BitmapImage(new Uri(testImageLocalSource, UriKind.Absolute));
i.Height = 200;
InlineUIContainer container = new InlineUIContainer();
container.Child = i;
// Create a paragraph and add the content.
Paragraph myParagraph = new Paragraph();
myParagraph.Inlines.Add(container);
myParagraph.Inlines.Add(myRun1);
// add paragraph to RichTextBlock blocks
var mainRTB = printPage.FindName("mainrtb");
((RichTextBlock)mainRTB).Blocks.Add(myParagraph);
// add page to hidden canvas
printingRoot.Children.Add(printPage);
printingRoot.InvalidateMeasure();
printingRoot.UpdateLayout();
printDocument.AddPage(printPage);
PrintDocument printDoc = (PrintDocument)sender;
printDoc.AddPagesComplete();
}
текст появляется хорошо, и, кажется, дополнительное пространство, где изображение должно быть, но изображение не появляется.
Изображение появляется в печати, если я использую этот код в предыдущем обработчике событий, например PrintDocument.Paginate
.
Кто-нибудь пытался сделать что-то подобное и нашел решение, иначе у кого-нибудь есть объяснение относительно того, что здесь происходит, и идея о том, как его исправить?
UPDATE
Я пытаюсь переместить большую часть этого кода на PrintTask.Submitting
событие, и это показывает обещание. Я обновлю это примером, если он работает.
пытался это тоже. Ширина и высота не влияют на видимость в этом случае. – earthling