2009-06-05 1 views

ответ

0

Вы в основном должны сами разбивать документ таким же образом, что и слово «текст». Проверка, чтобы увидеть, будет ли следующая строка соответствовать, отбрасывать страницы, если нет, начинать каждую страницу с заголовка таблицы и продолжать добавлять строки таблицы до тех пор, пока страница не будет заполнена.

К сожалению, ни одно из этих paginators не делает этого.

1

Есть некоторые проблемы с ссылочным CodeProject, но ПОЧТИ работает, и я имел успех со следующими изменениями:

В GetPage, просто удалите четыре строки, которые ссылаются на консоли.

В классе Определение добавить

public static Size Subtract(Size s1, Size s2) 
{ 
    return new Size(s1.Width - s2.Width, s1.Height - s2.Height); 
} 

и изменить ContentSize добраться до

return Subtract(PageSize, new Size(
     Margins.Left + Margins.Right, 
     Margins.Top + Margins.Bottom + HeaderHeight + FooterHeight)); 

Затем в своем коде, что-то вроде этого, чтобы назвать его нажатием кнопки: - Я Бесполезный «т, как его имя класса :)

PrintDialog printDialog = new PrintDialog(); 
printDialog.PrintTicket.PageOrientation = PageOrientation.Landscape; 
if (true == printDialog.ShowDialog()) 
{ 

    MyPaginator.Definition d = new MyPaginator.Definition 
    { 
     Header = (c, b, n) => c.DrawRectangle(Brushes.Black, null, b), 
     Margins = new Thickness(48), // 1/2 inch all around 
     PageSize = new Size(flowDocument.PageWidth, flowDocument.PageHeight), 
    }; 
    DocumentPaginator s = new MyPaginator(flowDocument, d); 
    printDialog.PrintDocument(s, "Print Job Title"); 
} 

в моем случае, мне не нужен Footer, но этот заголовок делегата (или сома что-то вроде этого) является обязательным. Поля и PageSize будут по умолчанию, но мне нужны разные значения.

Наконец-то я обнаружил, что мне нужно добавить KeepTogether = true в мои определения абзацев для моих TableCells.

+0

Я также терял настройки TextAlignment между View и Print: предложение по этой ссылке исправил меня: [FlowDocument Text Alignment] (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a8a7b9af-2487-4041-af4d-68752d249b2b /) - и уменьшил мой код. –

+0

К сожалению, это ничего не делает. Я догадался добавить 'RepeatTeadHeaders = true' в' Определение', но в моей таблице ничего не повторяется. – ygoe

0

Попробуйте следующее: WPF Reports
Он поддерживает верхний колонтитул и имеет приятную функцию. Удачи