我開發了一個管理學校的wpf c#程序。用戶不時必須打印單個學生的證書。例如,這個學生在我們學校學習的證書,或者他的津貼金額的證明。什麼是打印單頁報告(wpf c#程序)的最快選項
對這些報告有:
- 固定文本
- 關於學生喜歡自己的名字等
對於這個任務,我建重佈局動態信息及其服務的宗旨,但用戶請求的速度更快。
我的問題是:rdls(關閉報表服務器)這個任務的正確方法?還是有更快的選擇?
我開發了一個管理學校的wpf c#程序。用戶不時必須打印單個學生的證書。例如,這個學生在我們學校學習的證書,或者他的津貼金額的證明。什麼是打印單頁報告(wpf c#程序)的最快選項
對這些報告有:
對於這個任務,我建重佈局動態信息及其服務的宗旨,但用戶請求的速度更快。
我的問題是:rdls(關閉報表服務器)這個任務的正確方法?還是有更快的選擇?
我使用FlowDocument
來實現這樣的簡單打印功能。您將XAML元素添加到文檔中,就像在編程中在窗口中創建XAML時一樣。使用相同的佈局控件(網格,堆疊面板等)來排列所有其他控件(文本段落,圖像等),並且當打印FlowDocument時,它將根據各種因素「流入」頁面如在打印機對話框中選擇的紙張尺寸。
聲明:這是複製/粘貼在一個急件,但它應該讓你知道它是如何工作的!
// Show the print dialog
var dlg = new PrintDialog();
if (!dlg.ShowDialog().GetValueOrDefault())
{
// User cancelled
return;
}
// Create and initialise the FlowDocument
_doc = new FlowDocument();
_doc.FontFamily = new FontFamily("Arial");
_doc.FontSize = 14;
// Add a paragraph of text
var para = new Paragraph(new Run("My paragraph....."))
{
FontSize = 14,
Foreground = new SolidColorBrush(Colors.Black),
Margin = new Thickness(0,0,0,12)
};
_doc.Blocks.Add(para);
// Add an image
var para = new Paragraph();
var img = new Image
{
Source = bitmapSource,
HorizontalAlignment = HorizontalAlignment.Center,
Margin = new Thickness(0,0,0,12)
};
para.Inlines.Add(img);
_doc.Blocks.Add(para);
// Print
var documentPaginator = ((IDocumentPaginatorSource)_doc).DocumentPaginator;
dlg.PrintDocument(documentPaginator, "My print job");
在我的應用程序中,我將所有這些封裝在一個類中(因爲我有幾個需要打印功能的地方)。該類在其構造函數中創建並初始化FlowDocument,並提供各種方法,例如「AddParagraph()」,「AddImage()」,用於指定邊距,字體,字體大小等不同的重載。
文檔分頁器最後一點是我實現的簡化版本,但它可能已足夠滿足您的需求。 (我創建了一個自定義文檔分頁器,可以在每個頁面上設置頁眉和頁腳)。
非常感謝。我從這個方法開始,試圖建立一個印刷的紙。我相信我將不得不檢查這種方法,以確定它是否允許即時打印而無需預覽,導出爲html或docx等等。 –