Apposer un filigrane sur certaines pages
Comment limiter un filigrane texte ou image à certaines pages avec le sélecteur pages, et les motifs les plus courants.
Par défaut, un filigrane se pose sur toutes les pages. Le champ pages réduit
cela à un sous-ensemble précis : une page de couverture, une annexe, tout sauf
la première page, pour que vous l’apposiez exactement là où il le faut. Les
actions Ajouter un filigrane
texte et Ajouter un filigrane
image l’acceptent toutes les deux, et il
fonctionne de la même façon sur chaque action qui prend un champ pages.
Le sélecteur pages
pages est une liste, séparée par des virgules, de numéros de page en base 1
et de plages. Elle est traitée comme un ensemble : l’ordre et les doublons
sont ignorés, et le filigrane est toujours apposé dans l’ordre du document.
L’omettre sélectionne toutes les pages. Consultez Sélectionner des
pages pour la syntaxe complète.
| Objectif | Valeur de pages |
|---|---|
| La page de couverture uniquement | 1 |
| Toutes les pages sauf la première | 2.. |
| Toutes les pages sauf la dernière | ..-2 |
| La dernière page uniquement | -1 |
| Une annexe à partir de la page 8 | 8.. |
| Un ensemble précis de pages | 1..3,5 |
| Les trois dernières pages | -3..-1 |
Apposer un filigrane sur toutes les pages sauf la couverture
Une demande fréquente : une mention de confidentialité répétée sur le corps
d’un document, mais pas sur la page de titre. Sélectionnez pages=2.., soit de
la page 2 à la dernière page.
curl https://api.pdfblocks.com/v1/add_text_watermark \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F line_1='CONFIDENTIAL' \
-F pages='2..' \
-o watermarked.pdf# pip install requests
import requests
with open('input.pdf', 'rb') as file:
response = requests.post(
'https://api.pdfblocks.com/v1/add_text_watermark',
headers={'X-API-Key': 'your_api_key'},
files={'file': file},
data={'line_1': 'CONFIDENTIAL', 'pages': '2..'},
)
response.raise_for_status()
with open('watermarked.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');
body.set('line_1', 'CONFIDENTIAL');
body.set('pages', '2..');
const response = await fetch('https://api.pdfblocks.com/v1/add_text_watermark', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('watermarked.pdf', Buffer.from(await response.arrayBuffer()));<?php
$ch = curl_init('https://api.pdfblocks.com/v1/add_text_watermark');
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'),
'line_1' => 'CONFIDENTIAL',
'pages' => '2..',
],
]);
$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
file_put_contents('watermarked.pdf', $pdf);
}# gem install http
require 'http'
response = HTTP
.headers('X-API-Key' => 'your_api_key')
.post('https://api.pdfblocks.com/v1/add_text_watermark', form: {
file: HTTP::FormData::File.new('input.pdf'),
line_1: 'CONFIDENTIAL',
pages: '2..',
})
File.write('watermarked.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.WriteField("line_1", "CONFIDENTIAL")
form.WriteField("pages", "2..")
form.Close()
req, _ := http.NewRequest("POST",
"https://api.pdfblocks.com/v1/add_text_watermark", &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("watermarked.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" },
{ new StringContent("CONFIDENTIAL"), "line_1" },
{ new StringContent("2.."), "pages" },
};
var response = await client.PostAsync(
"https://api.pdfblocks.com/v1/add_text_watermark", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
"watermarked.pdf", await response.Content.ReadAsByteArrayAsync());Autres motifs de ciblage
La seule chose qui change d’un exemple à l’autre est la valeur de pages.
Chaque extrait écrit dans un fichier de sortie différent.
# pages=1: stamp just the title page.
curl https://api.pdfblocks.com/v1/add_text_watermark \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F line_1='DRAFT' \
-F pages='1' \
-o cover.pdf# pages=..-2: the first page through the second-to-last.
curl https://api.pdfblocks.com/v1/add_text_watermark \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F line_1='DO NOT DISTRIBUTE' \
-F pages='..-2' \
-o body.pdf# pages=8..: page 8 to the end.
curl https://api.pdfblocks.com/v1/add_text_watermark \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F line_1='APPENDIX' \
-F pages='8..' \
-o appendix.pdf# pages=1..3,5: pages 1, 2, 3, and 5.
curl https://api.pdfblocks.com/v1/add_text_watermark \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F line_1='REVIEW COPY' \
-F pages='1..3,5' \
-o review.pdfLes filigranes image se ciblent de la même façon
Un filigrane image utilise un champ pages identique : passez un PNG ou un
JPEG dans le champ image à côté de file. Ceci appose un logo sur la page de
couverture uniquement :
curl https://api.pdfblocks.com/v1/add_image_watermark \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F image=@logo.png \
-F pages='1' \
-o watermarked.pdf# pip install requests
import requests
with open('input.pdf', 'rb') as file, open('logo.png', 'rb') as image:
response = requests.post(
'https://api.pdfblocks.com/v1/add_image_watermark',
headers={'X-API-Key': 'your_api_key'},
files={'file': file, 'image': image},
data={'pages': '1'},
)
response.raise_for_status()
with open('watermarked.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');
body.set('image', new Blob([await readFile('logo.png')]), 'logo.png');
body.set('pages', '1');
const response = await fetch('https://api.pdfblocks.com/v1/add_image_watermark', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('watermarked.pdf', Buffer.from(await response.arrayBuffer()));Le même sélecteur pages pilote aussi les actions orientées pages :
Extraire des pages d’un PDF, Supprimer
des pages d’un PDF et Faire pivoter des
pages d’un PDF le lisent toutes de la même
façon. Apprenez-le une fois, réutilisez-le partout.