2015-04-16 4 views
0

Мне нужно реализовать печать в моем приложении 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 событие, и это показывает обещание. Я обновлю это примером, если он работает.

ответ

0

Не совсем уверен, что причиной этого в Win 8.1, но это, кажется, фиксируется в ОС Windows 10.

0

Вы забываете установить ширину картинки?

i.Width = 200; 
+0

пытался это тоже. Ширина и высота не влияют на видимость в этом случае. – earthling

Смежные вопросы