להדפיס בלי חלון ההדפסה: לומדים איך Chrome עושה את זה
הרעיון הראשון היה למסור את ההדפסה למערכת ההפעלה ולתת לאנשים להסתדר עם האפשרויות. זו הייתה טעות. כך צמצמנו את הבחירות לשלוש, וכך עזרה לנו קריאת הקוד של Chromium.
5 דקות קריאה

בגרסה מוקדמת של ההדפסה שלנו ב־Windows היה באג שיכולנו לשחזר: אחרי לחיצה על ביטול או אישור, חלון ההדפסה נפתח שוב ונערם מעל התוכנה.
הדפסה נשמעת כמו החלק הכי פשוט בתוכנת מבחנים: לוחצים, ויוצא נייר. אצלנו זה לקח שלושה שלבים וסיבוב אחד בקוד המקור של דפדפן נפוץ.
בקצרה
- בגרסה מוקדמת של ההדפסה ב־Windows היה באג שיכולנו לשחזר: אחרי ביטול או אישור, חלון ההדפסה נפתח שוב ונערם מעל התוכנה.
- חלון הדפסה כללי מציע בחירות שאצלנו אינן החלטה אמיתית. בנינו חלון משלנו עם שלוש בחירות: איזו מדפסת, צבע או שחור־לבן, ואיכות.
- קראנו את קוד ההדפסה של Chromium כדי ללמוד את סדר הצעדים, לא כדי להעתיק אותו.
- מסמך ההחלטה שלנו מסומן “Proposed” (עדיין לא “Accepted”), ושמות האפשרויות ב־Mac וב־Linux עדיין צריכים בדיקה מול מדפסות אמיתיות. לא מצאנו הערה שסוגרת את הנקודה הזו.
שלב ראשון: שהמערכת תטפל בזה
הרעיון הראשון היה המובן מאליו. מפיקים את ה־PDF, מוסרים אותו למערכת ההפעלה, ונותנים לחלון ההדפסה של המערכת להופיע. אנשים מכירים אותו. יש בו כל אפשרות שמדפסת יכולה לרצות, ולא היינו צריכים לבנות כלום.
בגרסת Wails (נפתח בלשונית חדשה) זה אומר דברים שונים בכל מערכת. ב־Windows, גרסה מוקדמת ביקשה מפקודת PowerShell (כלי מובנה ב־Windows שמריץ הוראות מוקלדות) להדפיס את הקובץ בעזרת “כל תוכנת PDF שרשומה” במחשב. ב־Mac פתחנו את הקובץ בתוכנת הצפייה של ברירת המחדל והשארנו את ההדפסה למורה. ב־Linux עשינו אותו דבר, עם פקודה אחרת.
הסתכלו על מה שעשינו באמת: השארנו למשתמש לשבור את הראש. כל אחת מהדרכים האלה הציבה מול המורה מסך אחר עם אפשרויות אחרות, ואף אחד מהם לא היה בשליטתנו.
מה השתבש
מסמך ההחלטה שלנו (פתק קצר שכתבנו כשבחרנו בין אפשרויות) מ־14 ביולי 2026 מונה את הבעיות:
- ב־Windows היה באג שיכולנו לשחזר: אחרי לחיצה על ביטול או אישור, החלון נפתח שוב ונערם מעל התוכנה. הסיבה הייתה קטנה. לחלון לא היה חלון בעלים, ולכן הוא לא ידע למי הוא שייך.
- ב־Mac וב־Linux לא הייתה לנו שליטה בכלל. הקובץ הלך לתוכנת צפייה, ומה שקרה אחר כך היה עניין של התוכנה ההיא.
- האפשרויות היו הרבה מדי. חלון הדפסה כללי נותן לבחור עמודים, מספר עותקים, פריסה, גודל נייר, שוליים וקנה מידה. אצלנו אף אחת מהן אינה החלטה אמיתית. המבחן הוא כבר מסמך קבוע: העמודים, גודל הנייר והפריסה נקבעים בקוד ה־PDF שלנו, ועותקים מרובים מוכנים כבר קודם, בשלב הפקת המבחן.
אותו לקח שלמדנו בעבודה על הסורק חל גם כאן: אם התוכנה כבר יודעת את התשובה, לא שואלים את המשתמש את השאלה.
שלב שני: רק שלוש בחירות
החלטנו על חלון הדפסה משלנו עם שלוש בחירות:
- איזו מדפסת
- צבע או שחור־לבן
- איכות, רגילה או גבוהה
שום דבר אחר. בלי טווח עמודים, בלי קנה מידה, בלי שוליים. החלטנו גם שהתוכנה תזכור את המדפסת האחרונה שבה השתמשו.
כדי שזה יתאפשר, היינו צריכים לבצע את ההדפסה בעצמנו: כשמוותרים על חלון המערכת, אנחנו אלה ששולחים את העבודה למדפסת.

שלב שלישי: איך תוכנות אמיתיות עושות את זה?
כאן עשינו משהו שהיה צריך לעשות מוקדם יותר: שאלנו איך תוכנה בוגרת עושה את זה. Chromium (נפתח בלשונית חדשה), פרויקט הקוד הפתוח שמאחורי Chrome, מדפיס ב־Windows, ב־Mac וב־Linux. יש לו דרך להדפיס ישירות עם הגדרות שנבחרו בחלון שלו, והקוד שלו פומבי.
ב־14 ביולי 2026 קראנו את קוד ההדפסה שלו: את החלק שבונה הגדרות מדפסת ב־Windows ואת החלק שמדבר עם מערכת ההדפסה ב־Linux וב־Mac. ההערות מאותו מפגש קריאה נשמרו אצלנו בפרויקט, והן מתעדות גם איך קראנו: דרך מציג הקוד המקוון של Chromium, בלי עותק מקומי, כי הקוד המלא גדול מאוד.
מה שלקחנו משם היה שיטה ולא קוד. הקוד של Chromium קשור היטב לשאר הקוד של Chromium ואי אפשר לשלוף אותו החוצה, ומסמך ההחלטה שלנו אומר ששקלנו להעתיק אותו ופסלנו. מה שלמדנו הוא הסדר הנכון של הצעדים ב־Windows: לגרום לדרייבר של המדפסת למלא את ברירות המחדל שלו, להניח מעליהן את הבחירות של המשתמש, ולתת לדרייבר לבדוק את התוצאה. כך אנחנו אף פעם לא מאמתים יכולות מדפסת ביד.
מה זה דרייבר?
דרייבר (Driver) הוא תוכנה קטנה שמלמדת את המחשב איך לדבר עם התקן מסוים, כמו מדפסת או סורק. הוא מתווך בין המחשב למכשיר, ובדרך כלל לכל דגם יש דרייבר משלו.
ב־Mac וב־Linux, Chromium מדבר עם מערכת ההדפסה ישירות. אנחנו בחרנו בדרך הפשוטה יותר: קוראים לפקודת ההדפסה הרגילה עם האפשרויות, וכך נחסכת משיכה של ספריות נוספות. במסמך ההחלטה רשמנו ששמות האפשרויות המדויקים עדיין צריכים להיבדק מול מדפסות אמיתיות.
מה השתנה בקוד
שמירות בהיסטוריית הפרויקט (commit) מאותם ימים, כולן מיולי 2026, מראות את הדרך:
- הדפסה ב־Windows דרך כלי מובנה שמצייר קובצי PDF ושולח כל עמוד למדפסת, בלי תוכנת PDF חיצונית (14 ביולי).
- החלון המובנה של Windows הוסר, וההגדרות של המדפסת נבנות ישירות.
- ב־Mac וב־Linux עברנו לקרוא לפקודת ההדפסה ישירות, עם האפשרויות שנבחרו.
- כל קוד ההדפסה הוצא למודול קטן משלו (14 ביולי), עם הערה איך מדפיסים PDF אמיתי ב־Windows. ההערה קובעת שהדרך הזו אומתה מקצה לקצה מול מדפסת פיזית אמיתית.
עוד פרט קטן: ב־20 באוגוסט 2026 רשימת המדפסות הבהבה לרגע בחלון קונסולה שחור ב־Windows, ותיקנו את זה.
מה זו היסטוריית פרויקט?
מאגר (Repository) הוא התיקייה שבה שמורים כל קובצי הפרויקט יחד עם תיעוד של כל שינוי. בכל פעם ששומרים קבוצת שינויים עם הערה קצרה, זה נקרא קומיט (Commit), ולכן ההיסטוריה נקראת כמו יומן עם תאריכים. אנחנו משתמשים בה כדי לראות מה עשינו ומתי.
הערה כנה
מסמך ההחלטה מסומן “Proposed” ולא “Accepted”, אף שהקוד ביצע אותה תוך ימים. הוא גם אומר ששמות האפשרויות ב־Mac וב־Linux עדיין צריכים להיבדק מול מדפסות אמיתיות. לא מצאנו הערה שסוגרת את הנקודה הזו, ולכן אנחנו לא יכולים לומר שזה נעשה.
מה למדנו
ראשית, הסרת אפשרויות היא החלטת עיצוב ולא תכונה חסרה. שנית, קוראים קוד של פרויקט קוד פתוח בוגר לא כדי להעתיק אותו, אלא כדי ללמוד את סדר הצעדים ואת המלכודות. ושלישית, היה עלינו להסתכל בו מוקדם יותר.
שום דבר בסיפור הזה לא מתאים לחיפוש.
עוד סיפורי מקרה לקריאה
למצוא את הסורק, ולקחת על עצמנו את ההגדרות שלומורים יכולים ללחוץ על כפתור אחד ולקבל סריקה. מאחורי הכפתור יש חיפוש של הסורק, רשימת הגדרות שאף אחד לא צריך לגעת בהן, והפתעה מחומת האש של Windows.
בונים תוכנת Windows מתוך Mac: מחשב שאול, מכונה וירטואלית ותמונה של שגיאהבתי הספר עובדים עם Windows. אנחנו עובדים על Mac ועל Ubuntu. כך למדנו לבנות ולבדוק את ציון ברגע ל־Windows, והתמונה שלימדה אותנו הכי הרבה.