Guía de integración del SDK de compresión: llamada multilenguaje Python/Java/C#

Conclusión primero: SmartSlim SDK exporta bibliotecas dinámicas a través del ABI estándar de C, soportando integración en cuatro lenguajes: Python/Java/C#/Rust. El flujo de llamada central se divide en cuatro pasos — inicializar el SDK, crear la configuración de compresión, ejecutar la compresión y liberar recursos. La compresión de un único archivo PDF de 100 MB tarda aproximadamente 0,8 segundos, con una latencia de verificación de licencia inferior a 5 ms. Este artículo presenta ejemplos de código de integración completos en tres lenguajes, tablas de parámetros de la API y un plan de optimización de rendimiento, con una demo de compresión por lotes. A continuación, empezando por la arquitectura del SDK, se explica detalladamente el método de integración para cada lenguaje.

Si necesitas invocar el servicio de compresión a través de una interfaz HTTP en lugar de la integración del SDK, te recomendamos leer primero la Guía práctica de llamada a la API de compresión: documentación detallada de la interfaz RESTful.

1. Arquitectura del SDK y principios de integración

La base del SmartSlim SDK es el motor de compresión Rust, exportado como biblioteca dinámica (.so/.dylib/.dll) a través del ABI estándar de C (Application Binary Interface). Cualquier lenguaje que soporte FFI (Foreign Function Interface) puede cargarla y llamarla. La ventaja de esta arquitectura es: escribir el motor central una vez en Rust y reutilizar el mismo binario para múltiples lenguajes, sin necesidad de reimplementar la lógica de compresión en cada uno.

ComponenteTecnologíaFunciónSalida
Núcleo del motor de compresiónRustEjecutar algoritmos de compresiónBiblioteca estática .a/.lib
Capa de exportación ABIRust #[no_mangle]Exportar funciones compatibles con CBiblioteca dinámica .so/.dylib/.dll
Capa de bindings de lenguajeFFI de cada lenguajeEncapsular llamadas nativasPaquete/biblioteca por lenguaje
Módulo de licenciaRust + cifradoVerificar clave de licenciaIntegrado en la biblioteca dinámica
Gestión de configuraciónRust structGestión de parámetros de compresiónConfiguración JSON/TOML

El SDK proporciona bibliotecas precompiladas para 6 plataformas, cubriendo los sistemas operativos y arquitecturas de CPU principales, listas para usar sin necesidad de compilar código Rust.

PlataformaBiblioteca dinámicaSistema operativoArquitectura CPUEscenario aplicable
linux-x64libsmartslim.soLinuxx86_64Servidor/escritorio
linux-arm64libsmartslim.soLinuxaarch64Servidor ARM/Raspberry Pi
macos-universallibsmartslim.dylibmacOSx86_64+arm64Intel+Apple Silicon
windows-x64smartslim.dllWindowsx86_64Windows escritorio/servidor
linux-server-x64libsmartslim.soLinuxx86_64Versión optimizada para servidor
linux-server-arm64libsmartslim.soLinuxaarch64Versión optimizada para servidor ARM

2. Detalle de los parámetros principales de la API

La API principal del SDK se divide en cuatro categorías: inicialización, configuración, compresión y liberación. La siguiente tabla lista las funciones principales de la API y la descripción de sus parámetros.

Función APIParámetrosValor de retornoDescripción
smartslim_initlicense_key: Stringhandle: HandleInicializar el SDK, verificar licencia
smartslim_create_configformat, level, qualityconfig: ConfigHandleCrear configuración de compresión
smartslim_compresshandle, input, output, configresult: ResultCodeEjecutar compresión de archivo individual
smartslim_compress_batchhandle, files[], config, workersresults[]: ResultCodeCompresión por lotes (multi-concurrencia)
smartslim_get_infohandle, filepathFileInfo: structObtener información de compresión del archivo
smartslim_free_configconfig: ConfigHandlevoidLiberar recursos de configuración
smartslim_freehandle: HandlevoidLiberar instancia del SDK

Los parámetros de configuración de compresión soportan 4 niveles de compresión (low/medium/high/ultra) x 15 escenarios x 5 modos de rendimiento (ultrafast/fast/balanced/quality/optimal), con un total de 300 combinaciones que cubren prácticamente todas las necesidades de compresión.

ParámetroValores disponiblesValor predeterminadoDescripción
formatpdf/image/video/office/ofdDetección automáticaTipo de archivo
levellow/medium/high/ultramediumNivel de compresión
quality1-10075Factor de calidad (imágenes/PDF)
performanceultrafast/fast/balanced/quality/optimalbalancedModo de rendimiento
workers1-164Número de hilos concurrentes
securityDISABLED/LOW/MEDIUM/HIGH/MAXIMUMMEDIUMNivel de seguridad

3. Ejemplos de código de integración en tres lenguajes

A continuación se presentan ejemplos de integración completos en Python, Java y C#, todos con el ejemplo de comprimir un único archivo PDF.

1. Integración en Python (ctypes)

Python carga la biblioteca dinámica y llama a las funciones exportadas a través del módulo ctypes. El siguiente código implementa el flujo completo: inicializar el SDK, crear la configuración, comprimir el PDF y liberar recursos. La compresión de un PDF de 100 MB tarda aproximadamente 0,8 segundos.

PasoCódigo PythonDescripción
1. Cargar bibliotecalib = ctypes.CDLL('./libsmartslim.so')Cargar biblioteca dinámica
2. Inicializarhandle = lib.smartslim_init(b"YOUR_LICENSE")Pasar clave de licencia
3. Crear configuraciónconfig = lib.smartslim_create_config(b"pdf", b"medium", 75)PDF/medium/q75
4. Ejecutar compresiónlib.smartslim_compress(handle, b"in.pdf", b"out.pdf", config)Comprimir archivo
5. Liberar recursoslib.smartslim_free_config(config); lib.smartslim_free(handle)Liberar memoria

2. Integración en Java (JNI)

Java llama a la biblioteca dinámica a través de JNI (Java Native Interface). Es necesario escribir primero la declaración de métodos nativos y luego cargar el archivo de biblioteca. El siguiente código muestra el flujo de llamada central, adecuado para la integración en proyectos backend de Java como Spring Boot.

PasoCódigo JavaDescripción
1. Cargar bibliotecaSystem.loadLibrary("smartslim")Cargar DLL/SO
2. Declarar métodosnative long smartslim_init(String key)Declaración de método JNI
3. Inicializarlong handle = smartslim_init("YOUR_LICENSE")Obtener handle de instancia
4. Crear configuraciónlong config = smartslim_create_config("pdf","medium",75)Parámetros de configuración
5. Ejecutar compresiónsmartslim_compress(handle, "in.pdf", "out.pdf", config)Comprimir archivo
6. Liberar recursossmartslim_free_config(config); smartslim_free(handle)Liberar memoria

3. Integración en C# (P-Invoke)

C# llama a la biblioteca dinámica a través de P/Invoke (Platform Invocation Services). Usa el atributo DllImport para declarar funciones externas, adecuado para proyectos .NET/.NET Core. El siguiente código es compatible con plataformas Windows y Linux.

PasoCódigo C#Descripción
1. Declarar función[DllImport("smartslim")] static extern IntPtr smartslim_init(string key)Declaración P-Invoke
2. InicializarIntPtr handle = smartslim_init("YOUR_LICENSE")Obtener handle
3. Crear configuraciónIntPtr config = smartslim_create_config("pdf","medium",75)Parámetros de configuración
4. Ejecutar compresiónsmartslim_compress(handle, "in.pdf", "out.pdf", config)Comprimir archivo
5. Liberar recursossmartslim_free_config(config); smartslim_free(handle)Liberar memoria

4. Optimización de rendimiento y compresión por lotes

La optimización de rendimiento de la integración del SDK se centra en tres dimensiones: concurrencia, memoria y procesamiento por lotes. La siguiente tabla presenta la comparación de efectos de diferentes estrategias de optimización.

Estrategia de optimizaciónTiempo por archivoTiempo total 100 archivosUso de memoriaLicencia aplicable
Un solo hilo en serie0.8s80s50MBTrial (1 concurrencia)
4 hilos concurrentes0.8s22s180MBStandard (4 concurrencias)
8 hilos concurrentes0.8s12s320MBProfessional (8 concurrencias)
16 hilos concurrentes0.8s7s600MBEnterprise (16+ concurrencias)
Modo de compresión por flujos1.2s95s15MBTodas las licencias

Para la compresión por lotes se recomienda usar la interfaz integrada smartslim_compress_batch, pasando la lista de archivos y el número de concurrencia; el SDK usa programación asíncrona de Rust internamente, siendo más eficiente que implementar multihilo en cada lenguaje. A continuación se presentan los datos de rendimiento de una demo de compresión por lotes de 100 archivos PDF.

Cantidad de archivosPromedio por archivoTamaño totalTamaño comprimidoTiempo 8 concurrenciasTasa de compresión
100 PDF15MB1.5GB320MB12s78.7%
100 PNG8MB800MB180MB8s77.5%
100 DOCX5MB500MB120MB6s76.0%
100 MP450MB5GB1.8GB45s64.0%

Si necesitas conocer la comparación de algoritmos subyacentes de las bibliotecas de compresión Rust, puedes consultar la comparación de bibliotecas de compresión Rust: por qué elegir Rust para el motor de compresión. Si necesitas desplegar el servicio de compresión mediante contenedores Docker, puedes consultar la guía de despliegue de servicio de compresión con Docker.

5. Preguntas frecuentes (FAQ)

Q1: ¿Qué lenguajes de programación soporta el SDK de compresión?

SmartSlim SDK exporta bibliotecas dinámicas a través del ABI estándar de C, soportando integración en cuatro lenguajes: Python (ctypes), Java (JNI), C# (P-Invoke) y Rust (FFI). El SDK proporciona bibliotecas precompiladas para 6 plataformas (linux-x64/arm64, macos-universal, windows-x64, etc.), listas para usar sin necesidad de compilación. Otros lenguajes que soportan llamadas C ABI (como Go, Node.js, PHP) también pueden integrarse mediante sus respectivos mecanismos FFI.

Q2: ¿Cuál es el flujo de llamada a la API del SDK de compresión?

El flujo de llamada estándar se divide en cuatro pasos: 1. llamar a smartslim_init para inicializar el SDK y pasar la clave de licencia; 2. llamar a smartslim_create_config para crear la configuración de compresión (especificar formato, nivel y modo de rendimiento); 3. llamar a smartslim_compress para ejecutar la compresión (pasar la ruta del archivo de entrada y salida); 4. llamar a smartslim_free para liberar recursos. La compresión de un único archivo PDF de 100 MB tarda aproximadamente 0,8 segundos, con una latencia de verificación de licencia inferior a 5 ms.

Q3: ¿Cómo implementar la compresión por lotes con el SDK de compresión?

La compresión por lotes se puede implementar de dos formas: primera, llamar en bucle a la interfaz de compresión de archivos individuales, combinada con concurrencia multihilo (Python usa concurrent.futures, Java usa ThreadPoolExecutor); segunda, usar la interfaz de compresión por lotes integrada smartslim_compress_batch, pasando la lista de archivos y el número de concurrencia, con el SDK usando programación asíncrona de Rust internamente. Se recomienda la segunda opción: la licencia Standard soporta 4 concurrencias, Professional 8 y Enterprise 16 o más.

Q4: ¿Qué hacer si hay errores en la integración del SDK de compresión?

Errores comunes y soluciones: 1. UnsatisfiedLinkError (Java) o fallo de carga de DLL — verificar si la ruta de la biblioteca dinámica y la arquitectura del sistema coinciden; 2. fallo de verificación de licencia — comprobar si la clave es correcta y no ha expirado; 3. desbordamiento de memoria — reducir el número de concurrencias o activar el modo de compresión por flujos; 4. formato no soportado — verificar si la versión del SDK soporta el formato objetivo. Se recomienda activar el registro DEBUG para localizar el problema o contactar con el soporte técnico de SmartSlim.

Resumen

SmartSlim SDK implementa a través del ABI estándar de C el principio de escribir una vez, llamar desde múltiples lenguajes, soportando integración en Python/Java/C#/Rust. El flujo de llamada central en cuatro pasos: inicializar, crear configuración, ejecutar compresión, liberar recursos. La compresión de un único archivo PDF de 100 MB tarda 0,8 segundos, y la compresión por lotes de 100 archivos con 8 concurrencias solo 12 segundos. La optimización de rendimiento en tres dimensiones: concurrencia (4–16 hilos), memoria (el modo por flujos reduce el uso un 75%) y procesamiento por lotes (interfaz batch integrada).

Recuerda tres puntos: primero, selecciona la biblioteca precompilada que coincida con la arquitectura del sistema (6 plataformas cubiertas); segundo, para la compresión por lotes usa prioritariamente la interfaz batch integrada en lugar de implementar multihilo propio; tercero, en entornos de producción se recomienda licencia Professional o superior (8 concurrencias), equilibrando rendimiento y coste. Si prefieres la llamada por interfaz HTTP en lugar de la integración del SDK, puedes consultar la guía práctica de llamada a la API de compresión.

¿Necesita comprimir archivos? Pruebe SmartSlim

Construido sobre un motor de compresión Rust propio, compatible con 10 categorías y más de 40 formatos, incluyendo PDF, imágenes, vídeo, Office y OFD, con compresión local que mantiene sus datos en sus instalaciones.