DocumentBuilder

DocumentBuilder class

يوفر طرقًا لإدراج النصوص والصور والمحتويات الأخرى، وتحديد تنسيق الخط والفقرة والأقسام.

لمعرفة المزيد، قم بزيارةنظرة عامة على منشئ المستندات مقالة توثيقية.

public class DocumentBuilder

المنشئون

اسموصف
DocumentBuilder()تهيئة مثيل جديد لهذه الفئة.
DocumentBuilder(Document)تهيئة مثيل جديد لهذه الفئة.

الخصائص

اسموصف
Bold { get; set; }صحيح إذا كان الخط منسقًا بالخط الغامق.
CellFormat { get; }إرجاع كائن يمثل خصائص تنسيق خلايا الجدول الحالي.
CurrentNode { get; }يحصل على العقدة المحددة حاليًا في DocumentBuilder.
CurrentParagraph { get; }يحصل على الفقرة المحددة حاليًا في هذاDocumentBuilder .
CurrentSection { get; }يحصل على القسم المحدد حاليًا في هذاDocumentBuilder .
CurrentStory { get; }يحصل على القصة المحددة حاليًا في هذاDocumentBuilder .
CurrentStructuredDocumentTag { get; }يحصل على علامة المستند المنظمة المحددة حاليًا في هذاDocumentBuilder .
Document { get; set; }الحصول على أو تعيينDocumentالكائن الذي يرتبط به هذا الكائن.
Font { get; }إرجاع كائن يمثل خصائص تنسيق الخط الحالية.
IsAtEndOfParagraph { get; }إرجاعحقيقي إذا كان المؤشر في نهاية الفقرة الحالية.
IsAtEndOfStructuredDocumentTag { get; }إرجاعحقيقي إذا كان المؤشر في نهاية علامة مستند منظم.
IsAtStartOfParagraph { get; }إرجاعحقيقي إذا كان المؤشر في بداية الفقرة الحالية (لا يوجد نص قبل المؤشر).
Italic { get; set; }صحيح إذا كان الخط منسقًا بالخط المائل.
ListFormat { get; }إرجاع كائن يمثل خصائص تنسيق القائمة الحالية.
PageSetup { get; }إرجاع كائن يمثل إعداد الصفحة الحالية وخصائص القسم.
ParagraphFormat { get; }إرجاع كائن يمثل خصائص تنسيق الفقرة الحالية.
RowFormat { get; }إرجاع كائن يمثل خصائص تنسيق صف الجدول الحالي.
Underline { get; set; }يحصل على/يحدد نوع التسطير للخط الحالي.

طُرق

اسموصف
DeleteRow(int, int)حذف صف من الجدول.
EndBookmark(string)يحدد الموضع الحالي في المستند كنهاية إشارة مرجعية.
EndColumnBookmark(string)يحدد الموضع الحالي في المستند كنهاية إشارة مرجعية للعمود. يجب أن يكون الموضع في خلية الجدول.
EndEditableRange()يحدد الموضع الحالي في المستند كنهاية نطاق قابلة للتحرير.
EndEditableRange(EditableRangeStart)يحدد الموضع الحالي في المستند كنهاية نطاق قابلة للتحرير.
EndRow()إنهاء صف الجدول في المستند.
EndTable()إنهاء جدول في المستند.
InsertBreak(BreakType)إدراج فاصل من النوع المحدد في المستند.
InsertCell()إدراج خلية جدول في المستند.
InsertChart(ChartType, double, double)إدراج كائن مخطط في المستند وتغيير حجمه إلى الحجم المحدد.
InsertChart(ChartTypeRelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)إدراج كائن مخطط في المستند وتغيير حجمه إلى الحجم المحدد.
InsertCheckBox(string, bool, int)إدراج حقل نموذج خانة الاختيار في الموضع الحالي.
InsertCheckBox(string, bool, bool, int)إدراج حقل نموذج خانة الاختيار في الموضع الحالي.
InsertComboBox(string, string[], int)إدراج حقل نموذج combobox في الموضع الحالي.
InsertDocument(DocumentImportFormatMode)إدراج مستند في موضع المؤشر.
InsertDocument(DocumentImportFormatModeImportFormatOptions)إدراج مستند في موضع المؤشر.
InsertField(string)إدراج حقل Word في المستند وتحديث نتيجة الحقل.
InsertField(FieldType, bool)يقوم بإدراج حقل Word في مستند ويقوم بتحديث نتيجة الحقل بشكل اختياري.
InsertField(string, string)إدراج حقل Word في مستند دون تحديث نتيجة الحقل.
InsertFootnote(FootnoteType, string)إدراج حاشية سفلية أو تعليق ختامي في المستند.
InsertFootnote(FootnoteType, string, string)إدراج حاشية سفلية أو تعليق ختامي في المستند.
InsertHorizontalRule()إدراج شكل مسطرة أفقية في المستند.
InsertHtml(string)إدراج سلسلة HTML في المستند.
InsertHtml(string, bool)إدراج سلسلة HTML في المستند.
InsertHtml(string, HtmlInsertOptions)يقوم بإدراج سلسلة HTML في المستند. يسمح بتحديد خيارات إضافية.
InsertHyperlink(string, string, bool)إدراج ارتباط تشعبي في المستند.
InsertImage(byte[])إدراج صورة من مصفوفة بايت في المستند. تم إدراج الصورة سطريًا وبحجم 100%.
InsertImage(Image)إدراج صورة من .NETImage كائن في المستند. تم إدراج الصورة سطريًا وبحجم 100%.
InsertImage(Stream)يقوم بإدراج صورة من الدفق إلى المستند. تم إدراج الصورة سطريًا وبحجم 100%.
InsertImage(string)إدراج صورة من ملف أو عنوان URL في المستند. تم إدراج الصورة سطريًا وبحجم 100%.
InsertImage(byte[], double, double)إدراج صورة مضمّنة من مصفوفة بايت في المستند وتغيير حجمها إلى الحجم المحدد.
InsertImage(Image, double, double)إدراج صورة مضمنة من .NETImage كائن في المستند وقياسه إلى الحجم المحدد.
InsertImage(Stream, double, double)إدراج صورة مضمّنة من الدفق في المستند وتغيير حجمها إلى الحجم المحدد.
InsertImage(string, double, double)إدراج صورة مضمنة من ملف أو عنوان URL في المستند وتغيير حجمها إلى الحجم المحدد.
InsertImage(byte[], RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)إدراج صورة من مصفوفة بايت في الموضع والحجم المحددين.
InsertImage(Image, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)إدراج صورة من .NETImageكائن في الموضع والحجم المحددين.
InsertImage(Stream, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)إدراج صورة من دفق في الموضع والحجم المحددين.
InsertImage(string, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)إدراج صورة من ملف أو عنوان URL في الموضع والحجم المحددين.
InsertNode(Node)إدراج عقدة قبل المؤشر.
InsertOleObject(Stream, string, bool, Stream)إدراج كائن OLE مضمن من دفق في المستند.
InsertOleObject(string, bool, bool, Stream)يقوم بإدراج كائن OLE مضمن أو مرتبط من ملف في المستند. يكتشف نوع كائن OLE باستخدام امتداد الملف.
InsertOleObject(string, string, bool, bool, Stream)يقوم بإدراج كائن OLE مضمن أو مرتبط من ملف في المستند. يكتشف نوع كائن OLE باستخدام معلمة progID المحددة.
InsertOleObjectAsIcon(Stream, string, string, string)إدراج كائن OLE مضمن كأيقونة من دفق في المستند. يسمح بتحديد ملف الرمز والتسمية التوضيحية. يكتشف نوع كائن OLE باستخدام معلمة progID المحددة.
InsertOleObjectAsIcon(string, bool, string, string)يقوم بإدراج كائن OLE مضمن أو مرتبط كأيقونة في المستند. يسمح بتحديد ملف الرمز والتسمية التوضيحية. يكتشف نوع كائن OLE باستخدام امتداد الملف.
InsertOleObjectAsIcon(string, string, bool, string, string)يقوم بإدراج كائن OLE مضمن أو مرتبط كأيقونة في المستند. يسمح بتحديد ملف الرمز والتسمية التوضيحية. يكتشف نوع كائن OLE باستخدام معلمة progID المحددة.
InsertOnlineVideo(string, double, double)إدراج كائن فيديو عبر الإنترنت في المستند وتغيير حجمه إلى الحجم المحدد.
InsertOnlineVideo(string, string, byte[], double, double)إدراج كائن فيديو عبر الإنترنت في المستند وتغيير حجمه إلى الحجم المحدد.
InsertOnlineVideo(string, RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)إدراج كائن فيديو عبر الإنترنت في المستند وتغيير حجمه إلى الحجم المحدد.
InsertOnlineVideo(string, string, byte[], RelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)إدراج كائن فيديو عبر الإنترنت في المستند وتغيير حجمه إلى الحجم المحدد.
InsertParagraph()إدراج فاصل فقرة في المستند.
InsertShape(ShapeType, double, double)إدراج شكل سطري بالنوع والحجم المحددين.
InsertShape(ShapeTypeRelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)إدراج شكل عائم بموضع وحجم ونوع التفاف النص المحدد.
InsertSignatureLine(SignatureLineOptions)إدراج سطر التوقيع في الموضع الحالي.
InsertSignatureLine(SignatureLineOptionsRelativeHorizontalPosition, double, RelativeVerticalPosition, double, WrapType)إدراج سطر التوقيع في الموضع المحدد.
InsertStyleSeparator()إدراج فاصل النمط في المستند.
InsertTableOfContents(string)إدراج حقل TOC (جدول المحتويات) في المستند.
InsertTextInput(string, TextFormFieldType, string, string, int)إدراج حقل نموذج نصي في الموضع الحالي.
MoveTo(Node)ينقل المؤشر إلى عقدة مضمنة أو إلى نهاية الفقرة.
MoveToBookmark(string)ينقل المؤشر إلى إشارة مرجعية.
MoveToBookmark(string, bool, bool)ينقل المؤشر إلى إشارة مرجعية بدقة أكبر.
MoveToCell(int, int, int, int)ينقل المؤشر إلى خلية الجدول في القسم الحالي.
MoveToDocumentEnd()يحرك المؤشر إلى نهاية المستند.
MoveToDocumentStart()ينقل المؤشر إلى بداية المستند.
MoveToField(Field, bool)يحرك المؤشر إلى حقل في المستند.
MoveToHeaderFooter(HeaderFooterType)ينقل المؤشر إلى بداية الرأس أو التذييل في القسم الحالي.
MoveToMergeField(string)يحرك المؤشر إلى موضع يقع خارج حقل الدمج المحدد مباشرة ويزيل حقل الدمج.
MoveToMergeField(string, bool, bool)ينقل حقل الدمج إلى حقل الدمج المحدد.
MoveToParagraph(int, int)ينقل المؤشر إلى فقرة في القسم الحالي.
MoveToSection(int)ينقل المؤشر إلى بداية النص في قسم محدد.
MoveToStructuredDocumentTag(int, int)ينقل المؤشر إلى علامة مستند منظمة في القسم الحالي.
MoveToStructuredDocumentTag(StructuredDocumentTag, int)يحرك المؤشر إلى علامة الوثيقة المنظمة.
PopFont()استرداد تنسيق الأحرف الذي تم حفظه مسبقًا على المكدس.
PushFont()يحفظ تنسيق الأحرف الحالي في المكدس.
StartBookmark(string)يحدد الموضع الحالي في المستند كبداية إشارة مرجعية.
StartColumnBookmark(string)يحدد الموضع الحالي في المستند كبداية عمود الإشارة المرجعية. يجب أن يكون الموضع في خلية الجدول.
StartEditableRange()يحدد الموضع الحالي في المستند كبداية نطاق قابل للتحرير.
StartTable()يبدأ جدول في المستند.
Write(string)إدراج سلسلة في المستند في موضع الإدراج الحالي.
Writeln()إدراج فاصل فقرة في المستند.
Writeln(string)إدراج سلسلة وفاصل فقرة في المستند.

ملاحظات

DocumentBuilder يجعل عملية بناء أDocument أسهل. Document هو كائن مركب يتكون من شجرة من العقد، وبينما يكون من الممكن إدراج عقد content مباشرة في الشجرة، إلا أنه يتطلب فهمًا جيدًا لبنية الشجرة. DocumentBuilder هي “واجهة” للبنية المعقدة لـDocument ويسمح بإدراج المحتوى والتنسيق بسرعة وسهولة.

إنشاءDocumentBuilder وربطها بـ أDocument.

الDocumentBuilder يحتوي على مؤشر داخلي حيث سيتم إدراج النص عند الاتصالWrite ,Writeln ,InsertBreak وطرق أخرى. يمكنك التنقل فيDocumentBuilder المؤشر إلى location مختلف في مستند باستخدام طرق MoveToXXX المتنوعة.

استخدم الFontالخاصية لتحديد تنسيق الأحرف الذي سيتم تطبيقه على كل النص المدرج من الموضع الحالي في المستند فصاعدًا.

استخدم الParagraphFormat الخاصية لتحديد تنسيق الفقرة لـ current وجميع الفقرات التي سيتم إدراجها.

استخدم الPageSetup الخاصية لتحديد خصائص الصفحة والقسم للقسم current وكل الأقسام التي سيتم إدراجها.

استخدم الCellFormat وRowFormat خصائص لتحديد خصائص التنسيق لخلايا وصفوف الجدول. المستخدمInsertCell و EndRow طرق بناء الجدول.

لاحظ أنFont ,ParagraphFormat وPageSetup يتم تحديث الخصائص كلما تنتقل إلى مكان مختلف في المستند لتعكس خصائص التنسيق المتوفرة في الموقع الجديد.

أمثلة

يوضح كيفية استخدام منشئ المستندات لإنشاء جدول.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// ابدأ الجدول، ثم املأ الصف الأول بخليتين.
builder.StartTable();
builder.InsertCell();
builder.Write("Row 1, Cell 1.");
builder.InsertCell();
builder.Write("Row 1, Cell 2.");

// اتصل بطريقة "EndRow" الخاصة بالمنشئ لبدء صف جديد.
builder.EndRow();
builder.InsertCell();
builder.Write("Row 2, Cell 1.");
builder.InsertCell();
builder.Write("Row 2, Cell 2.");
builder.EndTable();

doc.Save(ArtifactsDir + "DocumentBuilder.CreateTable.docx");

يوضح كيفية إنشاء الرؤوس والتذييلات في مستند باستخدام DocumentBuilder.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// حدد أننا نريد رؤوسًا وتذييلات مختلفة للصفحات الأولى والزوجية والفردية.
builder.PageSetup.DifferentFirstPageHeaderFooter = true;
builder.PageSetup.OddAndEvenPagesHeaderFooter = true;

// أنشئ الرؤوس، ثم أضف ثلاث صفحات إلى المستند لعرض كل نوع رأس.
builder.MoveToHeaderFooter(HeaderFooterType.HeaderFirst);
builder.Write("Header for the first page");
builder.MoveToHeaderFooter(HeaderFooterType.HeaderEven);
builder.Write("Header for even pages");
builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);
builder.Write("Header for all other pages");

builder.MoveToSection(0);
builder.Writeln("Page1");
builder.InsertBreak(BreakType.PageBreak);
builder.Writeln("Page2");
builder.InsertBreak(BreakType.PageBreak);
builder.Writeln("Page3");

doc.Save(ArtifactsDir + "DocumentBuilder.HeadersAndFooters.docx");

يوضح كيفية إنشاء جدول بحدود مخصصة.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.StartTable();

// ضبط خيارات تنسيق الجدول لمنشئ المستندات
// سيتم تطبيقها على كل صف وخلية نضيفها معها.
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

builder.CellFormat.ClearFormatting();
builder.CellFormat.Width = 150;
builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
builder.CellFormat.Shading.BackgroundPatternColor = Color.GreenYellow;
builder.CellFormat.WrapText = false;
builder.CellFormat.FitText = true;

builder.RowFormat.ClearFormatting();
builder.RowFormat.HeightRule = HeightRule.Exactly;
builder.RowFormat.Height = 50;
builder.RowFormat.Borders.LineStyle = LineStyle.Engrave3D;
builder.RowFormat.Borders.Color = Color.Orange;

builder.InsertCell();
builder.Write("Row 1, Col 1");

builder.InsertCell();
builder.Write("Row 1, Col 2");
builder.EndRow();

// سيؤدي تغيير التنسيق إلى تطبيقه على الخلية الحالية،
// وأي خلايا جديدة نقوم بإنشائها مع المُنشئ بعد ذلك.
// لن يؤثر هذا على الخلايا التي أضفناها سابقًا.
builder.CellFormat.Shading.ClearFormatting();

builder.InsertCell();
builder.Write("Row 2, Col 1");

builder.InsertCell();
builder.Write("Row 2, Col 2");

builder.EndRow();

// زيادة ارتفاع الصف ليناسب النص الرأسي.
builder.InsertCell();
builder.RowFormat.Height = 150;
builder.CellFormat.Orientation = TextOrientation.Upward;
builder.Write("Row 3, Col 1");

builder.InsertCell();
builder.CellFormat.Orientation = TextOrientation.Downward;
builder.Write("Row 3, Col 2");

builder.EndRow();
builder.EndTable();

doc.Save(ArtifactsDir + "DocumentBuilder.InsertTable.docx");

أنظر أيضا