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