Supprimer les signatures d’un PDF
Supprimez les signatures cryptographiques et les horodatages d’un document PDF.
Supprimez les signatures cryptographiques et les horodatages d’un document PDF. Une signature numérique scelle un document et certifie qui l’a signé et que rien n’a changé depuis : toute modification ultérieure, comme une fusion, l’apposition d’un filigrane ou une repagination, romprait ce sceau et invaliderait la signature. Supprimer d’abord les signatures et les horodatages permet de retraiter proprement un document signé ; le contenu des pages reste intact. L’API est stateless : votre document est traité dans la région et n’est jamais stocké.
Endpoint
/v1/remove_signaturesDisponible dans toutes les régions. Consultez Régions et résidence des données pour le routage et la résidence des données.
| Région | URL |
|---|---|
| Global | https://api.pdfblocks.com/v1/remove_signatures |
| États-Unis | https://us.api.pdfblocks.com/v1/remove_signatures |
| HIPAA États-Unis | https://hipaa.api.pdfblocks.com/v1/remove_signatures |
| Union européenne | https://eu.api.pdfblocks.com/v1/remove_signatures |
| Royaume-Uni | https://uk.api.pdfblocks.com/v1/remove_signatures |
| Canada | https://ca.api.pdfblocks.com/v1/remove_signatures |
| Australie | https://au.api.pdfblocks.com/v1/remove_signatures |
| Japon | https://jp.api.pdfblocks.com/v1/remove_signatures |
| Inde | https://in.api.pdfblocks.com/v1/remove_signatures |
| Brésil | https://br.api.pdfblocks.com/v1/remove_signatures |
Authentification
Authentifiez chaque requête avec votre clé d’API secrète dans l’en-tête
X-API-Key, en HTTPS. Créez et gérez vos clés depuis le
dashboard. Consultez
Authentification pour plus de détails.
Requête
L’endpoint accepte un corps de requête multipart/form-data.
filefilerequiredLe document PDF d’entrée.
Exemples
Supprimez les signatures et les horodatages d’un PDF signé :
curl https://api.pdfblocks.com/v1/remove_signatures \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-o unsigned.pdf# pip install requests
import requests
with open('input.pdf', 'rb') as file:
response = requests.post(
'https://api.pdfblocks.com/v1/remove_signatures',
headers={'X-API-Key': 'your_api_key'},
files={'file': file},
)
response.raise_for_status()
with open('unsigned.pdf', 'wb') as output:
output.write(response.content)// Node.js 18+
import { readFile, writeFile } from 'node:fs/promises';
const body = new FormData();
body.set('file', new Blob([await readFile('input.pdf')]), 'input.pdf');
const response = await fetch('https://api.pdfblocks.com/v1/remove_signatures', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('unsigned.pdf', Buffer.from(await response.arrayBuffer()));<?php
$ch = curl_init('https://api.pdfblocks.com/v1/remove_signatures');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: your_api_key'],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'file' => new CURLFile('input.pdf', 'application/pdf'),
],
]);
$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
file_put_contents('unsigned.pdf', $pdf);
}# gem install http
require 'http'
response = HTTP
.headers('X-API-Key' => 'your_api_key')
.post('https://api.pdfblocks.com/v1/remove_signatures', form: {
file: HTTP::FormData::File.new('input.pdf'),
})
File.write('unsigned.pdf', response.body) if response.status.success?package main
import (
"bytes"
"io"
"mime/multipart"
"net/http"
"os"
)
func main() {
var buf bytes.Buffer
form := multipart.NewWriter(&buf)
file, _ := os.Open("input.pdf")
defer file.Close()
part, _ := form.CreateFormFile("file", "input.pdf")
io.Copy(part, file)
form.Close()
req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/remove_signatures", &buf)
req.Header.Set("Content-Type", form.FormDataContentType())
req.Header.Set("X-API-Key", "your_api_key")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
out, _ := os.Create("unsigned.pdf")
defer out.Close()
io.Copy(out, res.Body)
}using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "your_api_key");
using var form = new MultipartFormDataContent
{
{ new ByteArrayContent(File.ReadAllBytes("input.pdf")), "file", "input.pdf" },
};
var response = await client.PostAsync(
"https://api.pdfblocks.com/v1/remove_signatures", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
"unsigned.pdf", await response.Content.ReadAsByteArrayAsync());Réponse
En cas de succès, la réponse est un 200 OK dont le corps contient le PDF :
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 48213La sortie est le même document, chaque signature et chaque horodatage supprimés : ses pages et son contenu sont inchangés. Écrivez le corps directement dans un fichier, comme le font les exemples ci-dessus ; rien n’est stocké de notre côté.
Erreurs
Les requêtes en échec renvoient un corps application/problem+json. La plus
courante pour cet endpoint est une 400, renvoyée lorsque file n’est pas un
PDF lisible. L’objet errors nomme chaque champ :
{
"type": "https://www.pdfblocks.com/docs/api/v1/error/400",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"file": ["Could not parse the PDF document. The file may be invalid or corrupt."]
}
}Une X-API-Key manquante ou invalide renvoie une 401. Consultez
Erreurs pour tous les codes de statut et la forme complète
de la réponse.