2017-02-06 16 views
1

Я хочу сгенерировать документы с разбивкой по страницам из FlowDocument объекта, который содержит элемент StackPanel. Я пробовал использовать DocumentPaginator.Paginate using DocumentPaginator из FlowDocument, который содержит StackPanel

До сих пор я пробовал этот код ниже, но мне не повезло, то есть только одна усеченная страница генерируется и ее содержимое разрезается пополам по вертикали.

// stackPanel contains elements that their total heights 
// make the page should break into several pages. 
StackPanel stackPanel = ...; 

BlockUIContainer blockUiContainer = new BlockUIContainer(stackPanel); 
FlowDocument flowDoc = new FlowDocument(blockUiContainer); 
flowDoc.PageHeight = InchToPoint(paperSizeA4.Height); // paperSizeA4.Height: integer value 
flowDoc.PageWidth = flowDoc.ColumnWidth = InchToPoint(paperSizeA4.Width); // paperSizeA4.Width: integer value 
flowDoc.PagePadding = new Thickness(40); 

DocumentPaginator docPaginator = ((IDocumentPaginatorSource)flowDoc).DocumentPaginator; 
docPaginator.ComputePageCount(); 


При печати документа в формате PDF, это результат, как сказано ранее, только одна страница и его содержание разрезают пополам вертикально (документ в этом изображении составляет 50% увеличено выход):

The result document


Я пропускаю что-то, чтобы сделать Разбиение работы? Или я реализовал это неправильно?

ответ

0

BlockUIContainer не может охватывать несколько страниц. Я предлагаю вынуть StackPanel и использовать BlockUIContainer для каждого элемента в списке.

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

  • Нет связанных вопросов^_^