假設我們聲明如下,計劃中的行:打印清單到文件
List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();
,所以我們希望這個列表中的每個成員打印成文件,並在單獨的頁面,但都在一個文件中,如MyDoc.xps
。我怎麼能做到我的目的?
編輯:我的困難是,如何在打印過程中創建新的頁面?
對不起,如果它與其他問題重複,我無法得到我的答案在網站線程。 :|該工程
假設我們聲明如下,計劃中的行:打印清單到文件
List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();
,所以我們希望這個列表中的每個成員打印成文件,並在單獨的頁面,但都在一個文件中,如MyDoc.xps
。我怎麼能做到我的目的?
編輯:我的困難是,如何在打印過程中創建新的頁面?
對不起,如果它與其他問題重複,我無法得到我的答案在網站線程。 :|該工程
的一種方法如下:
PrintDocument
類System.Drawing.Printing
下,並使用其PrintPage
事件來設置一個個的頁面。示例代碼:
private List<Dictionary<string, string>> myList = new List<Dictionary<string, string>>();
private int pageIndex = 0;
private void PrintButton_Click(object sender, EventArgs e)
{
PrintDocument document = new PrintDocument();
document.PrintPage += new PrintPageEventHandler(document_PrintPage);
document.Print();
}
void document_PrintPage(object sender, PrintPageEventArgs e)
{
if (pageIndex >= myList.Count)
{
e.HasMorePages = false;
return;
}
Dictionary<string, string> curData = myList[pageIndex];
List<string> lines = new List<string>();
lines.Add("Items count: " + curData.Count);
curData.Keys.ToList().ForEach(key =>
{
lines.Add(string.Format("Key: {0}, Value: {1}", key, curData[key]));
});
e.Graphics.DrawString(string.Join("\n", lines), this.Font, SystemBrushes.WindowText, 0, 0);
pageIndex++;
e.HasMorePages = pageIndex < myList.Count;
}
在打印每一頁時,document_PrintPage
方法將被調用。只要您不會將e.HasMorePages
設置爲false,它將繼續打印新頁面。
編輯:強制創建.xps
文件剛剛創建打印文檔時添加這兩條線:
document.PrinterSettings.PrintToFile = true;
document.PrinterSettings.PrintFileName = "myfile.xps";
非常感謝:)這是我的問題的答案:) – 2011-12-25 14:25:23
歡呼@Hsesein它是基於我看到你的問題時得到和回想的舊代碼。 – 2011-12-25 20:42:44
請閱讀**編輯**部分。 – 2011-12-25 13:26:01
請解釋一下你曾經嘗試過什麼。 – Oded 2011-12-25 13:26:23
你在Winforms或WPF中做這個嗎?這是關於.XPS文件的具體內容嗎? – Adam 2011-12-25 13:29:22