Aller au contenu

SDK Java et exemples REST — TemplateFox

Deux façons d’utiliser l’API TemplateFox depuis Java :

  • SDK (io.github.templatefoxpdf:sdk) — client typé, généré automatiquement depuis notre spécification OpenAPI.
  • REST — le client java.net.http du JDK 11+. Pratique pour limiter les dépendances.

Les exemples de cette page montrent les deux côte à côte.

Maven Central Dépôt GitHub

<dependency>
<groupId>io.github.templatefoxpdf</groupId>
<artifactId>sdk</artifactId>
<version>1.0.0</version>
</dependency>
implementation 'io.github.templatefoxpdf:sdk:1.0.0'

La variante REST n’a besoin que du JDK 11+ (aucune dépendance).

Définissez votre clé API une fois, puis réutilisez le client.

import com.templatefox.sdk.ApiClient;
import com.templatefox.sdk.api.PDFApi;

var client = new ApiClient();
client.setApiKey(System.getenv("TEMPLATEFOX_API_KEY"));

var api = new PDFApi(client);

Seuls template_id et data sont obligatoires ; tous les autres champs sont facultatifs.

import com.templatefox.sdk.model.CreatePdfRequest;

var request = new CreatePdfRequest()
  .templateId("YOUR_TEMPLATE_ID")
  .putDataItem("customer_name",  "John Doe")
  .putDataItem("invoice_number", "INV-001")
  .putDataItem("amount",         "$1,234.56");

var response = api.createPdf(request);

System.out.println(response.getUrl());              // signed URL valid 24h
System.out.println(response.getCreditsRemaining()); // credits left on the team

Tous les paramètres sont détaillés dans Créer un PDF.

import java.io.*;
import java.net.URL;

var response = api.createPdf(request);

try (var in  = new URL(response.getUrl()).openStream();
   var out = new FileOutputStream("invoice.pdf")) {
  in.transferTo(out);
}

Configurez l’intégration S3 une fois dans le tableau de bord, puis passez storeS3(true) dans n’importe quel appel.

import com.templatefox.sdk.model.CreatePdfRequest;

var request = new CreatePdfRequest()
  .templateId("YOUR_TEMPLATE_ID")
  .putDataItem("invoice_number", "INV-001")
  .filename("invoice-001")            // no extension, .pdf appended
  .storeS3(true)                      // upload to your configured bucket
  .s3Filepath("invoices/2026/04/");   // key prefix (optional)
  // .s3Bucket("custom-bucket")       // override bucket from integration

var response = api.createPdf(request);
System.out.println(response.getS3Bucket() + "/" + response.getS3Key());

Pour l’archivage ou les usages juridiques, demandez une variante PDF/A.

import com.templatefox.sdk.model.CreatePdfRequest;

var request = new CreatePdfRequest()
  .templateId("YOUR_TEMPLATE_ID")
  .putDataItem("customer_name", "John Doe")
  .pdfVariant("pdf/a-2b");  // "pdf/a-1b" | "pdf/a-2b" | "pdf/a-3b"

var response = api.createPdf(request);

Pour les gros documents ou les traitements par lots, passez par l’endpoint asynchrone. Le déroulé complet est décrit dans Créer un PDF (asynchrone).

var body = """
{
"template_id":    "YOUR_TEMPLATE_ID",
"data":           { "invoice_number": "INV-001" },
"webhook_url":    "https://example.com/webhooks/pdf",
"webhook_secret": "whk_a1b2c3d4e5f6g7h8i9j0k1l2"
}
""";

var request = HttpRequest.newBuilder()
  .uri(URI.create(BASE_URL + "/v1/pdf/create-async"))
  .header("x-api-key", API_KEY)
  .header("Content-Type", "application/json")
  .POST(HttpRequest.BodyPublishers.ofString(body))
  .build();

var response = CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
// Parse job_id, then poll GET /v1/pdf/jobs/{job_id} or wait for the webhook.

L’exemple ci-dessus appelle l’API REST directement, avec java.net.http.

import com.templatefox.sdk.ApiException;

try {
  var response = api.createPdf(request);
} catch (ApiException e) {
  System.err.println("status=" + e.getCode() + " body=" + e.getResponseBody());
}

La liste complète est dans Codes d’erreur.

ClasseMéthodeEndpoint
PDFApicreatePdfPOST /v1/pdf/create
TemplatesApilistTemplatesGET /v1/templates
TemplatesApigetTemplateFieldsGET /v1/templates/{id}/fields
AccountApigetAccountGET /v1/account
AccountApilistTransactionsGET /v1/account/transactions
IntegrationsApisaveS3ConfigPOST /v1/integrations/s3
IntegrationsApigetS3ConfigGET /v1/integrations/s3
IntegrationsApideleteS3ConfigDELETE /v1/integrations/s3
IntegrationsApitestS3ConnectionPOST /v1/integrations/s3/test

Tous les endpoints REST sont documentés dans la référence API.