Estado viewer de optional content

La rasterización nativa puede aplicar explícitamente recomendaciones de optional content estilo viewer de las secciones 8.11.4.4 y 8.11.4.5 de ISO 32000-1:2008

Las opciones por defecto dejan ViewerState=nil y retienen el comportamiento D de forma final aislada en ambos usos de anotaciones, sin aplicar AS automáticamente

Access := Document.GetRenderAccess(0);
Context := THPDFOptionalContentContext.Default;
Context.Zoom := 2;
Context.Language := 'en-US';
Viewer := THPDFHeadlessOptionalContentState.Create(Access, Context);
try
  Viewer.SetGroupState(10, 0, True);
  Options := THPDFHeadlessRenderOptions.Default;
  Options.ViewerState := Viewer;
  Viewer.Event := hocePrint;
  Options.Usage := hruPrint;
  HPDFRenderHeadlessPagePNGFile(Access, OutputFile, Options);
finally
  Viewer.Free;
end;

View inicializa D, aplica las aplicaciones View coincidentes y luego las anulaciones manuales; las aplicaciones Print o Export reemplazan temporalmente las recomendaciones actuales para esa operación y no modifican el objeto de estado ni los diccionarios PDF

Toda recomendación activa a través de aplicaciones y categorías coincidentes debe estar ON para que un grupo reciba ON; la información de uso ausente no aporta recomendación y preserva el estado actual de ese grupo

Las categorías soportadas son View, Print, Export, Zoom, Language y User; CreatorInfo y PageElement permanecen informativas

Zoom usa un mínimo inclusivo y un máximo exclusivo, exigiendo al menos un bound y con valores por defecto de cero e infinito; Language prefiere tags exactos insensibles a mayúsculas dentro de los OCGs de la aplicación, y en caso contrario empareja grupos de idioma primario marcados Preferred ON

User compara el Individual, Title u Organization suministrado explícitamente contra un string o array de nombres usando texto Unicode exacto; los text strings PDFDocEncoding, UTF-16 y UTF-8 de PDF 2.0 retienen su significado decodificado

Una aplicación con OCGs omitidos usa por defecto un conjunto de grupos vacío; un PrintState omitido de un diccionario de uso Print existente no aporta recomendación

AS no limita las categorías al evento homónimo, de modo que una aplicación Print puede aplicar recomendaciones Zoom o Language usando el mismo contexto explícito

Las políticas OCMD, las expresiones VE recursivas, el marked content anidado, los Form XObjects, las imágenes y las appearances de anotaciones consumen los estados de grupo resultantes a través de la ruta de visibilidad acotada existente

Los cambios manuales persisten a través de cambios de contexto hasta que se limpian o revierten; recargar, mutar, cerrar o destruir el documento caduca el estado permanentemente, exigiendo acceso fresco y un objeto nuevo

Mantenga el estado prestado vivo y sin cambios durante cada render; la reutilización de solo lectura está permitida mientras el contrato de concurrencia de callbacks del adaptador subyacente siga en vigor

El trabajo de render, la búsqueda de grupos, los escaneos de candidatos de idioma, la búsqueda de selecciones manuales, la decodificación acotada de texto hexadecimal y UTF-8, y el almacenamiento temporal de estado participan en los límites de operación, tokens, bytes decodificados, bytes de trabajo y cancelación

SetGroupState es una operación de contenedor de estado dirigida por el llamador con capacidad de 100000 selecciones; los límites de render acotan el consumo de forma independiente, y las aplicaciones deben imponer límites adecuados a las solicitudes de selección externas

El evento viewer es independiente del Usage de la anotación; ninguna de las dos opciones concede permiso de impresión, ejecuta acciones SetOCGState, activa rich media ni crea una interfaz de usuario

La aceptación usa estados declarados independientes y máscaras RGB exactas de rectángulos, pruebas de vida útil y mutación, rendering concurrente reentrante y serializado por callbacks, y observaciones separadas de MuPDF y Poppler

Las observaciones de contexto por defecto de lectores no sustituyen a las ecuaciones nativas explícitas de Zoom, Language, User o estado manual; los compañeros de geometría plana validan independientemente las coordenadas raster

Operaciones JSON versionadas de Linux

{
  "schemaVersion": 1,
  "type": "render",
  "dpi": 72,
  "usage": "view",
  "optionalContent": {
    "event": "print",
    "zoom": 2,
    "language": "en-US",
    "individual": "Alice",
    "title": "Engineer",
    "organization": "Example",
    "selections": [
      {"objectNumber": 10, "generationNumber": 0, "enabled": true}
    ]
  }
}

Omitir optionalContent retiene el comportamiento D estático; un objeto activa el estado automático con un evento View por defecto, zoom 1 y strings de contexto de idioma y usuario vacías

El evento acepta view, print o export y permanece independiente del usage de la anotación; no se infiere ningún idioma del sistema operativo, identidad de usuario ni zoom de pantalla

Las strings de contexto admiten 4096 code units UTF-16 como máximo cada una; el zoom debe ser finito, positivo y de 1000000000 como máximo

Las selecciones exigen un número de objeto positivo, un número de generación de cero a 65535 y un valor Boolean enabled explícito; la operación admite 1024 selecciones como máximo dentro de su límite de memoria de trabajo, y las referencias repetidas usan el último estado suministrado

Cada operación crea y libera su propio estado nativo prestado, de modo que envíe de nuevo las selecciones manuales deseadas con una solicitud posterior; los diccionarios PDF y los renders subsiguientes sin este objeto retienen su configuración previa

Las opciones JSON mal formadas devuelven estado invalid-argument, los fallos de presupuesto admitido devuelven estado budget-exceeded, y los metadatos de documento mal formados o las referencias de grupo obsoletas retienen el estado existente de parse-error de render antes de publicar el PNG

Las capacidades informan optionalContent.automaticState, los tres eventos, los miembros de contexto explícitos, el soporte de selección manual y la vida útil por operación

Genere fuentes reales de Language/User plano y AES R5/R6 con Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT, y luego ejecute Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT contra cada build nativo del ABI

La aceptación por callbacks comprueba fórmulas de píxeles independientes, tipos JSON estrictos, cifrado, presupuestos, cancelación, fallos sticky de salida/resultado, recuperación con el mismo handle y ausencia de estado viewer retenido; requiere pypdf, cryptography, NumPy y Pillow y suprime el lanzamiento del viewer de escritorio

Vea THPDFHeadlessOptionalContentState, THPDFOptionalContentContext y IHPDFHeadlessRenderLifetime