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
THotPDF.ExternalizeRepeatedInlineImagesTHotPDF.RemoveUnusedLoadedPageResourcesTHotPDF.CoalesceLoadedPageContentStreamsTHotPDF.DeduplicateLoadedFormXObjectsTHotPDF.DeduplicateLoadedEmbeddedFontsTHotPDF.SubsetLoadedFontsTHotPDF.RecompressLoadedJPEGImagesTHotPDF.OptimizeLoadedJPEG2000ImagesTHotPDF.OptimizeLoadedImagesByVisualCostTHotPDF.ShareLoadedJBIG2GlobalsTHotPDF.DownsampleLoadedImagesTHotPDF.RewriteLoadedPageColorsTHotPDF.ConfigureAdaptiveObjectStreamPacking