עיבוד צורות בנפרד ממסמך

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

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

סוגי צורות ב Aspose.Words

כל התוכן בשכבת ציור מסמך מיוצג על ידי הצומת Shape או GroupShape במודול אובייקט המסמך Aspose.Words (DOM). תוכן כזה יכול להיות תיבות טקסט, תמונות, AutoShapes, OLE אובייקטים וכו'. שדות מסוימים מיובאים גם כצורות, למשל, שדה INCLUDEPICTURE.

תמונה פשוטה מיוצגת על ידי צומת Shape של ShapeType.Image. לצומת הצורה הזו אין צמתים ילדים, אך ניתן לגשת לנתוני התמונה הכלולים בצומת הצורה הזו באמצעות המאפיין Shape.ImageData. מצד שני, צורה יכולה להיות מורכבת גם מצמתים רבים לילדים. לדוגמה, צורת תיבת טקסט, המייצגת על ידי המאפיין ShapeType.TextBox, יכולה להיות מורכבת מנקודות רבות, כגון Paragraph ו Table. רוב הצורות יכולות לכלול את הצמתים של Paragraph ו - Table ברמת הבלוק. אלה הם אותם צמתים כמו אלה המופיעים בגוף הראשי. צורות הן תמיד חלקים של פסקה כלשהי, או כלולות ישירות בשורה או מעוגנות ל Paragraph, אבל “צף” בכל מקום בדף המסמך.

rendering-shapes-separately-from-a-document-aspose-words-cpp-1

מסמך יכול להכיל גם צורות המקובצות יחד. ניתן להפעיל קיבוץ ב Microsoft Word על ידי בחירת אובייקטים מרובים ולחיצה על “קבוצה” בתפריט לחיצה ימנית.

rendering-shapes-separately-from-a-document-aspose-words-cpp-2

ב - Aspose.Words, קבוצות צורות אלה מיוצגות על ידי הצומת GroupShape. ניתן גם להפעיל אותם באותו אופן כדי להציג את כל הקבוצה לתמונה.

rendering-shapes-separately-from-a-document-aspose-words-cpp-3

הפורמט DOCX יכול להכיל סוגים מיוחדים של תמונות, כגון דיאגרמות או תרשימים. צורות אלה מיוצגות גם דרך הצומת Shape ב Aspose.Words, המספק גם שיטה דומה להצגתן כתמונות. לפי עיצוב, צורה לא יכולה להכיל צורה אחרת כילד, אלא אם כן צורה זו היא תמונה (ShapeType.Image). לדוגמה, Microsoft Word אינו מאפשר לך להוסיף תיבת טקסט בתוך תיבת טקסט אחרת.

סוגי הצורות המתוארים לעיל מספקים שיטה מיוחדת להציג את הצורות דרך הכיתה ShapeRenderer. דוגמה של כיתה ShapeRenderer מתקבלת עבור Shape או GroupShape באמצעות שיטת GetShapeRenderer או על ידי העברת Shape למבנה של כיתה ShapeRenderer. המעמד הזה מספק גישה לחברים, המאפשרים להציג צורה ל:

  • קובץ בדיסק באמצעות עומס יתר בשיטת Save
  • זרם באמצעות עומס יתר בשיטת Save
  • ה Graphics אובייקט באמצעות ה RenderToSize ו RenderToScale שיטות

עיבוד לקובץ או להזרים

שיטת Save מספקת עומסי יתר המעבירים צורה ישירות לקובץ או לזרם. שני העומסים מקבלים דוגמא של הכיתה ImageSaveOptions, המאפשרת להגדיר אפשרויות להציג את הצורה. זה עובד באותו אופן כמו שיטת Document.Save. למרות שהפרמטר הזה נדרש, אתה יכול להעביר ערך אפס, ולציין שאין אפשרויות מותאמות אישית.

ניתן לייצא את הצורה בכל פורמט תמונה שצוין בספירה SaveFormat. לדוגמה, ניתן להציג את התמונה כדמות רסטר, כגון JPEG על ידי ציון הספירה SaveFormat.Jpeg, או כדמות וקטורית, כגון EMF על ידי ציון SaveFormat.Emf.

דוגמת הקוד שלהלן ממחישה עיבוד צורה לתמונה EMF בנפרד מהמסמך ושמירה בדיסק:

דוגמת הקוד שלהלן ממחישה עיבוד צורה לתמונה JPEG בנפרד מהמסמך ושמירה בזרם:

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

עיבוד לאובייקט גרפי .NET

עיבוד ישירות לאובייקט Graphics מאפשר לך להגדיר את ההגדרות שלך ואת המצב עבור האובייקט Graphics. תרחיש נפוץ כולל עיבוד צורה ישירות לאובייקט Graphics שנלקח מצורה Windows או מפת סיביות. כאשר הצומת Shape מוצג, ההגדרות ישפיעו על מראה הצורה. לדוגמה, ניתן לסובב או לשנות את קנה המידה של הצורה באמצעות השיטות RotateTransform או ScaleTransform עבור האובייקט Graphics.

הדוגמה הבאה מראה כיצד להציג צורה ל -.NET Graphics אובייקט בנפרד מהמסמך והחל סיבוב על התמונה שניתנה:

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

ניתן להציג את Shape לסולם מסוים באמצעות שיטת ShapeRenderer.RenderToScale שהורשה מהכיתה NodeRendererBase. זה דומה לשיטת Document.RenderToScale שמקבלת את אותם פרמטרים עיקריים. ההבדל בין שתי השיטות הללו הוא שבשיטת ShapeRenderer.RenderToScale, במקום גודל מילולי, אתה בוחר ערך צף שמגדיל את הצורה במהלך העיבוד שלה. אם ערך הציפה שווה 1.0 גורם לצורה להיות מוצגת ב-100% מגודלה המקורי. ערך צף של 0.5 יקטין את גודל התמונה בחצי.

עיבוד תמונת צורה

המחלקה Shape מייצגת אובייקטים בשכבת הציור, כגון AutoShape, תיבת טקסט, צורה חופשית, OLE אובייקט, בקרת אקטיבקס או תמונה. באמצעות הכיתה Shape, ניתן ליצור או לשנות צורות במסמך Microsoft Word. תכונה חשובה של צורה היא ShapeType. לצורות מסוגים שונים יכולות להיות יכולות שונות במסמך Word. לדוגמה, רק תמונות ו OLE צורות יכולות להכיל תמונות בתוכם בעוד שרוב הצורות יכולות להכיל טקסט בלבד.

הדוגמה הבאה מראה כיצד להציג תמונת צורה לתמונה JPEG בנפרד מהמסמך ולשמור אותה בדיסק:

אחזור גודל צורה

המחלקה ShapeRenderer מספקת גם פונקציונליות לאחזור גודל הצורה בפיקסלים באמצעות שיטת GetSizeInPixels. שיטה זו מקבלת שני פרמטרים מסוג צף (יחיד) – הסולם ו DPI, המשמשים בחישוב גודל הצורה בעת עיבוד הצורה. השיטה מחזירה את האובייקט Size, המכיל את הרוחב והגובה של הגודל המחושב. זה שימושי כאשר נדרש לדעת את גודל הצורה המוצגת מראש, למשל בעת יצירת מפת סיביות חדשה מהפלט המוצג.

הדוגמה שלהלן מראה כיצד ליצור מפת סיביות חדשה ואובייקט גרפי עם רוחב וגובה הצורה שיש להציג:

בעת שימוש בשיטות RenderToSize או RenderToScale, גודל התמונה המעובד מוחזר גם באובייקט SizeF. ניתן להקצות זאת למשתנה ולהשתמש בו במידת הצורך.

המאפיין SizeInPoints מחזיר את גודל הצורה שנמדד בנקודות (ראה ShapeRenderer. התוצאה היא אובייקט SizeF המכיל את הרוחב והגובה.