Використання DocumentBuilder для простої зміни документа
Завдання форматування
Форматування шрифту
Поточне форматування шрифту представлено об’єктом Font
, що повертається властивістю DocumentBuilder.Font
. Клас Font
містить широкий спектр властивостей шрифту, доступних у Microsoft Word. У наведеному нижче прикладі показано, як задати форматування шрифту.
Форматування абзацу
Поточне форматування абзацу представлено об’єктом ParagraphFormat
, який повертається властивістю DocumentBuilder.ParagraphFormat
. Цей об’єкт інкапсулює різні властивості форматування абзацу, доступні в Microsoft Word. Ви можете легко змінити форматування абзацу за замовчуванням на звичайний стиль, вирівняний за лівим краєм, без відступів, без інтервалів, без меж і без затінення, викликавши команду ParagraphFormat.ClearFormatting
. У наведеному нижче прикладі показано, як налаштувати форматування абзацу.
Робота з азіатською типографікою
Автоматичне регулювання інтервалу між азіатським і латинським текстом, цифрами
Якщо ви розробляєте шаблон, що містить як східноазіатський, так і латинський текст, і хочете покращити зовнішній вигляд шаблону форми, регулюючи пробіли між обома типами тексту, ви можете налаштувати шаблон форми таким чином, щоб він автоматично коригував пробіли між цими двома типами тексту. Для досягнення цієї мети ви можете використовувати властивості AddSpaceBetweenFarEastAndAlpha та AddSpaceBetweenFarEastAndDigit класу ParagraphFormat.
Наступний приклад коду показує, як використовувати властивості ParagraphFormat.AddSpaceBetweenFarEastAndAlpha
та ParagraphFormat.AddSpaceBetweenFarEastAndDigit
.
Змініть азіатські інтервали між абзацами та відступами
Наступний приклад коду показує, як змінити азіатський інтервал між абзацами та відступами.
Встановіть параметри розриву рядка
На вкладці “Азіатська типографіка” діалогового вікна Paragraph
“Властивості” в MS Word є група “розрив рядка”. Параметри цієї групи можна задати за допомогою FarEastLineBreakControl, WordWrap, HangingPunctuation властивостей класу ParagraphFormat. У прикладіlow code показано, як використовувати ці властивості.
Форматування комірок
Форматування комірок використовується при побудові таблиці. Воно представлено об’єктом CellFormat
, що повертається властивістю DocumentBuilder.CellFormat
. CellFormat інкапсулює різні властивості комірок таблиці, такі як ширина або вертикальне вирівнювання. У наведеному нижче прикладі показано, як створити таблицю, що містить одну відформатовану комірку.
Форматування рядків
Поточне форматування рядків визначається об’єктом RowFormat
, який повертається властивістю DocumentBuilder.RowFormat
. Цей об’єкт містить інформацію про форматування всіх рядків таблиці. У наведеному нижче прикладі показано, як створити таблицю, що містить одну клітинку, і застосувати форматування рядків.
Форматування списку
Aspose.Words дозволяє легко створювати списки, застосовуючи форматування списку. DocumentBuilder надає властивість DocumentBuilder.ListFormat
, яка повертає об’єкт ListFormat
. Цей об’єкт має кілька методів для початку та завершення списку, а також для збільшення/зменшення відступу. У Microsoft Word є два основних типи списків: марковані та нумеровані.
- Щоб запустити маркований список, наберіть
ListFormat.ApplyBulletDefault
. - Щоб запустити нумерований список, наберіть
ListFormat.ApplyNumberDefault
.
Маркер або номер та форматування додаються до поточного абзацу та до всіх наступних абзаців, створених за допомогою DocumentBuilder, доки не буде викликано параметр ListFormat.RemoveNumbers
, щоб зупинити форматування маркованого списку. У документах Word списки можуть містити до дев’яти рівнів. Форматування списку для кожного рівня визначає, який маркер або число використовується, відступ зліва, пробіл між маркером і текстом і т. д.
- Щоб збільшити рівень списку поточного абзацу на один рівень, зателефонуйте
ListFormat.ListIndent
. - Щоб зменшити рівень списку поточного абзацу на один рівень, зателефонуйте
ListFormat.ListOutdent
.
Методи змінюють рівень списку і застосовують властивості форматування нового рівня.
ListFormat.ListLevelNumber
, щоб отримати або встановити рівень списку для абзацу. Рівні списку пронумеровані від 0 до 8.
У наведеному нижче прикладі показано, як створити багаторівневий список.
Налаштування сторінки та форматування розділів
Властивості налаштування сторінки та розділу укладені в об’єкт PageSetup
, який повертається властивістю DocumentBuilder.PageSetup
. Об’єкт містить всі атрибути налаштування сторінки для розділу (ліве поле, нижнє поле, формат паперу і т.д.) в якості властивостей. У наведеному нижче прикладі показано, як задати такі властивості, як розмір сторінки і орієнтація для поточного розділу.
Застосування стилю
Деякі об’єкти форматування, такі як шрифт або ParagraphFormat, підтримують стилі. Окремий вбудований або визначений користувачем стиль представлений об’єктом Style
, який містить відповідні властивості стилю, такі як назва, базовий стиль, форматування шрифту та абзацу стилю тощо.
Крім того, об’єкт Style надає властивість Style.StyleIdentifier
, яка повертає незалежний від мови ідентифікатор стилю, представлений значенням перерахування Style.StyleIdentifier. Справа в тому, що назви вбудованих стилів в Microsoft Word локалізовані для різних мов. Використовуючи ідентифікатор стилю, ви можете знайти правильний стиль незалежно від мови документа. Значення перерахування відповідають вбудованим стилям Microsoft Word, таким як звичайний, Heading 1, Heading 2 і т.д. всім призначеним для користувача стилям присвоюється значення StyleIdentifier.User value. У наведеному нижче прикладі показано, як застосувати стиль абзацу.
Межі та затінення
Межі представлені символом BorderCollection. Це набір об’єктів-кордонів, доступ до яких здійснюється за індексом або за типом кордону. Тип кордону представлений перерахуванням BorderType
. Деякі значення перерахування стосуються кількох або лише одного елемента документа. Наприклад, BorderType.Bottom
застосовується до абзацу або комірки таблиці, тоді як BorderType.DiagonalDown
визначає діагональну межу лише в комірці таблиці.
Як колекція меж, так і кожна окрема межа мають подібні атрибути, такі як колір, стиль лінії, ширина лінії, відстань від тексту та необов’язкова тінь. Вони представлені однойменними властивостями. Поєднуючи значення властивостей, ви можете створювати різні типи меж. Крім того, як об’єкти BorderCollection, так і Border дозволяють скинути ці значення до значень за замовчуванням, викликавши метод Border.ClearFormatting
. Зверніть увагу, що при скиданні властивостей кордону до значень за замовчуванням межа стає невидимою. Клас Shading
містить атрибути затінення для елементів документа. Ви можете задати бажану текстуру затінення і кольору, які будуть застосовуватися до фону і переднього плану елемента.
Текстура затінення задається значенням перерахування TextureIndex
, яке дозволяє застосовувати різні шаблони до об’єкта Shading. Наприклад, щоб встановити колір фону для елемента документа, використовуйте значення TextureIndex.TextureSolid
і відповідно встановіть колір затінення переднього плану. У наведеному нижче прикладі показано, як застосувати межі та затінення до абзацу.
Прив’язка до сітки
Aspose.Words надає дві властивості ParagraphFormat.SnapToGrid
та Font.SnapToGrid
для отримання та встановлення прив’язки властивостей абзацу до сітки.
Переміщення курсору
Визначення поточного положення курсору
Ви можете в будь-який момент дізнатися, де в даний момент знаходиться курсор конструктора. Властивість DocumentBuilder.CurrentNode
повертає вузол, який наразі вибрано в цьому конструкторі. Вузол є прямим дочірнім елементом абзацу. Будь-які операції вставки, які ви виконуєте за допомогою DocumentBuilder
, будуть вставлені перед DocumentBuilder.CurrentNode
. Якщо поточний абзац порожній або курсор встановлений безпосередньо перед кінцем абзацу, DocumentBuilder.CurrentNode
повертає значення null.
Також ви можете використовувати властивість DocumentBuilder.CurrentParagraph
, яка повертає абзац, вибраний на даний момент у цьому DocumentBuilder. У наведеному нижче прикладі показано, як отримати доступ до поточного вузла в конструкторі документів. Ви можете завантажити файл шаблону для цього прикладу звідси.
Перехід до будь-якого вузла (абзаців та їх дочірніх елементів)
Якщо у вас є вузол об’єкта документа, який є абзацом або прямим дочірнім елементом абзацу, ви можете навести курсор конструктора на цей вузол. Для цього використовуйте метод DocumentBuilder.MoveTo
. У наведеному нижче прикладі показано, як перемістити курсор на вказаний вузол. Ви можете завантажити файл шаблону для цього прикладу тут.
Перехід до початку / кінця документа
Якщо вам потрібно перейти до початку документа, викличте команду DocumentBuilder.MoveToDocumentStart
. Якщо вам потрібно перейти до кінця документа, викличте команду DocumentBuilder.MoveToDocumentEnd
. У наведеному нижче прикладі показано, як перемістити курсор на початок або кінець документа. Ви можете завантажити файл шаблону для цього прикладу тут.
Перехід до розділу
Якщо ви працюєте з документом, що містить кілька розділів, ви можете перейти до потрібного розділу за допомогою DocumentBuilder.MoveToSection
. Цей метод переміщує курсор на початок вказаного розділу і приймає Індекс потрібного розділу. Якщо індекс розділу більше або дорівнює 0, то задається Індекс від початку документа, де 0 - перший розділ. Якщо індекс розділу менше 0, то задається Індекс від кінця документа, де -1 - останній розділ. У наведеному нижче прикладі показано, як перемістити курсор до вказаної секції. Ви можете завантажити файл шаблону для цього прикладу тут.
Перехід до верхнього / нижнього колонтитула
Коли Вам потрібно помістити будь-які дані у верхній або нижній колонтитул, спочатку потрібно перейти туди за допомогою DocumentBuilder.MoveToHeaderFooter
. Метод приймає значення перерахування HeaderFooterType, яке визначає тип верхнього або нижнього колонтитула, в який слід перемістити курсор. Якщо ви хочете створити верхні і нижні колонтитули, що відрізняються для першої сторінки, вам потрібно задати властивості PageSetup.DifferentFirstPageHeaderFooter
значення true. Якщо ви хочете створити верхні і нижні колонтитули, що відрізняються для парних і непарних сторінок, вам потрібно задати для PageSetup.OddAndEvenPagesHeaderFooter
значення true.
Якщо вам потрібно повернутися до основної статті, використовуйте DocumentBuilder.MoveToSection, щоб перейти від верхнього або нижнього колонтитула. У наведеному нижче прикладі колонтитули створюються в документі за допомогою DocumentBuilder.
Перехід до абзацу
Використовуйте DocumentBuilder.MoveToParagraph
, щоб перемістити курсор до потрібного абзацу в поточному розділі. Ви повинні передати цьому методу два параметри: paragraphIndex (Індекс абзацу, до якого потрібно перейти) та characterIndex (Індекс символу всередині абзацу).
Навігація виконується всередині поточної історії поточного розділу. Тобто, якщо ви перемістили курсор на основний заголовок першого розділу, то paragraphIndex вказує індекс абзацу всередині цього заголовка цього розділу.
Якщо значення paragraphIndex більше або дорівнює 0, то вказується індекс від початку розділу, де 0 - перший абзац. Якщо значення paragraphIndex менше 0, то вказується індекс від кінця розділу, де -1 - останній абзац.
В даний час Індекс символу може бути вказаний лише як 0 для переходу до початку абзацу або -1 для переходу до кінця абзацу. У наведеному нижче прикладі показано, як перемістити курсор у вказане положення абзацу. Ви можете завантажити файл шаблону для цього прикладу тут.
Перехід до комірки таблиці
Використовуйте DocumentBuilder.MoveToCell
, якщо вам потрібно перемістити курсор до комірки таблиці в поточному розділі. Цей метод приймає Чотири параметри:
- tableIndex - Індекс таблиці, до якої потрібно перейти.
- rowIndex - Індекс рядка в таблиці.
- columnIndex - Індекс стовпця в таблиці.
- characterIndex - Індекс символу всередині комірки.
Навігація виконується всередині поточної історії поточного розділу. Для параметрів індексу, коли значення індексу більше або дорівнює 0, задається Індекс з самого початку, де 0 є першим елементом. Коли індекс менше 0, він вказує індекс з кінця, де -1 є останнім елементом.
Також зауважте, що characterIndex в даний час може вказувати лише 0 для переміщення до початку комірки або -1 для переміщення до кінця комірки. У наведеному нижче прикладі показано, як перемістити курсор до вказаної комірки таблиці. Ви можете завантажити файл шаблону для цього прикладу тут.
Перехід до закладки
Закладки часто використовуються для позначення певних місць у документі, куди потрібно вставити нові елементи. Щоб перейти до закладки, використовуйте DocumentBuilder.MoveToBookmark
. Цей метод має дві перевантаження. Найпростіший з них не приймає нічого, крім назви закладки, на яку потрібно перемістити курсор. У наведеному нижче прикладі показано, як перемістити курсор на закладку. Ви можете завантажити файл шаблону для цього прикладу тут.
Це перевантаження переміщує курсор у положення відразу після початку закладки із зазначеним іменем. Інша перевантаження DocumentBuilder.MoveToBookmark
переміщує курсор на закладку з більшою точністю. Вона приймає два додаткових логічних параметра:
- isStart визначає, чи слід перемістити курсор на початок або в кінець закладки.
- isAfter визначає, чи слід переміщати курсор після початкової або кінцевої позиції закладки, або переміщати курсор перед початковою або кінцевою позицією закладки.
У наведеному нижче прикладі показано, як перемістити курсор відразу після закінчення закладки.
Порівняння для обох методів не є чутливим до регістру.
Вставка нового тексту таким чином не замінює існуючий текст закладки. Зверніть увагу, що деякі закладки в документі призначені полям форми. При переході до такої закладки і вставці тексту в неї текст вставляється в код поля форми. Хоча це не призведе до анулювання поля форми, вставлений текст не буде видно, оскільки він стає частиною коду поля.
Як перевести між одиницями вимірювання
Більшість властивостей об’єкта, представлених у Aspose.Words API і що представляють деякі вимірювання (ширина/висота, поля та різні відстані), приймають значення в пунктах (1 дюйм дорівнює 72 точкам). Іноді це незручно, тому існує клас ConvertUtil
, який надає допоміжні функції для перетворення між різними одиницями вимірювання. Це дозволяє перетворювати дюйми в точки, точки в дюйми, пікселі в точки і точки в пікселі. Коли пікселі перетворюються на точки і навпаки, це може бути зроблено з роздільною здатністю 96 точок на дюйм (dpi) або із зазначеною роздільною здатністю dpi.
ConvertUtil