Windows-заполнение форм original typed rich

Файловые задания Windows и hpdf_document_execute_json_v1 принимают запросы forms.fill с richTextRuns наряду с обычными обновлениями текста, списков и кнопок; все поля делят одного аутентифицированного кандидата PDF

Original typed runs попадают прямо в нативный компоновщик appearance; генерация AP не ходит кругами через сериализованное цветовое представление RV; простой V, стандартный rich RV и реальный AP готовятся вместе

Запрос

{
  "schemaVersion": 1,
  "type": "forms.fill",
  "fontFamilies": ["DejaVu Sans", "DejaVu Serif Condensed"],
  "fields": [
    {"name": "Input", "richTextRuns": [
      {"text": "Original typed precision", "fontFamily": "DejaVu Sans",
       "fontStyle": "regular", "fontSize": 12.123456,
       "color": [0.123456, 0.234567, 0.345678]},
      {"text": "Another paragraph", "fontFamily": "DejaVu Serif Condensed",
       "fontStyle": "boldItalic", "fontSize": 14.125,
       "paragraphBreakBefore": true, "alignment": "center",
       "underline": true, "strikeOut": false}
    ]},
    {"name": "Plain", "value": "Changed scalar"},
    {"name": "Choice", "values": ["B", "C"]},
    {"name": "Check", "value": "Yes"}
  ]
}

Каждое поле подаёт richTextRuns либо скалярные value или values; опциональное value рядом с richTextRuns должно точно совпадать с нативным производным обычным текстом, включая возвраты каретки между typed-абзацами; сериализованный richText — это не вход typed-run

Каждый run требует text и принимает fontStyle, fontSize, color, underline, strikeOut, paragraphBreakBefore и alignment; fontStyle — regular, bold, italic или boldItalic; alignment — left, center или right; компоненты RGB — конечные числа от нуля до единицы

Размеры run должны быть положительными и не больше 4096 пунктов; отсутствующий размер берёт fontSize поля или 12 пунктов; нативное числовое форматирование PDF по-прежнему применяется, а стандартный RV CSS сериализует цвета в восьмибитные компоненты

Опции appearance поля включают fontSize, padding, characterSpacing, wordSpacing и paintWhiteBackground; требуется настоящая генерация AP, поэтому appearance=false невалиден

Реальные шрифтовые программы

Массив fontFamilies поля переопределяет массив операции; настроенные массивы содержат от одного до шестнадцати непустых валидных лейблов семейств; сравнение сворачивает регистр ASCII и сравнивает прочий Unicode точно; явный fontFamily run'а должен совпадать с настроенным лейблом, а отсутствующий лейбл run'а выбирает первое семейство

Без fontFamilies остаётся доступным исходный путь с одним семейством; лейбл шрифтового callback берётся из fontFamily поля, fontFamily операции или DejaVu Sans; исходные single-family runs опускают fontFamily run'а

Файловые задания добавляют input, output и fonts; fonts отображает каждый настроенный лейбл семейства в пути файлов regular, bold, italic и boldItalic; загружаются только используемые стили и начертание regular, нужное скалярным appearance; пути файлов не должны алиасить вывод

Вызывающие через версионированный C ABI используют существующее расширение hpdf_form_data_operation_v1 и возвращают читаемые таблицы hpdf_io_v1 из его шрифтового callback; лейблы семейств — в UTF-8, значения стилей — от 0 до 3; все реальные программы копируются в ограниченные собственные байты до компоновки appearance

Исходные символы V1, базовые размеры структур и смещения опционального расширения не изменились; ассеты семейств/стилей кэшируются в рамках одного запроса и разделяются между полями без повторного списания той же собственной аллокации

Опциональный fallbackFontFamilies=true применяет fallback целыми графемами между реально переданными семействами; typed runs могут хранить упорядоченный массив fontFamilyCandidates, причём объявленные кандидаты рассматриваются раньше настроенного порядка; наследование запроса и загрузку всех четырёх стилей через callback см. в Windows supplied-family rich font fallback

Текущий граф и публикация

Без InputIO C ABI использует собственную загруженную ревизию и реальный ожидающий граф; опциональный InputIO подаёт замещающий PDF, приватно скопированный и аутентифицированный до любого шрифтового callback; ни мутация заимствованного ввода, ни неудавшаяся замена не могут изменить зафиксированный контекст

OutputIO и ResultIO обязательны; реальный кандидат PDF и JSON-результат должны оба успешно завершиться, затем пройти финальную контрольную точку отмены, и только после этого C ABI меняет документ и источник

Неудавшийся callback мог уже получить байты кандидата; вызывающий обязан отбросить их при ненулевом возвращённом статусе; ранее зафиксированный контекст библиотеки остаётся неизменным

Файловые задания подготавливают полного кандидата и ограниченный ответ до атомарной замены запрошенного вывода; отсутствующий шрифт, сбой политики, отмена или нехватка ёмкости сохраняют существующую цель

Политики и результат

Целостность существующих подписей, DocMDP P1/P2/P3, блокировки FieldMDP, флаги read-only и разрешения AES form-fill соблюдаются нативным аутентифицированным движком; signaturePolicy принимает те же явные настройки доверия, таймстампов и отзыва, что и Windows-импорты форм

Read-only обновление с тем же вводом успешно, только если реальные операторы AP, шрифты, ресурсы и значения полей эквивалентны; поддерживаются сжатые потоки AP и неканонический эквивалентный RV; настоящее изменение стиля остаётся изменением, даже если его цвет RV квантуется в то же значение CSS

Действительно неизменённый запрос публикует точные байты подготовленной текущей ревизии после аутентификации политик; ожидающие правки графа материализуются в этой текущей ревизии до сравнения

Успешные ответы включают typedRichText=true, typedRichProfile=original-typed-runs-v1, updated, fieldCount, fontBytes и fields из реально подготовленного кандидата; эти реализованные точки входа описывает formDataExchange.typedRichFill

Каждый элемент fields сохраняет обычные name, скалярное value и сводку fieldType; список, основанный на массиве, имеет пустое скалярное value в этой сводке, а его полный выбор остаётся в сохранённом PDF и последующем экспорте FDF/XFDF

Прямой фасад заданий ExecuteLoadedOperation и устаревшее расширение хэндла/шрифтового callback HPDFDocRunJob остаются отдельной работой; этот биндинг не добавляет обмен аннотациями, встроенными файлами, действиями или инкрементальный FDF

Смежные темы

FillTypedData, Транзакция Windows, Нативные смешанные typed-обновления, Обмен FDF/XFDF в Windows