סקירה כללית
פורמטי מסמכים רבים קשורים הדוק לגופנים. לדוגמה, כאשר משתמש מוסיף טקסט למסמך DOCX, לטקסט זה תמיד יש גופן מוגדר. חלק מהפורמטים של מסמכים בדרך כלל שומרים את נתוני הגופן מוטמעים בקובץ עצמו, כמו PDF. אבל אחרים, כגון פורמטי משפחת Office, בדרך כלל מסתמכים על הגופנים המותקנים במערכת ההפעלה.
קיימים גם הרבה פורמטים של גופנים. לדוגמה, רוב הגופנים המותקנים מוצגים בפורמטים TTF (TrueType) ו-OTF (OpenType). מסמכי Office Open XML עובדים גם עם פורמט EOT (Embedded OpenType). באינטרנט, עם זאת, WOFF ו-WOFF2 הם הפורמטים הנפוצים ביותר.
תוכן עניינים
- סקירה כללית
- קבלת כל הגופנים המשומשים
- עיבוד הגופנים החסרים
- ציון גופן חסר
- החלפת הגופן החסר
- הוצאת גופנים עבור HTML
- סיכום
- ראו גם
- קבלו ניסיון חינם
קבלת כל הגופנים המשומשים
המאפיין השימושי ביותר בהקשר של גופנים הוא לרשום ולהחזיר אותם. GroupDocs.Viewer מספקת метод מיוחד GetAllFonts() — כאשר המסמך נטען למופע של מחלקת Viewer , יש לקרוא למתודה זו כדי לקבל רשימה של כל הגופנים המשומשים במסמך. ברשימה המוחזרת כל גופן יוצג כמופע של סוג המיישם את הממשק IFontInfo . ממשק זה מכיל תכונות משותפות לכל גופן אפשרי: שם משפחה, סגנון, פורמט, ותוכן בינארי.
משפחות פורמטים ספציפיות, כגון WordProcessing, Spreadsheet, Presentation, ו‑PDF, כוללות מימושים מיוחדים של IFontInfo ; מימושים אלו מספקים נתונים נוספים הרלוונטיים למשפחת הפורמט המסוים. לדוגמה, הסוגים WordProcessingFontInfo, PresentationFontInfo, ו‑PdfFontInfo מכילים את המאפיין הבוליאני IsEmbedded — דגל המציין היכן מאוחסן הגופן (האם הוא מוטמע בגוף המסמך שנטען או מותקן במערכת ההפעלה). הסוג SpreadsheetFontInfo מכיל נתוני גופן רבים ספציפיים ל‑Spreadsheet: הצבע שלו, האם הוא תחת קו תחתון או מובלט. WordProcessingFontInfo עשוי להכיל שם משפחה חלופי. וכדומה.
דוגמה קצרה מוצגת להלן:
using GroupDocs.Viewer;
// ...
const string filename = "sample.docx";
string inputPath = "\full\path\" + filename;
using (Viewer viewer = new Viewer(inputPath))
{
Fonts.IFontInfo[] allFonts = viewer.GetAllFonts();
Console.WriteLine("{0} fonts found in the '{1}' document", allFonts.Length, filename);
foreach (Fonts.IFontInfo font in allFonts)
{
Console.WriteLine("Font '{0}' of '{1}' style has {2} bytes and is of '{3}' format",
font.FamilyName,
font.Style,
font.Content.Length,
font.Format);
}
}
שימו לב שהוצאת גופנים נתמכת רק עבור משפחות הפורמטים WordProcessing, Spreadsheet, Presentation, ו‑PDF; עבור כל פורמט מסמך אחר המתודה GetAllFonts() תחזיר מערך ריק.
עיבוד הגופנים החסרים
המצב שבו מסמך נוצר במחשב של המחבר ומשתמש בגופן מסוים “AAA”, ולאחר מכן מעובד באמצעות GroupDocs.Viewer במחשב של הלקוח שבו הגופן “AAA” חסר, הוא נפוץ. במצב זה GroupDocs.Viewer מנסה לחלק גופן זה באמצעות כללי החלפת גופנים מורכבים: הוא מנתח את המטה‑נתונים של המסמך, שמות חלופיים של הגופן החסר, הגדרות המסמך, הגדרות מערכת ההפעלה, רשימת כל הגופנים הזמינים המותקנים במערכת וכד’. לבסוף, כאשר מסיבה כלשהי מערכת ההפעלה „נקייה“, כלומר אין בה גופנים מותקנים כלל, GroupDocs.Viewer יחליף את הגופן החסר בגופן שמוטמע בתוך האסמבלי של GroupDocs.Viewer (DLL); גופן זה ישמש כ„פתרון אחרון“ במקרים שבהם אין גופנים אחרים זמינים. לדוגמה, עבור פורמטי משפחת WordProcessing, GroupDocs.Viewer מאחסן פנימית את הגופן החינמי „Fanwood“.
בשלב זה GroupDocs.Viewer מבצע החלפת גופנים באופן שקט בזמן הרינדור של המסמך (כאשר נקראת המתודה Viewer.View() ) — אין הודעות או אירועים כאשר מנגנון החלפת הגופנים מופעל, איזה גופן חסר ולאיזה הוא מוחלף, ובאילו מסמכים בדיוק. תכונה כזו קשה ליישום מכיוון שלא ברור מהי הצורה המתאימה של הודעה, באיזו צורה היא תישלח וכיצד עליה להיות מנוצלת בצד הלקוח.
למרות זאת, GroupDocs.Viewer מציעה למשתמשים שני דרכים אפשריות לפתור מצב זה: לציין את הגופן החסר ידנית ולהחליף את הגופן החסר ידנית.
ציון גופן חסר
כאשר המשתמש יודע במקור שהמסמך משתמש בגופן „AAA“, ו יודע שגם הגופן „AAA“ אינו מותקן במכונה שבה המסמך יצוג, ו למשתמש יש את תוכן הבינארי של הגופן „AAA“, הוא יכול לציין אותו לפני קריאה למתודה Viewer.View() .
על מנת לציין גופן(ים) מותאמים אישית, שלא מותקנים במערכת היעד, על המשתמש להוסיף מקורות גופנים מותאמים. מקור גופן הוא בעצם תיקייה שבה נמצא גופן או כמה גופנים. הוא מיוצג על‑ידי מחלקת FolderFontSource . למחלקת FontSettings יש מתודה SetFontSources() להוספת מקורות גופנים ל‑GroupDocs.Viewer.
הקוד שלהלן מדגים זאת. נניח שהמסמך “sample.docx” משתמש בגופן נדיר “AAA.ttf”, שאינו מותקן במערכת היעד. המשתמש שם את הקובץ “AAA.ttf” בתיקייה "C:\custom_fonts" ואז יוצר מופע של מחלקת FolderFontSource שמצביע אל תיקייה זו. מופע זה מועבר למחלקת FontSettings הסטטית, ולאחר מכן הקובץ “sample.docx” מוצג בפורמט HTML. כתוצאה מכך, גופן „AAA“ ייעשה שימוש במסמך HTML המוצא.
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
using GroupDocs.Viewer.Fonts;
// ...
// ציין את מקור הגופן.
FolderFontSource fontSource =
new FolderFontSource(@"C:\custom_fonts", SearchOption.TopFolderOnly);
FontSettings.SetFontSources(fontSource);
using (Viewer viewer = new Viewer("sample.docx"))
{
// צור קובץ HTML.
HtmlViewOptions viewOptions = HtmlViewOptions.ForEmbeddedResources();
viewer.View(viewOptions);
}
החלפת הגופן החסר
כאשר המשתמש יודע במקור שהמסמך משתמש בגופן „AAA“, ו יודע שגם הגופן „AAA“ אינו מותקן במכונה שבה המסמך יצוג, אך למשתמש אין גישה לתוכן הבינארי של הגופן „AAA“, הוא יכול לציין גופן אחר „BBB“, שייושׂם במקום הגופן החסר „AAA“. בניגוד למקרה הקודם, יש לעשות זאת באמצעות אפשרויות הצפייה, שנשלחות לאחר מכן למתודה Viewer.View() .
אפשרות זו נקראת [DefaultFontName] (קישור: DefaultFontName), היא תכונה מסוג מחרוזת, המוצהרת במחלקה האבסטרקטית BaseViewOptions, ולכן היא משותפת לכל אפשרויות הרינדור: HtmlViewerOptions, PdfViewOptions, PngViewOptions, ו‑JpgViewOptions .
כאשר אפשרות זו מוגדרת, GroupDocs.Viewer משתמשת בגופן זה במהלך הרינדור במקום כל גופן שאינו זמין. לדוגמה, אם המסמך כולל גופן עם תווים שאינם באנגלית, יש לציין שם גופן ברירת מחדל כדי להבטיח שה‑Viewer יחליף כל גופן חסר בגופן שמכיל את אותה קבוצת תווים. כמובן, הגופן שמוגדר במאפיין DefaultFontName חייב להיות מותקן במערכת ההפעלה שבה מתבצע הרינדור.
הקוד שלהלן מציג כיצד להגדיר שם גופן ברירת מחדל:
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
using (Viewer viewer = new Viewer("sample.pptx"))
{
// צור אפשרויות להצגת מסמך HTML עם משאבים מוטמעים
HtmlViewOptions viewOptions = HtmlViewOptions.ForEmbeddedResources();
// ציין שם גופן ברירת מחדל באפשרויות
viewOptions.DefaultFontName = "Courier New";
// רנדור קובץ PPTX לקובץ HTML
viewer.View(viewOptions);
}
הוצאת גופנים עבור HTML
בעת רינדור מסמכים לפורמט HTML, GroupDocs.Viewer בברירת המחדל מייצא את כל הגופנים המשומשים למסמך HTML. פעולה זו מבטיחה הצגה נכונה ללא תלות בקיומם של הגופנים הדרושים במכשיר הצופה. גופנים יכולים להיות מאוחסנים במסמך HTML כתוצאות חיצוניות (HtmlViewOptions.ForExternalResources) או מוטמעים ישירות לתוך ה‑HTML‑markup באמצעות סכמת URI של נתונים דרך קידוד base64 (HtmlViewOptions.ForEmbeddedResources). ייצוא גופנים לפורמט HTML נתמך כמעט בכל פורמט מסמך שתומך בגופנים בעצמו: Microsoft Office (למעט Excel), פורמטים של OpenDocument, הודעות דוא״ל, PDF, eBooks וכדומה.
עם זאת, לפעמים תכונה זו אינה רצויה. למעשה, כאשר גופנים נכללים, הם מגדילים משמעותית את גודל מסמך ה‑HTML המיוצר. לכן, כאשר למחשב או למכשיר היעד שבו יוצג מסמך ה‑HTML כבר מותקנים כל הגופנים המשומשים, ניתן לאפשר לדפדפן להשתמש בגופנים המותקנים במערכת.
כדי לענות על דרישה זו, ל‑GroupDocs.Viewer יש יכולת להוציא גופנים מתוך מסמך ה‑HTML המיוצר, וניתן לבצע זאת בשתי דרכים: להוציא את כל הגופנים ולהוציא רק גופנים ספציפיים.
שתי האפשרויות מיוצגות במחלקת HtmlViewOptions כהגדרות נפרדות:
ExcludeFontsהוא דגל המשבית ייצוא של כל הגופנים המשומשים למסמך HTML המיוצר, כאשר הוא מופעל (true). בברירת המחדל אפשרות זו מושבתת (false).FontsToExcludeהוא רשימת מחרוזות, שכל אחת מייצגת שם גופן שצריך להוציא מה‑HTML. בברירת המחדל רשימה זו ריקה — לא מוצאים גופנים. שימו לב שאפשרות זו פועלת רק אם המאפייןExcludeFontsמושבת (false).
שני קטעי קוד שלהלן מדגימים את שתי האפשרויות: הראשון מציג שימוש ב‑ExcludeFonts, והשני — ב‑FontsToExclude.
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
using (Viewer viewer = new Viewer("sample.docx"))
{
// צור קובץ HTML.
var viewOptions = HtmlViewOptions.ForEmbeddedResources();
viewOptions.ExcludeFonts = true;
viewer.View(viewOptions);
}
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
// ...
using (Viewer viewer = new Viewer("presentation.pptx"))
{
// צור קובץ HTML.
var viewOptions = HtmlViewOptions.ForEmbeddedResources();
viewOptions.FontsToExclude.Add("Times New Roman"); // הוצא את גופן Times New Roman.
viewOptions.FontsToExclude.Add("Arial"); // הוצא את גופן Arial.
viewer.View(viewOptions);
}
סיכום
GroupDocs.Viewer מתמקדת בעיקר ברינדור מסמכים מתבניות שונות לפורמטים “צפייה” נפוצים — HTML, PDF, JPEG, ו‑PNG. אך בתקופה האחרונה הוספנו כמה תכונות שימושיות הקשורות לעיבוד גופנים המאפשרות לבדוק ולנתח גופנים משומשים, לכוונן את יצואם ולהתאים את החלפת הגופנים.
ראראו גם
- קבלת כל הגופנים המשומשים במסמך הטעון
- הגדרת גופנים מותאמים אישית
- החלפת גופן חסר
- הוצאת גופנים בעת רינדור ל‑HTML
קבלו ניסיון חינם
ניתן להוריד גרסת ניסיון חינמית של GroupDocs.Viewer לשפת .NET מ‑releases.groupdocs.com. ניתן גם לקבל רישיון זמני על‑מנת לנסות את כל התכונות והפונקציות ללא מגבלות מ‑כאן.