2013-12-09 2 views
1

Я пытаюсь распечатать отчет, в котором у нас есть несколько разных компонентов в xaml. По тому, что я обнаружил, при печати вы должны рассматривать каждый элемент UIelement как один, поэтому, если желаемый размер больше, чем доступный, вам нужно активировать флаг HasMorePages.Печать на Silverlight

Но здесь возникает проблема.

Мой пользователь может написать столько текста, сколько он хочет на сетке, поэтому в зависимости от суммы строка расширяет и удаляет область печати, как вы можете видеть на рисунке ниже.

Report

Я думал о придании целой страницы в сетку, но это было большой еще, что у меня в петлю, где DesizedSize всегда было больше, чем PrintableArea.

Мой код не сильно отличается от любого источника, который вы найдете в Интернете при поиске многостраничной печати.

Он основан на этом http://eswarbandaru.blogspot.com.au/2011/02/print-mulitple-pages-using-silverlight.html, но использует Stackpanels вместо текстовых полей.

Любая идея? Спасибо заранее.

ответ

0
  • Сначала вы должны работать, сколько страниц необходимо

    Dim pagesNeeded As Integer = Math.Ceiling (gridHeight/PageHeight) «получает количество страниц необходимо

  • Тогда, как только первый страница была отправлена ​​на принтер, вам необходимо переместить эти данные из поля зрения и принести новые данные в готовность к печати. Я делаю это, преобразовывая весь набор данных в элемент image/UI, затем я могу настроить значение Y, чтобы привести следующий набор требуемых данных на экран.

    transformGroup.Children.Add (New TranslateTransform() {С .Y = - (pageIndex * pageHeight)})

  • Затем, когда количество необходимых страниц достигается, сообщить принтеру, чтобы остановить

    If pagesLeft <= 0 Then 
         e.HasMorePages = False 
         Exit Sub 
        Else 
         e.HasMorePages = True 
        End If 
    

Или, если это слишком много работы, вы можете просто просто масштабировать все ноты, чтобы соответствовать на экране. Опять же, возможно, путем преобразования в элемент пользовательского интерфейса.

Check НУ t эта ссылка для преобразования в элемент пользовательского интерфейса.

http://www.codeproject.com/Tips/248553/Silverlight-converting-to-image-and-printing-an-UI

Надеется, что это помогает

+0

Спасибо за ответ, но мне удалось решить пару дней назад. – Vinicius

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