הפקת דוחו"ת מWPF מה מומלץ?
-
אני צריך לייצא (להדפיס/pdf) דוחו"ת של נתונים בעיקר טבלאיים מהתוכנה, מהי הדרך הנכונה לעשות את זה?
האם עיצוב של חלון בxaml והדפסה שלו כדו"ח זה טוב או רע?
אני חשבתי על עיצוב הדוחו"ת ב Page.xaml וליצור Window שאליו אני אטען בכל פעם את הPage הרלוונטי, ועל הWindow אני אעשה את הקוד לשמירה והדפסה וכדו'
.
נ.ב. בדרך הזו אני לכאורה מרוויח שאני יכול ליצור דוחו"ת להדפסה החוצה, אבל שכל עוד הם בתוכנה הם דינאמיים ואינטראקטיביים, מגיבים ללחיצות וכו', כי חלק מהדוחו"ת אמורים להיות מוזנים אח"כ חזרה לתוכנה עם תיקונים ותוספות, ואני חשבתי ליצור לכל דו"ח מזהה ייחודי שיהיה מורכב מסדרת מספרים בפורמט מסויים, שהתוכנה תזהה באיזה סוג דו"ח מדובר ומהם הפרמטרים ששימשו להפקתו, ותוכל להציג אותו מחדש לעדכון מהיר ונח, אף שלא נשמר עותק אמיתי בתוכנה.
-
אין לWPF דרך נכונה לדוחות.
יש מחוללי דוחות מסורתיים ישנים, שאני עד היום לא נזקקתי להם...
WPF הכי תומכת טוב בXPS, אבל זה פורמט שלא הצליח וכנראה נזנח, יש לו בעיות ביוצעים והוא לא נפתח בכל מחשב בכלל.
אני אישית מוציא דוח מסויים מרובה עמודים על ידי ייצור של קובץ docx...
אם אתה רוצה דוחות אינטראקטיביים אז הPage שהצעת אכן מצויין, אבל איך תוציא אותו אח"כ בצורה מרובת עמודים? יש את הכותרות עליונה תחתונה וכל זה שזה לא קל כל כך (אבל לא תמיד זה נדרש). -
הדרך שאמרת נחמדה אבל יש לה הרבה מגבלות
אם תעשה printVisual זה יהיה ברזולציה גבוהה אבל לא כל הפקדים תומחים בזה כלומר לפעמים לא יהיה לך בתוך ההדפסה את כל הפקדים וגם ההדדפסה יוצאת לפעמים בצורה לא ישרה
ואם תעשה הדפסה של צילום מסך הרזולציה תיהיה מאוד נמוכה וגם לרוב לא תצליח להכניס את כל הדף
בקיצור כאב ראש
דרך אחת זה כמו שאמרו קודם לערוך קבצי Word לשמור כpdf
אני משתמש בfastreport(.frx) לדעתי זה הכי קל והכי טוב -
@יהודי-טוב כתב בהפקת דוחו"ת מWPF מה מומלץ?:
למה לא עם rdlc?
אתה מכיר לינק טוב להסבר על תחילת העבודה עם RDLC? (עדיף בעברית, לא חובה)
-
@אביי
אני לאחרונה לומד עם copilot.את זה גם הוא לימד אותי (יש לי עוד מה להתקדם, אבל לצורך הנקודתי שלי זה הספיק),
אני כותב לו משהו בסגנון.היי,
קיבלתי משימה ליצור פרויקט WPF ולהציג שם דוח עם RDLC.תוכל להסביר לי איך אני עושה את זה
אחרי שתעשה משהו בסיסי, תראה שזה מאוד פשוט להתקדם עם זה.
זה מאוד מזכיר את אקסס (גרירה ושחרור של אלמנטים, טבלאות שמתבססות על נתונים, אפשרות להגדיר קבוצות בטבלה, כותרות שחוזרות על עצמם בכל עמוד וכו')
-
@Mordechai-0 כתב בהפקת דוחו"ת מWPF מה מומלץ?:
אני משתמש בfastreport(.frx) לדעתי זה הכי קל והכי טוב
יש לך לינק להסבר על איך מתחילים לעבוד עם זה בתוך התוכנה?
-
@אביי
אני הייתי הולך על כיוון של html יש גם ספריות שממרים html ל-pdf בקלות או שפשוט תתן למשתמש להדפיס את ה-html לבד. על ידי יצירת לחצן פשוט שמתממשק עם הפקד של webveiw.
ככה גם יש לך שליטה מלאה על מה שקורה יש ספריות מאוד טובות להתנהלות עם html.או שתעבוד בשילוב של json גם לזה יש ספריות מתקדמות.
אם אתה הולך על xaml אז תלך על flowdocument
https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.flowdocumentreader.print?view=windowsdesktop-8.0 -
@pcinfogmach גם אני הייתי הולך על HTML (הUI הכי נתמך, הכי בשימוש והכי בפיתוח - עם ההגבלות של תאימות לאחור וההקשר של השימוש בו בדפי האינטרנט - דה פקטו) בצרכים שלי, אבל לזכרוני גם HTML וגם FlowDocument לא נתונים מספיק תמיכה בהדפסה - כותרות עליונות מספרי עמודים וכולי. ממה שאני זוכר HTML היה כמעט מושלם, עם כמה CSS בודדים שהם בתכנית ועוד לא נתמכים. כיון שהרבה זמן לא ניסיתי זה אכן כיוון לבדיקה, מהHTML גם אפשר ליצור PDF עם כלים קיימים.
-
@אביי
הייתי מתחיל עם תכנית פשוטה איך להציג את ה-html
אח"כ לפי זה נראה איך להתקדם - ייתכן מאוד שאתה לא ריך שום ספריה רק מבנה נתונים נכון ואולי קצת js
להכניס לwebbrowser יש לך פקודה שנקראת navigatetostring -
יש פקד WebView2 שזה בדיוק כרום.
יש ספריות מטורפות לעבודה עם HTML, זה תלוי בסגנון שלך: יש כאלה שעובדים בצורה של Tempkate Engine שזה קוד HTML נטו אבל עם קוד בפנים בRazor (דוגמה https://antaris.github.io/RazorEngine/) או מנוע תצוגה אחר, שגורם לדברים לשכפל/להתאים את עצמם לפי הdata שאתה מעביר.
יש ספריות רבות שפושט בונות טקסט מתוך הקוד, למשל
https://github.com/hyperlinq/hyperlinq (עם זה linqpad עובדת)
https://html-agility-pack.net/
https://github.com/AngleSharp/AngleSharp -
@dovid כתב בהפקת דוחו"ת מWPF מה מומלץ?:
יש פקד WebView2 שזה בדיוק כרום.
@אביי
שים לב שיש שם מגבלה מעצבנת שם של 2mb ל- string מסתמא לא משנה כי הדוחות שלך לא יהיו כל כך גדולים?