DocumentBuilder

DocumentBuilder class

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

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

public class DocumentBuilder

المنشئون

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

الخصائص

اسموصف
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(ChartType, double, double, ChartStyle)يقوم بإدراج كائن مخطط في المستند ويقوم بتغيير حجمه إلى الحجم المحدد.
InsertChart(ChartTypeRelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapType)يقوم بإدراج كائن مخطط في المستند ويقوم بتغيير حجمه إلى الحجم المحدد.
InsertChart(ChartTypeRelativeHorizontalPosition, double, RelativeVerticalPosition, double, double, double, WrapTypeChartStyle)يقوم بإدراج كائن مخطط في المستند ويقوم بتغيير حجمه إلى الحجم المحدد.
InsertCheckBox(string, bool, int)يقوم بإدراج حقل نموذج مربع الاختيار في الموضع الحالي.
InsertCheckBox(string, bool, bool, int)يقوم بإدراج حقل نموذج مربع الاختيار في الموضع الحالي.
InsertComboBox(string, string[], int)يقوم بإدراج حقل نموذج المجموعة في الموضع الحالي.
InsertDocument(DocumentImportFormatMode)إدراج مستند في موضع المؤشر.
InsertDocument(DocumentImportFormatModeImportFormatOptions)إدراج مستند في موضع المؤشر.
InsertDocumentInline(DocumentImportFormatModeImportFormatOptions)يقوم بإدراج مستند مضمن في موضع المؤشر.
InsertField(string)يقوم بإدراج حقل Word في مستند ويقوم بتحديث نتيجة الحقل.
InsertField(FieldType, bool)يقوم بإدراج حقل Word في مستند ويقوم بشكل اختياري بتحديث نتيجة الحقل.
InsertField(string, string)يقوم بإدراج حقل Word في مستند دون تحديث نتيجة الحقل.
InsertFootnote(FootnoteType, string)يقوم بإدراج حاشية سفلية أو تعليق ختامي في المستند.
InsertFootnote(FootnoteType, string, string)يقوم بإدراج حاشية سفلية أو تعليق ختامي في المستند.
InsertForms2OleControl(Forms2OleControl)إدراجاتForms2OleControl الكائن في الموضع الحالي.
InsertGroupShape(params ShapeBase[])تجميع الأشكال التي تم تمريرها كمعلمة في عقدة GroupShape جديدة يتم إدراجها في الموضع الحالي.
InsertGroupShape(double, double, double, double, params ShapeBase[])تجميع الأشكال التي تم تمريرها كمعلمة في عقدة GroupShape جديدة بالحجم المحدد والتي يتم إدراجها في الموضع المحدد.
InsertHorizontalRule()يقوم بإدراج شكل مسطرة أفقية في المستند.
InsertHtml(string)يقوم بإدراج سلسلة HTML في المستند.
InsertHtml(string, bool)يقوم بإدراج سلسلة HTML في المستند.
InsertHtml(string, HtmlInsertOptions)يُدرج سلسلة HTML في المستند. يسمح بتحديد خيارات إضافية.
InsertHyperlink(string, string, bool)إدراج ارتباط تشعبي في المستند.
InsertImage(byte[])يُدرج صورة من مصفوفة بايتات في المستند. تُدرج الصورة مضمنةً وبمقياس ١٠٠٪.
InsertImage(Image)إدراج صورة من .NETImage كائن في المستند. الصورة مُدرجة ضمنيًا وبمقياس ١٠٠٪.
InsertImage(Stream)يُدرج صورة من تدفق في المستند. تُدرج الصورة مضمنةً وبمقياس ١٠٠٪.
InsertImage(string)يُدرج صورة من ملف أو رابط في المستند. تُدرج الصورة مضمنةً وبمقياس ١٠٠٪.
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)يقوم بإدراج سطر توقيع في الموضع المحدد.
InsertStructuredDocumentTag(SdtType)يُدرجStructuredDocumentTag في المستند.
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 قم بتوجيه المؤشر إلى موقع مختلف في مستند باستخدام طرق MoveToXXX المختلفة.

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

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

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

استخدمCellFormat وRowFormat خصائص لتحديد خصائص تنسيق x000d_ لخلايا وصفوف الجدول. استخدم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");

أنظر أيضا