Optimización de recursos e imágenes

HotPDF puede reducir el tamaño de un documento cargado sin cambiar la semántica del estado de gráficos de las páginas ni romper los recursos heredados y las apariencias de anotación

Consolidación de contenido y recursos

Las imágenes en línea repetidas pueden convertirse en XObjects de imagen compartidos después de alcanzar los umbrales de ocurrencia y carga útil

Los nombres de recursos de página no utilizados se eliminan de forma conservadora después de escanear el contenido de la página, los Form XObjects anidados y los flujos de apariencia de anotación

Los flujos de contenido de página compatibles se decodifican, se unen con límites de token seguros y se normalizan en un único flujo Flate

Los Form XObjects y las fuentes incorporadas se deduplican a partir del contenido decodificado canónico y de los grafos de recursos canónicos recursivos, con los prefijos de subconjunto de fuentes compatibles normalizados durante la comparación

Subsetting de fuentes cargadas

SubsetLoadedFonts rastrea los códigos de carácter por el contenido de las páginas, los Form XObjects anidados y los streams de apariencia de anotaciones, resuelve cada código a través de la codificación de fuentes del PDF y el mapeo CID, y después retiene solo los programas de glifos alcanzables

Los diccionarios de fuentes, los mapas CID, las anchuras y los datos ToUnicode conservan sus identificadores existentes porque el subsetting TrueType, CFF y Type 1 preserva los ID de glifo o los nombres de glifo; los programas incrustados compartidos agregan el uso de cada diccionario de fuente compatible antes de una única reescritura

Las dependencias de contorno de TrueType compuesto y COLR v0/v1 se cierran recursivamente mientras las tablas de color, bitmap, variaciones y shaping quedan intactas; los programas Type 1 PFB, binario partido y PFA hexadecimal conservan los CharStrings usados y sustituyen las entradas sin usar por programas endchar válidos de la misma longitud

La operación omite un programa de fuente completo cuando algún código usado no puede mapearse, solo adopta un candidato en bruto o Flate más pequeño, y rechaza documentos firmados por defecto, de modo que los llamadores deben optar explícitamente por invalidar firmas

Políticas de imagen

La recompresión JPEG selecciona espacios de color elegibles, calidad de salida y ahorro mínimo de bytes

La optimización JPEG 2000 admite perfiles sin pérdida y visualmente sin pérdida, tiles opcionales y los cinco órdenes de progresión, mediante un perfil explícito no deshabilitado

La recompresión por coste visual evalúa pruebas acotadas de calidad JPEG o JPEG 2000 contra la fuente decodificada, rechaza candidatos fuera de los límites de error perceptual o de ahorro mínimo, y selecciona la puntuación más baja de error visual y coste en bytes ponderados con desempate determinista

Los datos globales JBIG2 solo se comparten cuando los bytes exactos del segmento global decodificado coinciden bajo jbspExactGlobalsOnly

El downsampling a DPI efectivo sigue las matrices de página y de Forms anidados, decodifica los píxeles de origen con gestión de color y remuestrea las soft masks junto con sus imágenes propietarias

La reescritura de color de imágenes convierte las entradas ICCBased, CalGray y CalRGB soportadas a RGB calibrado, mientras que las entradas calibradas no soportadas quedan intactas en lugar de convertirse a RGB de proceso

DownsampleLoadedImages redimensiona directamente en el espacio del componente las imágenes Separation o DeviceN de 8 bits en bruto, Flate, LZW, ASCII y RunLength soportadas, preservando el grafo exacto de espacios de color, la transformada de tinte, los colorantes, los rangos /Decode y la semántica de sobreimpresión

Las spot images DCT, JPX, JBIG2 y CCITT quedan intactas cuando su codec no puede exponer las muestras de plancha originales

Use la reescritura de color de páginas cargadas cuando la salida requerida sea un espacio de proceso uniforme Gray, RGB o CMYK en pintura vectorial, imágenes, patrones, shadings, transparencia y recursos ICC

Object streams adaptativos

El empaquetado de object streams puede acotar el tamaño de los miembros, los bytes del contenedor destino y el número de miembros preservando la localidad de números de objeto y excluyendo los objetos sucios con probabilidad de volver a cambiar

Activar el packing adaptativo también solicita la versión PDF requerida, el stream de xref y la reescritura completa

APIs principales