Метод THotPDF.BuildLoadedPageSVG
Строит автономный SVG-документ из выбранной загруженной страницы PDF
Объявление
function BuildLoadedPageSVG(PageIndex: Integer): AnsiString; overload;
function BuildLoadedPageSVG(PageIndex: Integer;
EmbedFonts: boolean): AnsiString; overload;
Модуль
HPDFDoc
Параметры
| Имя | Назначение |
|---|---|
PageIndex | Индекс загруженной страницы с нулевой базой |
EmbedFonts | True записывает глифы встроенных шрифтов в SVG как контуры, чтобы страница выглядела так же там, где эти шрифты не установлены. False, как и перегрузка без этого параметра, оставляет текст установленным шрифтам просмотрщика |
Возвращаемое значение
Возвращает полный SVG-документ или пустую строку, если страницу не удалось экспортировать
Примечания по использованию
- Контуры, декодированный текст, image XObject, inline-изображения и рекурсивные Form XObject выдаются через общий интерпретатор content-device; Form XObject стартует с цветами, действующими в месте его отрисовки
- Холст покрывает видимую часть страницы — её
/CropBox, обрезанный до/MediaBox(см.GetLoadedPageVisibleBox), — повёрнутую на/Rotate; левый нижний угол бокса отображается в угол холста, даже когда бокс начинается не в начале координат - Текст пишется как UTF-8 с одной позицией
xна символ иxml:space="preserve", так что пробелы сохраняются; лигатурные глифы раскрываются во все символы, которые они представляют, а коды, не разрешённые в XML 1.0, превращаются в U+FFFD - Размещение текста следует полной текстовой матрице, включая межсимвольный и межсловный интервал, горизонтальное масштабирование, rise и поправки
TJ; режимы рендеринга с 0 по 2 заливают, обводят или делают и то и другое, режим 3 ничего не рисует, а глифы текста, показанного в режимах с 4 по 7, также становятся путём отсечения от конца текстового объекта (ET) до конца graphics state - По умолчанию текст использует установленные шрифты: стандартные 14 семейств и их TrueType-эквиваленты отображаются в Helvetica или Arial, Times New Roman и Courier New, а прочие шрифты называются по своему семейству, также с пробелами между словами (
MyriadPro, Myriad Pro), за которым следует обобщённое семейство, взятое из флагов font descriptor или из имени. Полужирный и курсивный текст получаетfont-weightиfont-styleиз стилевой части имени шрифта (Arial-BoldMT,Helvetica-Oblique,MinionPro-It) и из weight, flags и italic angle шрифтового дескриптора - При
EmbedFontsравномTrueтекст в шрифте, чья программа TrueType или CFF встроена в PDF, рисуется из контуров глифов этой программы. Каждый глиф один раз определяется как<path>в<defs>и размещается через<use>везде, где встречается, поэтому повторяющиеся символы не повторяют свои контуры; режимы заливки и обводки, толщины линий и отсечение текста следуют тексту, как и для SVG-текста. Сам текст сохраняется как прозрачный SVG-текст поверх контуров, так что его по-прежнему можно выделять, искать и читать вспомогательным технологиям - Невстроленные шрифты, программы шрифтов Type 1 (
/FontFile), вертикальная письменность CJK и прогоны с кодом, у которого нет глифа во встроенной программе, остаются SVG-текстом даже при заданномEmbedFonts. Контуры увеличивают файл — часто в два-три раза для страниц, насыщенных текстом - Цвета заливки и обводки, заданные в любом цветовом пространстве (
DeviceGray,DeviceRGB,DeviceCMYK, ICCBased, калиброванных, Lab, Indexed, Separation и DeviceN), конвертируются в sRGB так же, как их конвертирует рендерер страниц - Контуры, залитые tiling-паттерном, заполняются SVG-элементом
<pattern>, который повторяет ячейку паттерна через каждыеXStepиYStepс отсечением по его/BBox; бесцветные паттерны закрашивают ячейку цветом, заданным вместе с паттерном. Контуры, залитые shading-паттерном, получают градиент или сетку его затенения с отсечением по контуру. Матрица паттерна применяется в пространстве страницы или формы, использующей паттерн. Штрихи с паттерном используют его цвет, чёрный для цветных паттернов - Осевые затенения Type 2 и радиальные Type 3 используют SVG-градиенты с ограниченным набором опорных точек; конец, который
Extendне продлевает, остаётся незакрашенным, как в PDF - Сетчатые затенения с Type 4 по Type 7 отрисовываются через ограниченный по размеру прозрачный PNG data URI максимум на 16 миллионов пикселей
- Inline-изображения декодируются тем же путём, что и изображения загруженного документа, и встраиваются как PNG data URI
- Маски изображений, включая inline, становятся PNG-изображениями текущего цвета заливки, прозрачными там, где ничего не нарисовано; трафареты
/SMaskи/Maskдают изображению альфа-канал — с разрешением маски, если оно выше разрешения изображения. Массивы цветоключевой/Maskделают совпадающие пиксели прозрачными для Flate, LZW и несжатых изображений WиW*пути отсечения становятся SVG-элементами<clipPath>, которые заканчиваются вместе с graphics state, в котором были заданы; Form XObject отсекаются по своему/BBox, а осевые и радиальные затенения — по своему- Текст в шрифтах Type 3 рисуется процедурами глифов шрифта, размещаемыми через его
/FontMatrix, вместо SVG-текста; глифы, начинающиеся сd1, рисуются текущим цветом заливки. Глифы Type 3 не добавляются к пути отсечения режимов рендеринга с 4 по 7 - Цвет
Backgroundзатенения заполняет область shading-паттерна до затенения, поэтому виден там, где затенение не рисует; как в PDF, он игнорируется, когда затенение рисуется черезsh - Функциональные затенения Type 1 сэмплируются по своему
Domainв PNG data URI максимум на 256×256 сэмплов, размещаемый черезMatrixзатенения; при масштабировании просмотрщик сглаживает его