Есть некоторые проблемы с ссылочным 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.
Я также терял настройки TextAlignment между View и Print: предложение по этой ссылке исправил меня: [FlowDocument Text Alignment] (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a8a7b9af-2487-4041-af4d-68752d249b2b /) - и уменьшил мой код. –
К сожалению, это ничего не делает. Я догадался добавить 'RepeatTeadHeaders = true' в' Определение', но в моей таблице ничего не повторяется. – ygoe