איך ליצור קובץ כדוגמת קבלה וכדו'?
-
אני רוצה להוסיף לתוכנת הWPF יכולת להוציא קבלות ומסמכים, כדוג' מיד לאחר קליטת התרומה במערכת התוכנה תנפיק קובץ של קבלה.
בעצם אני צריך להכין קובץ של תבנית קבועה, עם סמל המוסד וכדו', ולהזין לתוכו כל פעם ערכים משתנים (מס' הקבלה, תאריך, סכום, תיאור אמצעי התשלום).
אין לי שמץ של מושג מהיכן להתחיל, שהרי התוצאה אמורה להיות קובץ כעין תמונה/מסמך PDF שמעוצבת יפה,
וא"כ אשמח לרעיונות / עצות וכדו' כיצד עושים זאת.תודה רבה!
פורסם במקור בפורום CODE613 ב15/10/2015 14:33 (+03:00)
-
פורסם במקור בפורום CODE613 ב15/10/2015 17:06 (+03:00)
-
מסמך לשמירה הכי קל (מובנה ב.NET) זה פורמט XPS.
תיצור UserControle חדש.
תן לו גובה ורוחב של A4 (או תאגד אותם להגדה בשביל לקחת מהמדפסת את הפרטים הללו).
תעצב מה שאתה רוצה, ותן שמות לאלמנטים עם תוכן דינמי או לחילופין תן להם בינידנג להכנה למידע משתנה.בעת יצירת המסמך כתוב קוד בדומה לזה:
void SaveDataAsXpsDoc() { var dataArray = new[] {new Data()}; var doc = CreateDocument(dataArray); SaveFixedDoc(doc, @"c:\1.xps"); } void SaveFixedDoc(FixedDocument doc, string fileName) { XpsDocument xpsd = new XpsDocument(fileName, FileAccess.ReadWrite); XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd); xw.Write(doc); xpsd.Close(); } FixedDocument CreateDocument(Data[] datas) { var fixedDoc = new FixedDocument(); foreach (var data in datas) fixedDoc.Pages.Add(CreatePage(new UserControl { DataContext = data })); return fixedDoc; } PageContent CreatePage(Control content) { var pageContent = new PageContent(); var page = new FixedPage { Height = 11.69 * 96, Width = 8.27 * 96 }; ((IAddChild)pageContent).AddChild(page); page.Children.Add(content); return pageContent; }
פורסם במקור בפורום CODE613 ב15/10/2015 17:22 (+03:00)
-
יש כלל ברזל בתיכנות. אפילו ארכיטקט יגיד לך. שצריך לשמור על הקריאות של הקוד אפילו על חשבון היעילות שלו.
ובמיוחד פה שהיעילות זניחה לגמרי.ולמה זה קריאות כי הקוד פה מסביר את עצמו.
ועוד משהו שאם מחר אתה רוצה לעשות פרמטר משתנה ל 96. יהיה לך יותר קל למצוא את זה ולבצע.
פורסם במקור בפורום CODE613 ב15/10/2015 21:30 (+03:00)
-
ממש מוזר..
הוא לא מזהה את האויביקטים של XpsDocument ו XpsDocumentWriter.
אני מנסה להוסיף רפרנס ל: using.windows.xps
כמו שמבואר פה כאן
אבל אני לא מוצא שום ניימספייס כזה בחלון של addRefrence (ניסיתי גם ע"י חיפוש..)לאן הוא נעלם?? בלעה אותו האדמה?!?!
פורסם במקור בפורום CODE613 ב16/10/2015 01:19 (+03:00)
-
סליחה שכחתי לציין:
System.Printingולהבא תחפש בגוגל את שם המחלקה, כנס לMSDN ושם חפש את שם האסמבלי. שם הnamespace לא רלוונטי כי הוא בלתי תלוי בקבצי האסמבלי (אתה יכול לעשות באסמבלי משלך מרחב שמות בשם System בלי פוצה פה ומצפצף וזה אכן יחסוך לך using :)).
הכפול 96 זה פשוט בשביל שיבינו איך הוקרץ המספר. בwpf המידות הם בDIPs שזה יחידות של 1/96 מאינץ. המידות של A4 הם 11.69 על 8.27 אינץ.
פורסם במקור בפורום CODE613 ב18/10/2015 10:59 (+03:00)
-
הקוד שלך עובד מעולה!!
תודה רבה!!
אבל יש לי בעיה קטנה, משום מה הוא חותך לי את הצד הימני של הדף..
הוא לא מרשה לי להעלות קבצים עם סיומת של XPS אז אני מעלה אותו דחוס..
הנה הקובץ: Recipet1.zipוזה הזאמל שכתבתי (הוא ארוך מאד אז הנה הקובץ שלו..)
PagePrintTruma.rarתודה רבה!
פורסם במקור בפורום CODE613 ב19/10/2015 00:20 (+03:00)