Guide d'intégration du SDK de compression : appels multilangues Python/Java/C#

Conclusion d'abord : le SDK SmartSlim exporte une bibliothèque dynamique via l'ABI C standard, prenant en charge l'intégration en quatre langages (Python/Java/C#/Rust). Le flux d'appel principal se déroule en quatre étapes — initialisation du SDK, création de la configuration de compression, exécution de la compression, libération des ressources. La compression d'un PDF de 100 Mo prend environ 0,8 seconde, la latence de vérification de licence est inférieure à 5 ms. Cet article fournit des exemples de code d'intégration complets en trois langages, des tableaux de paramètres API et des solutions d'optimisation des performances, avec une démo de compression par lot. Commençons par l'architecture du SDK, puis détaillons les méthodes d'intégration pour chaque langage.

Si vous devez appeler le service de compression via une interface HTTP plutôt que par intégration SDK, nous vous recommandons de lire d'abord Guide pratique de l'API de compression : documentation détaillée de l'interface RESTful

I. Architecture du SDK et principe d'intégration

Le SDK SmartSlim repose sur un moteur de compression en Rust, exporté sous forme de bibliothèque dynamique (.so/.dylib/.dll) via l'ABI C standard (Application Binary Interface). Tout langage prenant en charge FFI (Foreign Function Interface) peut charger et appeler cette bibliothèque. L'avantage de cette architecture est le suivant : le moteur principal est écrit une fois en Rust, puis la même bibliothèque binaire est réutilisée par plusieurs langages, sans réimplémenter la logique de compression dans chaque langage.

ComposantTechnologieRôleSortie
Moteur de compressionRustExécute l'algorithme de compressionBibliothèque statique .a/.lib
Couche d'export ABIRust #[no_mangle]Exporte des fonctions compatibles CBibliothèque dynamique .so/.dylib/.dll
Couche de liaison de langageFFI de chaque langageEncapsule les appels natifsPaquet/bibliothèque de chaque langage
Module de licenceRust + chiffrementVérifie la clé de licenceIntégré dans la bibliothèque dynamique
Gestion de configurationRust structGestion des paramètres de compressionConfiguration JSON/TOML

Le SDK fournit des bibliothèques précompilées pour 6 plateformes, couvrant les systèmes d'exploitation et architectures CPU les plus courants, prêtes à l'emploi sans avoir à compiler le code Rust soi-même.

PlateformeBibliothèque dynamiqueSystème d'exploitationArchitecture CPUCas d'usage
linux-x64libsmartslim.soLinuxx86_64Serveur/bureau
linux-arm64libsmartslim.soLinuxaarch64Serveur ARM/Raspberry Pi
macos-universallibsmartslim.dylibmacOSx86_64+arm64Intel+Apple Silicon
windows-x64smartslim.dllWindowsx86_64Windows bureau/serveur
linux-server-x64libsmartslim.soLinuxx86_64Version optimisée serveur
linux-server-arm64libsmartslim.soLinuxaarch64ARMVersion optimisée serveur

II. Détail des paramètres de l'API principale

L'API principale du SDK se divise en quatre catégories : initialisation, configuration, compression et libération. Le tableau ci-dessous liste les principales fonctions API et leurs paramètres.

Fonction APIParamètresValeur de retourDescription
smartslim_initlicense_key: Stringhandle: HandleInitialise le SDK, vérifie la licence
smartslim_create_configformat, level, qualityconfig: ConfigHandleCrée la configuration de compression
smartslim_compresshandle, input, output, configresult: ResultCodeExécute la compression d'un seul fichier
smartslim_compress_batchhandle, files[], config, workersresults[]: ResultCodeCompression par lot (multi-concurrent)
smartslim_get_infohandle, filepathFileInfo: structObtient les informations de compression du fichier
smartslim_free_configconfig: ConfigHandlevoidLibère les ressources de configuration
smartslim_freehandle: HandlevoidLibère l'instance du SDK

Les paramètres de configuration de compression prennent en charge 4 niveaux de compression (low/medium/high/ultra) x 15 scénarios x 5 profils de performance (ultrafast/fast/balanced/quality/optimal), soit 300 combinaisons au total, couvrant pratiquement tous les besoins de compression.

ParamètresValeurs possiblesValeur par défautDescription
formatpdf/image/video/office/ofdDétection automatiqueType de fichier
levellow/medium/high/ultramediumNiveau de compression
quality1-10075Facteur de qualité (image/PDF)
performanceultrafast/fast/balanced/quality/optimalbalancedProfil de performance
workers1-164Nombre de threads concurrents
securityDISABLED/LOW/MEDIUM/HIGH/MAXIMUMMEDIUMNiveau de sécurité

III. Exemples de code d'intégration en trois langages

Voici des exemples d'intégration complets en Python, Java et C#, tous basés sur la compression d'un seul fichier PDF.

1. Intégration Python (ctypes)

Python charge la bibliothèque dynamique via le module ctypes et appelle les fonctions exportées. Le code ci-dessous implémente le flux complet : initialisation du SDK, création de la configuration, compression du PDF et libération des ressources. La compression d'un PDF de 100 Mo prend environ 0,8 seconde.

ÉtapeCode PythonDescription
1. Charger la bibliothèquelib = ctypes.CDLL('./libsmartslim.so')Charge la bibliothèque dynamique
2. Initialiserhandle = lib.smartslim_init(b"YOUR_LICENSE")Transmet la clé de licence
3. Créer la configurationconfig = lib.smartslim_create_config(b"pdf", b"medium", 75)PDF/medium/q75
4. Exécuter la compressionlib.smartslim_compress(handle, b"in.pdf", b"out.pdf", config)Compresse le fichier
5. Libérer les ressourceslib.smartslim_free_config(config); lib.smartslim_free(handle)Libère la mémoire

2. Intégration Java (JNI)

Java appelle la bibliothèque dynamique via JNI (Java Native Interface). Il faut d'abord déclarer les méthodes native, puis charger le fichier de bibliothèque. Le code ci-dessous présente le flux d'appel principal, adapté à l'intégration dans des projets backend Java tels que Spring Boot.

ÉtapeCode JavaDescription
1. Charger la bibliothèqueSystem.loadLibrary("smartslim")Charge la DLL/SO
2. Déclarer la méthodenative long smartslim_init(String key)Déclaration de méthode JNI
3. Initialiserlong handle = smartslim_init("YOUR_LICENSE")Obtient le handle d'instance
4. Créer la configurationlong config = smartslim_create_config("pdf","medium",75)Paramètres de configuration
5. Exécuter la compressionsmartslim_compress(handle, "in.pdf", "out.pdf", config)Compresse le fichier
6. Libérer les ressourcessmartslim_free_config(config); smartslim_free(handle)Libère la mémoire

3. Intégration C# (P-Invoke)

C# appelle la bibliothèque dynamique via P/Invoke (Platform Invocation Services). L'attribut DllImport est utilisé pour déclarer les fonctions externes, adapté aux projets .NET/.NET Core. Le code ci-dessous est compatible avec les plateformes Windows et Linux.

ÉtapeCode C#Description
1. Déclarer la fonction[DllImport("smartslim")] static extern IntPtr smartslim_init(string key)Déclaration P-Invoke
2. InitialiserIntPtr handle = smartslim_init("YOUR_LICENSE")Obtient le handle
3. Créer la configurationIntPtr config = smartslim_create_config("pdf","medium",75)Paramètres de configuration
4. Exécuter la compressionsmartslim_compress(handle, "in.pdf", "out.pdf", config)Compresse le fichier
5. Libérer les ressourcessmartslim_free_config(config); smartslim_free(handle)Libère la mémoire

IV. Optimisation des performances et compression par lot

L'optimisation des performances de l'intégration du SDK s'articule autour de trois dimensions : concurrence, mémoire et traitement par lot. Le tableau ci-dessous compare les effets des différentes stratégies d'optimisation.

Stratégie d'optimisationTemps par fichierTemps total pour 100 fichiersOccupation mémoireLicence requise
Série mono-thread0,8 s80 s50 MoTrial (1 concurrent)
4 threads concurrents0,8 s22 s180 MoStandard (4 concurrents)
8 threads concurrents0,8 s12 s320 MoProfessional (8 concurrents)
16 threads concurrents0,8 s7 s600 MoEnterprise (16+ concurrents)
Mode de compression en flux1,2 s95 s15 MoToutes les licences

Pour la compression par lot, il est recommandé d'utiliser l'interface intégrée smartslim_compress_batch du SDK, en transmettant la liste de fichiers et le nombre de concurrents. Le SDK utilise en interne l'ordonnancement de tâches asynchrones Rust, plus efficace que l'implémentation multithread dans chaque langage. Voici les données de performance d'une démo de compression par lot de 100 fichiers PDF.

Nombre de fichiersMoyenne par fichierVolume totalVolume après compressionTemps (8 concurrents)Taux de compression
100 PDF15 Mo1,5 Go320 Mo12 s78,7 %
100 PNG8 Mo800 Mo180 Mo8 s77,5 %
100 DOCX5 Mo500 Mo120 Mo6 s76,0 %
100 MP450 Mo5 Go1,8 Go45 s64,0 %

Si vous souhaitez comparer les algorithmes sous-jacents des bibliothèques de compression Rust, vous pouvez consulter Comparaison des bibliothèques de compression Rust : pourquoi choisir Rust pour écrire un moteur de compression. Si vous avez besoin de déployer le service de compression en conteneur via Docker, vous pouvez consulter Déploiement Docker du service de compression

V. FAQ

Q1:Quels langages de programmation le SDK de compression prend-il en charge ?

Le SDK SmartSlim exporte une bibliothèque dynamique via l'ABI C standard, prenant en charge l'intégration en quatre langages : Python (ctypes), Java (JNI), C# (P-Invoke) et Rust (FFI). Le SDK fournit des bibliothèques précompilées pour 6 plateformes (linux-x64/arm64, macos-universal, windows-x64, etc.), prêtes à l'emploi sans compilation. D'autres langages prenant en charge les appels ABI C (comme Go, Node.js, PHP) peuvent également être intégrés via leurs propres mécanismes FFI.

Q2:Quel est le flux d'appel de l'API du SDK de compression ?

Le flux d'appel standard se déroule en quatre étapes : 1. appeler smartslim_init pour initialiser le SDK et transmettre la clé de licence ; 2. appeler smartslim_create_config pour créer la configuration de compression (format, niveau, profil de performance) ; 3. appeler smartslim_compress pour exécuter la compression (chemin d'entrée et chemin de sortie) ; 4. appeler smartslim_free pour libérer les ressources. La compression d'un PDF de 100 Mo prend environ 0,8 seconde, la latence de vérification de licence est inférieure à 5 ms.

Q3:Comment implémenter la compression par lot avec le SDK de compression ?

La compression par lot propose deux méthodes : premièrement, appeler en boucle l'interface de compression monofichier avec concurrence multithread (Python utilise concurrent.futures, Java utilise ThreadPoolExecutor) ; deuxièmement, utiliser l'interface de compression par lot intégrée au SDK smartslim_compress_batch, en transmettant la liste de fichiers et le nombre de concurrents, le SDK utilisant en interne l'ordonnancement de tâches asynchrones Rust. La deuxième méthode est recommandée : la licence Standard prend en charge 4 concurrents, Professional 8 concurrents, Enterprise 16 concurrents et plus.

Q4:Que faire en cas d'erreur d'intégration du SDK de compression ?

Erreurs courantes et solutions : 1. UnsatisfiedLinkError (Java) ou échec de chargement DLL — vérifier que le chemin de la bibliothèque dynamique correspond à l'architecture système ; 2. échec de vérification de licence — vérifier si la clé de licence est correcte et non expirée ; 3. débordement mémoire — réduire le nombre de concurrents ou activer le mode de compression en flux ; 4. format non pris en charge — vérifier si la version du SDK prend en charge le format cible. Il est recommandé d'activer les journaux DEBUG pour localiser le problème ou de contacter le support technique SmartSlim.

Conclusion

Le SDK SmartSlim implémente, via l'ABI C standard, le principe « écrire une fois, appeler depuis plusieurs langages », prenant en charge l'intégration en quatre langages : Python/Java/C#/Rust. Le flux d'appel principal se déroule en quatre étapes : initialisation, création de la configuration, exécution de la compression, libération des ressources. La compression d'un PDF de 100 Mo prend 0,8 seconde, la compression par lot de 100 fichiers avec 8 concurrents ne prend que 12 secondes. L'optimisation des performances s'articule autour de trois dimensions : concurrence (4 à 16 threads), mémoire (le mode flux réduit l'occupation de 75 %), traitement par lot (interface batch intégrée).

Retenez trois points : premièrement, choisissez la bibliothèque précompilée correspondant à l'architecture de votre système (6 plateformes couvertes) ; deuxièmement, pour la compression par lot, utilisez prioritairement l'interface batch intégrée plutôt que d'implémenter votre propre multithreading ; troisièmement, en production, une licence Professional ou supérieure (8 concurrents) est recommandée pour équilibrer performance et coût. Si vous préférez les appels via interface HTTP plutôt que l'intégration SDK, consultez le guide pratique de l'API de compression.

Besoin de compresser des fichiers ? Essayez SmartSlim

Construit sur un moteur de compression Rust auto-développé, prenant en charge 10 catégories et plus de 40 formats, dont PDF, images, vidéo, Office et OFD, avec une compression locale qui garde vos données sur place.