PDF Blocks
TarifsSupport
Commencer gratuitement
Ouvrir la page

Supprimer le mot de passe d’un PDF

Déchiffrez un PDF protégé par mot de passe pour qu’il n’exige plus de mot de passe à l’ouverture.

Supprimez le mot de passe d’un PDF chiffré. Fournissez le mot de passe qui ouvre actuellement le fichier et récupérez un document qui s’ouvre sans mot de passe. L’API est stateless : votre document est traité dans la région et n’est jamais stocké.

Endpoint

POST
/v1/remove_password

Disponible 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_password
États-Unis https://us.api.pdfblocks.com/v1/remove_password
HIPAA États-Unis https://hipaa.api.pdfblocks.com/v1/remove_password
Union européenne https://eu.api.pdfblocks.com/v1/remove_password
Royaume-Uni https://uk.api.pdfblocks.com/v1/remove_password
Canada https://ca.api.pdfblocks.com/v1/remove_password
Australie https://au.api.pdfblocks.com/v1/remove_password
Japon https://jp.api.pdfblocks.com/v1/remove_password
Inde https://in.api.pdfblocks.com/v1/remove_password
Brésil https://br.api.pdfblocks.com/v1/remove_password

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.

filefilerequired

Le document PDF chiffré d’entrée.

passwordstringrequired

Le mot de passe qui ouvre actuellement le fichier. Maximum 256 caractères.

Supprimer le mot de passe suppose de le connaître : fournissez le mot de passe qui ouvre actuellement le document. Il n’existe aucune voie de récupération ni d’attaque par force brute.

Exemples

Supprimez le mot de passe d’un PDF chiffré :

cURLbash
curl https://api.pdfblocks.com/v1/remove_password \
  -H 'X-API-Key: your_api_key' \
  -F file=@input.pdf \
  -F password='0pen-Sesame' \
  -o unlocked.pdf
Pythonpython
# pip install requests
import requests

with open('input.pdf', 'rb') as file:
    response = requests.post(
        'https://api.pdfblocks.com/v1/remove_password',
        headers={'X-API-Key': 'your_api_key'},
        files={'file': file},
        data={'password': '0pen-Sesame'},
    )

response.raise_for_status()
with open('unlocked.pdf', 'wb') as output:
    output.write(response.content)
Node.jsjavascript
// 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');
body.set('password', '0pen-Sesame');

const response = await fetch('https://api.pdfblocks.com/v1/remove_password', {
  method: 'POST',
  headers: { 'X-API-Key': 'your_api_key' },
  body,
});

if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('unlocked.pdf', Buffer.from(await response.arrayBuffer()));
PHPphp
<?php
$ch = curl_init('https://api.pdfblocks.com/v1/remove_password');
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'),
        'password' => '0pen-Sesame',
    ],
]);

$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
    file_put_contents('unlocked.pdf', $pdf);
}
Rubyruby
# gem install http
require 'http'

response = HTTP
  .headers('X-API-Key' => 'your_api_key')
  .post('https://api.pdfblocks.com/v1/remove_password', form: {
    file: HTTP::FormData::File.new('input.pdf'),
    password: '0pen-Sesame',
  })

File.write('unlocked.pdf', response.body) if response.status.success?
Gogo
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.WriteField("password", "0pen-Sesame")
	form.Close()

	req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/remove_password", &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("unlocked.pdf")
	defer out.Close()
	io.Copy(out, res.Body)
}
C#csharp
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" },
    { new StringContent("0pen-Sesame"), "password" },
};

var response = await client.PostAsync(
    "https://api.pdfblocks.com/v1/remove_password", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
    "unlocked.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 déchiffré :

HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 48213

Le document de sortie n’exige plus de mot de passe à l’ouverture : 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 le password fourni n’ouvre pas le fichier. 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": {
    "password": ["The password is incorrect."]
  }
}

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.

Actions associées