Прошло очень очень много времени, и мы не могли найти решение.
Мое приложение содержит десять панелей стека с форматированным текстом.Каждая панель стека имеет высоту 800 и ширину 500. (Представьте себе десять страниц с текстом в приложении WordPad).Моя главная цель - напечатать содержимое панели стека.Каждое содержимое панели стека должно отображаться точно на печатной странице.Существует десять панелей стека, поэтому итоговый печатный документ также должен содержать десять страниц.
До сих пор я мог сериализовать любую панель стека в файл xps и распечатать ее.
Примечание. Одно из названий панели стека - 'spanel0'
Мой код:
private void PrintDocument() {
PrintDialog pd = new PrintDialog();
FrameworkElement fe = (spanel0 as FrameworkElement);
fe.Measure(new Size(Int32.MaxValue, Int32.MaxValue));
Size visualSize = fe.DesiredSize;
fe.Arrange(new Rect(new Point(0, 0), visualSize));
MemoryStream stream = new MemoryStream();
string pack = "pack://temp.xps";
Uri uri = new Uri(pack);
DocumentPaginator paginator;
XpsDocument xpsDoc;
using (Package container = Package.Open(stream, FileMode.Create))
{
PackageStore.AddPackage(uri, container);
using (xpsDoc = new XpsDocument(container, CompressionOption.Fast, pack))
{
XpsSerializationManager rsm =
new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
rsm.SaveAsXaml(spanel0);
paginator = ((IDocumentPaginatorSource)
xpsDoc.GetFixedDocumentSequence()).DocumentPaginator;
paginator.PageSize = visualSize;
}
PackageStore.RemovePackage(uri);
}
}
В чем проблема?
Я хочу сериализовать все панели стека в xps, чтобы при печати документа xps я получал PDF-файл на десять страниц.С помощью приведенного выше кода я смог бы сериализовать любую из стековых панелей в xps и получить с нее печать.
Надеюсь, вы поняли мою проблему.Пожалуйста, ведите меня.Заранее спасибо.
Примечание: мои остальные панели стека - spanel1, spanel2, spanel3, spanel4, spanel5 и т. Д.