Преобразуйте WPF (XAML) управление к документу XPS

Вы можете импортировать шрифт непосредственно из Google, добавив это

   @import url('https://fonts.googleapis.com/css?family=Roboto');

И используя его с этим font-family: 'Roboto', sans-serif; Вы можете найти более подробную информацию здесь https://fonts.google.com/ образец / Roboto? selection.family = Roboto

46
задан lisp 3 February 2014 в 09:06
поделиться

1 ответ

На самом деле после бездельничания с "кучей" различных образцов, все из которых являются невероятно замысловатыми и требуют использования Устройств записи Документа, Контейнеров, Очередей печати и Билетов Печати, я нашел статью Eric Sinks приблизительно Печать в WPF
, упрощенный код является всего 10 строками долго

public void CreateMyWPFControlReport(MyWPFControlDataSource usefulData)
{
  //Set up the WPF Control to be printed
  MyWPFControl controlToPrint;
  controlToPrint = new MyWPFControl();
  controlToPrint.DataContext = usefulData;

  FixedDocument fixedDoc = new FixedDocument();
  PageContent pageContent = new PageContent();
  FixedPage fixedPage = new FixedPage();

  //Create first page of document
  fixedPage.Children.Add(controlToPrint);
  ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
  fixedDoc.Pages.Add(pageContent);
  //Create any other required pages here

  //View the document
  documentViewer1.Document = fixedDoc;
}

, Мой образец довольно упрощен, это не включает Калибровку Страницы и Ориентацию, которая содержит совершенно другой набор проблем, которые не работают, как Вы ожидали бы. И при этом это не содержит никого, сохраняют функциональность, поскольку MS, кажется, забыл включать кнопку Save со Средством просмотра документов.

Сохраняют Функциональность, относительно просто (и также из статьи Eric Sinks)

public void SaveCurrentDocument()
{
 // Configure save file dialog box
 Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
 dlg.FileName = "MyReport"; // Default file name
 dlg.DefaultExt = ".xps"; // Default file extension
 dlg.Filter = "XPS Documents (.xps)|*.xps"; // Filter files by extension

 // Show save file dialog box
 Nullable<bool> result = dlg.ShowDialog();

 // Process save file dialog box results
 if (result == true)
 {
   // Save document
   string filename = dlg.FileName;

  FixedDocument doc = (FixedDocument)documentViewer1.Document;
  XpsDocument xpsd = new XpsDocument(filename, FileAccess.ReadWrite);
  System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
  xw.Write(doc);
  xpsd.Close();
 }
}

, Таким образом, ответ Да, можно взять Существующий WPF (XAML) Управление, связать с данными его и превратить его в документ XPS - и не все что трудный.

69
ответ дан Scott 26 November 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: