Работа с перечислениями
Работа с перечислениями
Aspose.PDF FOSS для .NET использует строго типизированные перечисления по всей своей API для настройки поведения документа, внешнего вида страниц и форматов конвертации. Вместо «магических» строк или целых чисел большинство конфигурационных поверхностей — от того, как PDF-просмотрщик открывает файл, до того, в каком формате он сохраняется — выражаются значениями перечислений. Document сохраняется как — выражаются значениями перечислений. Эта страница представляет типы перечислений, с которыми вы столкнётесь наиболее часто при работе с библиотекой. Это отобранное введение, а не исчерпывающий каталог; полный список типов перечислений и всех их значений см. в API Reference.
Отображение и макет страницы
PageMode и PageLayout — свойства Document, которые управляют тем, как PDF-просмотрщик отображает документ при первом открытии — показывать ли контур, эскизы или определённый столбцовый макет.
using var doc = Document.Open("input.pdf");
// Show the outline (bookmarks) panel when the document opens
doc.PageMode = PageMode.UseOutlines;
// Display pages in two columns, first page on the left
doc.PageLayout = PageLayout.TwoColumnLeft;
doc.Save("output.pdf");Цветовая модель страницы
ColorType описывает цветовую модель страницы — RGB, CMYK, градации серого и т.д. Она доступна как в Page, так и в Color, позволяя ветвить логику в зависимости от того, как фактически отображается содержимое страницы.
using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];
if (page.ColorType == ColorType.Grayscale)
{
// Apply grayscale-specific handling, e.g. skip color-profile conversion
}Alignment
Несколько классов предоставляют HorizontalAlignment и VerticalAlignment для позиционирования контента на странице, в то время как классы аннотаций добавляют TextAlignment и Justification для выравнивания текста внутри коробки. Table, например, напрямую предоставляет обе оси выравнивания.
var table = new Table();
table.HorizontalAlignment = HorizontalAlignment.Center;
table.VerticalAlignment = VerticalAlignment.Center;
page.Paragraphs.Add(table);FreeTextAnnotation (и базовый тип Annotation) дополнительно предоставляет Justification и TextAlignment для текста внутри аннотации:
if (page.Annotations[1] is FreeTextAnnotation freeText)
{
freeText.Justification = Justification.Center;
freeText.Alignment = TextAlignment.Right;
}Форматы загрузки и сохранения
LoadFormat определяет исходный формат за подклассом LoadOptions (например, HtmlLoadOptions.LoadFormat всегда LoadFormat.HTML), в то время как SaveFormat выбирает формат вывода при вызове Document.Save.
var loadOptions = new HtmlLoadOptions();
// loadOptions.LoadFormat == LoadFormat.HTML
using var doc = new Document("input.html", loadOptions);
doc.Save("output.html", SaveFormat.Html);Поворот страницы
Rotation описывает угол поворота страницы и предоставляется через Page.Rotate.
var page = doc.Pages[1];
page.Rotate = Rotation.on90;Советы и лучшие практики
- Предпочитайте перегрузки с enum вместо перегрузок на основе строк или целых чисел, где обе существуют — они отлавливают недопустимые значения на этапе компиляции.
- Сопоставьте
SaveFormatс расширением файла, которое вы передаёте вDocument.Save; несоответствие приводит к файлу с вводящим в заблуждение содержимым или к недействительному расширению. - Используйте подкласс
LoadOptions, соответствующий вашему исходному формату (например,HtmlLoadOptionsдля HTML), вместо того чтобы полагаться исключительно на автоматическое определение формата. - Устанавливайте одновременно
HorizontalAlignmentиVerticalAlignmentпри размещении таблиц или абзацев — оставление одного из них со значением по умолчанию может привести к неожиданному расположению. - Считайте
ColorTypeописательным, а не предписывающим: он сообщает, как в данный момент моделируется цветовое содержание страницы, а не является настройкой, которую можно переключать для преобразования цветовых пространств.
Распространённые проблемы
| Проблема | Причина | Исправление |
|---|---|---|
| Сохранённый файл имеет неправильное содержимое для своего расширения | Неправильное значение SaveFormat, переданное в Document.Save | Передайте значение SaveFormat, соответствующее целевому расширению файла |
| Загруженный HTML/XML/etc. контент отображается некорректно | Использован общий LoadOptions вместо подкласса, специфичного для формата | Используйте подкласс, соответствующий формату источника, например HtmlLoadOptions |
| Таблица или аннотация выглядят смещёнными на странице | HorizontalAlignment/VerticalAlignment оставлены со значениями по умолчанию | Явно задайте оба свойства перед добавлением объекта в Paragraphs |
| PDF открывается с неожиданным поведением просмотрщика (отсутствует панель оглавления, неверный макет колонок) | Document.PageMode/Document.PageLayout никогда не задаются | Установите оба свойства перед вызовом Document.Save |
FAQ
В чём разница между PageMode и PageLayout?
PageMode управляет состоянием пользовательского интерфейса просмотрщика при открытии (например, видим ли панель оглавления или миниатюр), тогда как PageLayout определяет способ размещения страниц (одна страница, одна колонка, две колонки и т.д.).
Как узнать, какое значение SaveFormat использовать?
Выберите значение SaveFormat, соответствующее типу выходного файла, который вам нужен — например, SaveFormat.Html для вывода HTML или SaveFormat.Pdf для повторного сохранения в PDF.
Можно ли задать одновременно HorizontalAlignment и VerticalAlignment для одного объекта?
Да. Классы, такие как Table, предоставляют оба свойства независимо, поэтому их можно комбинировать для позиционирования содержимого по любой оси.
Позволяет ли ColorType преобразовать цветовое пространство страницы?
Нет. ColorType сообщает текущую цветовую модель, связанную со страницей или значением цвета; он не выполняет преобразование.
Где можно найти все перечисления и их значения?
Эта страница охватывает наиболее часто используемые enum’ы. Для полного набора, включающего все значения членов, см. API Reference.
API Reference Сводка
| Enum | Описание: |
|---|---|
PageMode | Как PDF viewer отображает документ при открытии (оглавление, миниатюры, полноэкранный режим и т.д.) |
PageLayout | Разметка страницы, используемая при отображении документа (одна страница, колонки и т.д.) |
ColorType | Цветовая модель страницы или значение цвета (RGB, CMYK, градации серого и т.д.) |
HorizontalAlignment | Горизонтальное выравнивание абзацев, таблиц или аннотаций |
VerticalAlignment | Вертикальное выравнивание абзацев, таблиц или аннотаций |
TextAlignment | Горизонтальное выравнивание текста для текстовых полей аннотаций |
Justification | Выравнивание по ширине содержимого свободной текстовой аннотации |
LoadFormat | Селектор исходного формата, используемый подклассами LoadOptions |
SaveFormat | Селектор формата вывода, используемый Document.Save |
Rotation | Угол поворота страницы, доступный через Page.Rotate |