הדפס ישירות למדפסת באמצעות JavaScript

שאילתה אחת שמופיעה רבות בפורומי Javascript השונים שואלת כיצד לשלוח את הדף ישירות למדפסת מבלי להציג תחילה את הדפסת תיבת דו-שיח.

במקום רק לספר לך את זה זה לא יכול להיעשות אולי הסבר מדוע אפשרות כזו אינה אפשרית יהיה מועיל יותר.

איזו תיבת דו-שיח להדפסה מוצגת כאשר מישהו לוחץ על כפתור הדפסה בדפדפן שלהם או ב- Javascript windows.print () פעולות השיטה תלויות במערכת ההפעלה ובאילו מדפסות מותקנות במחשב.

כמו שרוב האנשים מפעילים Windows במחשב שלהם, בואו נתאר תחילה כיצד פועלת הגדרת ההדפסה במערכת הפעלה זו. מערכות ההפעלה * nix ו- Mac שונות מעט בפרטים, אך בסך הכל מוגדרות דומות.

הדפסת דיאלוג

ישנם שני חלקים לתיבת הדו-שיח להדפסה במערכת Windows. הראשון שבהם הוא חלק מממשק ה- API של Windows (ממשק תכנות יישומים). ה- API הוא קבוצה של חלקי קוד נפוצים המוחזקים ב- DLL השונים (ספריית קישור דינמית) קבצים שהם חלק מ- Windows מערכת הפעלה. כל תוכנית Windows יכולה (וצריכה) להתקשר לממשק ה- API כדי לבצע פונקציות נפוצות כגון הצגת תיבת הדו-שיח כדי שתעשה זאת לעבוד באותה צורה בכל התוכניות ואין אפשרויות שונות במקומות שונים כמו שאופציית ההדפסה חזרה בתוכנית DOS ימים. ממשק ה- API של הדו-שיח Print מספק ממשק משותף המאפשר לכל התוכניות גישה לאותה מערך של מנהלי התקנים למדפסת מאשר יצרני מדפסות שצריכים ליצור תוכנת מנהל התקן עבור המדפסת שלהם עבור כל תוכנית פרטנית שרוצה להשתמש בה זה.

instagram viewer

מנהלי ההתקן של המדפסת הם המחצית השנייה של דו-שיח ההדפסה. ישנן כמה שפות שונות שמדפסות שונות מבינות בהן הן משמשות כדי לשלוט על האופן שבו הדף מודפס (למשל. PCL5 ו- Postscript). מנהל המדפסת מורה ל- API של ההדפסה כיצד לתרגם את פורמט ההדפסה הפנימי הרגיל שמערכת ההפעלה מבינה בשפת הסימון המותאמת אישית שהמדפסת הספציפית מבין. זה גם מתאים את האפשרויות שמוצגות בתיבת הדו-שיח Print כדי לשקף את האפשרויות שמציעה המדפסת הספציפית.

הפעלת המדפסת

יתכן כי במחשב בודד לא מותקנים מדפסות, יתכן ומדפסת מקומית אחת עשויה להיות מותקנת בו גישה למספר מדפסות ברשת, היא עשויה אפילו להיות מוגדרת להדפסה ל- PDF או להדפסה מעוצבת מראש קובץ. כאשר מוגדר יותר מ"מדפסת "אחת, אחת מהן מוגדרת כמדפסת ברירת המחדל, כלומר היא זו שמציגה את פרטיה בדיאלוג ההדפסה כאשר היא מופיעה לראשונה.

מערכת ההפעלה עוקבת אחר מדפסת ברירת המחדל ומזהה את המדפסת לתוכניות השונות במחשב. זה מאפשר לתוכניות להעביר פרמטר נוסף לממשק ה- API של ההדפסה, באומרו להדפיס ישירות למדפסת ברירת המחדל מבלי להציג תחילה את תיבת הדו-שיח. לתוכניות רבות יש שתי אפשרויות הדפסה שונות - ערך בתפריט המציג את דו-שיח ההדפסה וכפתור הדפסה מהיר של סרגל הכלים השולח ישירות למדפסת ברירת המחדל.

כשיש לך דף אינטרנט שהמבקרים שלך הולכים להדפיס, אין לך שום מידע על אילו מדפסות יש להם. מרבית המדפסות ברחבי העולם מוגדרות להדפיס על נייר A4 אך אינך יכול להבטיח שהמדפסת מוגדרת כברירת מחדל זו. מדינה צפון אמריקאית אחת משתמשת בגודל נייר שאינו סטנדרטי שהוא קצר ורחב יותר מ- A4. מרבית המדפסות מוגדרות להדפסה במצב דיוקן (כאשר הכיוון הצר יותר הוא הרוחב, אך יתכן וחלקם מוגדרים לנוף בו הממד הארוך יותר הוא הרוחב. כמובן שלכל אחת מהמדפסות יש גם שולי ברירת מחדל שונים בחלקו העליון, התחתון והצידי של המדפסת עוד לפני שהבעלים נכנסים ומשנים את כל ההגדרות כדי להדפיס את המדפסת כמו שהם רוצה.

בהתחשב בכל הגורמים הללו, אין לך דרך לדעת אם מדפסת ברירת המחדל עם תצורת ברירת המחדל שלה תדפיס את האינטרנט שלך עמוד A3 עם שוליים זניחים או ב- A5 עם שוליים ענקיים (משאיר מעט יותר משטח בגודל בול בול באמצע עמוד). סביר להניח שאתה יכול להניח שלרובם שטח ההדפסה בעמוד של כ- 16 ס"מ על 25 ס"מ (פלוס מינוס 80%).

הדפסת צרכים

מכיוון שמדפסות שונות כל כך בין המבקרים הפוטנציאליים שלך (האם מישהו הזכיר מדפסות לייזר, מדפסות הזרקת דיו, צבע או שחור-לבן בלבד, איכות צילום, מצב טיוטה והרבה יותר) אין לך דרך לדעת מה הם יצטרכו לעשות כדי להדפיס את הדף שלך בצורה סבירה פורמט. אולי יש להם מדפסת נפרדת או מנהל התקן שני עבור אותה מדפסת המספקת הגדרות שונות לחלוטין במיוחד לדפי אינטרנט.

בשלב הבא מגיע העניין של מה שהם עשויים לרצות להדפיס. האם הם רוצים את כל הדף או שהם בחרו רק בחלק מהדף שהם רוצים להדפיס? אם האתר שלך משתמש במסגרות, האם הם רוצים להדפיס את כל המסגרות כפי שהן מופיעות בדף, האם הם רוצים להדפיס כל מסגרת בנפרד, או שהם רק רוצים להדפיס מסגרת ספציפית?

הצורך לענות על כל השאלות הללו הופך את זה חיוני כמעט לכך שדיאלוג ההדפס יופיע בכל פעם שהן רוצים להדפיס משהו כדי שיוכלו לוודא שההגדרות נכונות לפני שהן נכנסות להדפסה כפתור. מרבית הדפדפנים מספקים גם אפשרות להוסיף כפתור "הדפסה מהירה" לאחד מסרגלי הכלים של הדפדפן כדי לאפשר זאת הדף שיודפס למדפסת ברירת המחדל באמצעות הגדרות ברירת המחדל של הדפדפן לגבי מה להדפיס איך.

Javascript

הדפדפנים אינם מאפשרים ל- Javascript שפע של הגדרות דפדפן ומדפסת. Javascript עוסק בעיקר בשינוי הזרם עמוד אינטרנט וכך דפדפני האינטרנט מספקים מידע מינימלי על הדפדפן עצמו וללא מידע על מערכת ההפעלה העומדת לרשותו Javascript מכיוון ש- Javascript אינו צריך לדעת את הדברים האלה כדי לבצע את הדברים ש- Javascript נועד לעשות.

אבטחה בסיסית אומרת שאם משהו כמו Javascript אינו צריך לדעת על מערכת ההפעלה תצורת הדפדפן על מנת לתפעל את דף האינטרנט, אז זה לא אמור להיות מסופק עם זה מידע. זה לא כמו Javascript צריך להיות מסוגל לשנות את הגדרות המדפסת לערכים מתאימים עבור הדפסת הדף הנוכחי מכיוון שלא לשם כך מיועד ה- Javascript - זו העבודה של ההדפס דו שיח. לכן הדפדפנים מעמידים לרשות Javascript רק את הדברים אותם צריך Javascript לדעת, כגון גודל המסך, שטח זמין בחלון הדפדפן כדי להציג את הדף, ודברים דומים שעוזרים ל- Javascript להבין כיצד הדף מונח. דף האינטרנט הנוכחי הוא הדאגה היחידה של Javascript.

אינטראנט

אינטראנטים הם כמובן עניין אחר לגמרי. עם אינטראנט אתה יודע שכולם גישה לדף משתמש בדפדפן ספציפי (בדרך כלל גרסה אחרונה של Internet Explorer) ויש לו רזולוציית מסך ספציפית וגישה למדפסות ספציפיות. המשמעות היא שהגיוני באינטראנט להיות מסוגל להדפיס ישירות למדפסת בלי הצגת דיאלוג ההדפסה מכיוון שהאדם שכותב את דף האינטרנט יודע באיזו מדפסת תהיה מודפס על.

לתחליף Internet Explorer ל- Javascript (המכונה JScript) יש מידע מעט יותר על הדפדפן ומערכת ההפעלה ש- Javascript עצמו עושה. ייתכן שהמחשבים האישיים ברשת המריצים את האינטראנט יכולים להיות מוגדרים כך שהם מאפשרים את JScript windows.print () פקודה לכתוב ישירות למדפסת מבלי להציג את דו-שיח ההדפסה. תצורה זו תצטרך להיות מוגדרת בנפרד על כל מחשב לקוח והיא הרבה מעבר לתחום של מאמר ב- Javascript.

כשמדובר בדפי אינטרנט באינטרנט אין שום דרך שתוכלו להגדיר פקודת Javascript כדי לשלוח ישירות למדפסת ברירת המחדל. אם המבקרים שלך רוצים לעשות זאת הם יצטרכו להגדיר כפתור "הדפסה מהירה" משלהם בסרגל הכלים של הדפדפן שלהם.

instagram story viewer