נעים להכיר - XPS
עם Windows Vista ו .NET Framework 3.0, מיקרוסופט הציגה גם את הXPS, שזכה לפרסום מועט מאד אבל בכל זאת שווה להכיר אותו.
מאחורי ראשי התיבות הללו עומדות המילים XML Paper Specification, שבסה"כ זה שם יפה מאד כדי לתאר פורמט להעברת מסמכים גרפיים. XPS מ(/י)שמש להעברת מסמכים בפורמט קריא-על-ידי-כולם, סטייל PDF של Adobe, רק שבניגוד לקודם, אמור להיות יותר קל לשלב אותו באפליקציות שונות (פורמט פתוח לכל) ובדומה לקודם - גם הוא Cross Platform. בין לבין, הוא אמור להחליף את הפורמטים הקיימים בתור הפורמט שבו מדפסות מקבלות מידע להדפסה ומדפיסות אותו.
קריאת/כתיבת XPS
אם אתם משתמשי Vista, אזי XPS וכל מה שמסביב כבר מוטמע במחשב שלכם. הקריאה תתבצע באמצעות Internet Explorer בגרסא 7, ואת היצירה יכולות לבצע כל התוכנות אם הן יתקשרו עם Microsoft XPS Document Writer - מעין רכיב שמאפשר לאפליקציות שמתקשרות עמו ליצור קבצי XPS בקלות.
אם אתם משתמשי XP, תורידו פשוט את דוט.נט פרימוורק 3 ויש לכם XPS שיוצג לכם באינטרנט אקספלורר. בשביל ליצור XPS, תצטרכו SP2 ומעלה ולהתקין את החבילה הזאת.
משתמשי Word 2007, יכולים להוריד תוסף שיאפשר להם ייצוא קבצי WORD לXPS או לPDF.
למה זה טוב?
קובץ XPS, מציג למעשה דור חדש של קבצים להפצה. כלומר, קובץ XPS הוא דומה בהרבה מובנים בPDF ועוקף אותו במספר תחומים, ובהם העובדה שהוא פתוח לכל, שהוא משלב את המנוע הגרפי של WPF ושמאד נוח לנו, כמפתחים לעבוד איתו.
קבצי ה Word החדשים, הם גם כן פתוחים לכל, אולם, הם דורשים Word או Word Viewer על המחשב. היתרון של XPS שהם לא דורשים אף אחד מהם. לכן, בשביל הדוגמא, אם אתם רוצים ליצור דו"ח, שיהיה זמין על כל מערכת הפעלה בלי תלות בתוכנות כאלה ואחרות, צרו קובץ XPS.
Cross Platform - באמת?
כן, באמת. מיקרוסופט חשפה לחלוטין את הפורמט והספסיפיקציה של XPS, ולכן הוא Cross Platform. נכון, מיקרוסופט לא הציגה client שיאפשר להציג XPS על מערכות שאינן Windows, אבל אנחנו סומכים על קהילת הקוד הפתוח שתעשה משהו בנידון. כל המידע זמין.
לעומק הXPS
אם הגעתם עד פה, אתם בוודאי תוהים איך נראה ומתנהג קובץ XPS. בפשטות, מדובר בפורמט שהוא חלק מWPF ומשתמש בXML על מנת לתאר את מבנה הטקסט.
התמונה בצד, מראה איך נראה קובץ XPS כשהוא מוצג באינטרנט אקספלורר, בדיוק כפי שנראה הטקסט שנכתב.
מסמך XPS נשמר מאחורי הקלעים כסוג של שפה מבוססת XML ומוצג בדיוק כפי שהיה נראה אם היה מודפס על נייר. כשאנחנו רואים קובץ XPS, כדאי שנדע שזה עוד אחד מהמנהגים שבויסטה, להציג קובץ כקובץ יחיד (למשל כמו בגאדג'טים), עם סיומת ווכנה שמסוגלת לקרוא אותו בצורה הזאת, כשלמעשה, מאחורי הקלעים, אותו קובץ הוא קובץ מכווץ בצורת ZIP. אם נשנה את הסיומת, כמו שעשיתי לקובץ הXPS שהצגתי בתמונה, נקבל אוסף של תיקיות שמרכיבות למעשה את אותו XPS.
אגב, אותו טריק של שינוי סיומת, יחשוף בפניכם גם את מאחורי הקלעים של docx.
בתמונה מצד שמאל , אתם יכולים לראות את מבנה התיקיות של קובץ XPS. מדובר במבנה התיקיות שמסתתרות, למעשה, מאחורי השם "קובץ XPS".
התיקייה _rels, מכילה מידע הקשור באופן כללי לתצוגת השם של הקובץ. יש שם קובץ XML שמכיל הפניות לסכמות XML.
התיקיה docProps, מכילה קובץ XML שמכיל מידע לגבי העריכות השונות של מסמך הXPS, שם היוצר וצלמית של המסמך.
התיקייה Documents מכילה תת תיקייה לכל מסמך. למעשה, קובץ XPS אחד יכול להכיל מספר מסמכים שונים. בתיקייה rels יהיה מידע שיציין איפה נמצא הקובץ של העמוד. קובץ fixedDoc.fdoc יכיל את העמודים והפנייה לקבצי ה fdoc שמכילים את המידע עליהם. בתיקייה Pages יהיה קובץ fdoc שמכיל תיאור XML-י של העמוד, עם כל המידע בו, הרבה פירוט לגבי צורת התצוגה (התמונה בצד שמאל)
. שימו לב, שלכל קטע טקסט יש תגית Glyphs שמגדירה בדיוק את הסגנון שלו. בנוסף, תהיה תיקיית Fragments עם קבצי frag שיציינו ת סוגי הסגנון שקיימים.
כל פרט, שולי יותר או פחות מצויין במסמך הזה שמכיל תיאור מדוקדק של העמוד - כשהמטרה היא לאפשר תצוגה זהה לתצוגה שהייתה מתקבלת אם היה מודפס העמוד הנ"ל על נייר.
בנוסף, יש לכל מסמך תיקיית structure שמכילה את מבנה המסמך - שמו, מספר העמודים ועוד מידע נוסף אם קיים.
בתיקייה בשם Resources יהיו קבצי עזר של פונטים ומדיות אחרות.
כפי שאפשר להבין עד עכשיו, קובץ XPS הוא מסווה לארכיון ZIP שמכיל מספר מרובה של קבצים ומידע.
החלק הבא - בניית קובץ XPS מתוך הקוד
XPS וWPF הם דומים. XPS משתמש למעשה בחלק מהיכולות של המנוע הגרפי של WPF להצגתו. במדריך הבא, נלמד איך לבנות בקלות קובץ XPS מתוך קוד, איך לשלוט על כל מאפייני העיצוב של הטקסט מתוך קוד, וליצור קובץ XPS בשלמותו.
נ.ב. המלצה לי אליכם. צרו קבצי XPS מורכבים, עם טבלאות, עשרות עמודים וכו', ותראו איך הם נראים. במיוחד איך נראים קבצי ה fdoc שמתארים את העמודים. אלה יהיו התוצר של הקוד שנכתוב בהמשך.