Die Seiten eines PDFs neu anordnen
Ordnen Sie die Seiten eines PDFs genau in der von Ihnen angegebenen Reihenfolge an: Eine Wiederholung dupliziert eine Seite, eine Auslassung verwirft sie.
Ordnen Sie die Seiten eines PDFs mit dem Parameter
page_order in einer beliebigen Reihenfolge neu an. Da
page_order die geordnete Seitensyntax verwendet,
dient diese Aktion zugleich als kombiniertes Extrahieren und Neuanordnen:
ausgelassene Seiten werden verworfen, und eine zweimal aufgeführte Seite wird
wiederholt. Die API ist stateless: Ihr Dokument wird in der Region verarbeitet
und niemals gespeichert.
Endpoint
/v1/reorder_pagesIn allen Regionen verfügbar. Hinweise zu Routing und Datenresidenz finden Sie unter Regionen und Datenresidenz.
| Region | URL |
|---|---|
| Global | https://api.pdfblocks.com/v1/reorder_pages |
| USA | https://us.api.pdfblocks.com/v1/reorder_pages |
| HIPAA USA | https://hipaa.api.pdfblocks.com/v1/reorder_pages |
| Europäische Union | https://eu.api.pdfblocks.com/v1/reorder_pages |
| Vereinigtes Königreich | https://uk.api.pdfblocks.com/v1/reorder_pages |
| Kanada | https://ca.api.pdfblocks.com/v1/reorder_pages |
| Australien | https://au.api.pdfblocks.com/v1/reorder_pages |
| Japan | https://jp.api.pdfblocks.com/v1/reorder_pages |
| Indien | https://in.api.pdfblocks.com/v1/reorder_pages |
| Brasilien | https://br.api.pdfblocks.com/v1/reorder_pages |
Authentifizierung
Authentifizieren Sie jede Anfrage mit Ihrem geheimen API-Schlüssel im Header
X-API-Key, über HTTPS. Schlüssel erstellen und verwalten Sie im
Dashboard. Einzelheiten finden Sie unter
Authentifizierung.
Anfrage
Der Endpoint nimmt einen Anfragetext vom Typ multipart/form-data entgegen.
filefilerequiredDas PDF-Eingabedokument.
page_orderstringrequiredDie gewünschte Seitenreihenfolge, geschrieben in der geordneten
Seitensyntax, zum Beispiel 3,1,2. Ausgelassene Seiten
werden verworfen, und eine mehrfach aufgeführte Seite wird wiederholt.
Maximal 1.000 Zeichen.
Seitenreihenfolge
page_order wird als geordnete Liste gelesen, nicht als Menge: Die Seiten
kommen genau so heraus, wie sie aufgeführt sind. Eine zweimal genannte Seite
wird zweimal ausgegeben, und jede Seite, die Sie auslassen, wird verworfen. Ein
Bereich darf sogar rückwärts laufen: 10..5 geht von Seite 10 hinunter bis
Seite 5.
Die Nummerierung beginnt bei 1, und ein negativer Index zählt vom Ende her: -1
ist also die letzte Seite.
page_order |
Ergebnis |
|---|---|
3,1,2 |
Die Seiten 3, 1, dann 2 |
2.. |
Seite 2 bis zur letzten Seite, der Reihe nach |
-1,1..-2 |
Die letzte Seite, dann alle Seiten davor |
1,1,2.. |
Seite 1 zweimal, dann ab Seite 2 |
10..5 |
Die Seiten 10 bis 5, in umgekehrter Reihenfolge |
Siehe Seiten auswählen für die vollständige
Referenz, einschließlich der Frage, wie sich das geordnete page_order vom
mengenbasierten Feld pages unterscheidet.
Beispiele
Setzen Sie Seite 3 an den Anfang, dann die Seiten 1 und 2:
curl https://api.pdfblocks.com/v1/reorder_pages \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F page_order='3,1,2' \
-o reordered.pdf# pip install requests
import requests
with open('input.pdf', 'rb') as file:
response = requests.post(
'https://api.pdfblocks.com/v1/reorder_pages',
headers={'X-API-Key': 'your_api_key'},
files={'file': file},
data={'page_order': '3,1,2'},
)
response.raise_for_status()
with open('reordered.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('page_order', '3,1,2');
const response = await fetch('https://api.pdfblocks.com/v1/reorder_pages', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('reordered.pdf', Buffer.from(await response.arrayBuffer()));<?php
$ch = curl_init('https://api.pdfblocks.com/v1/reorder_pages');
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'),
'page_order' => '3,1,2',
],
]);
$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
file_put_contents('reordered.pdf', $pdf);
}# gem install http
require 'http'
response = HTTP
.headers('X-API-Key' => 'your_api_key')
.post('https://api.pdfblocks.com/v1/reorder_pages', form: {
file: HTTP::FormData::File.new('input.pdf'),
page_order: '3,1,2',
})
File.write('reordered.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("page_order", "3,1,2")
form.Close()
req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/reorder_pages", &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("reordered.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("3,1,2"), "page_order" },
};
var response = await client.PostAsync(
"https://api.pdfblocks.com/v1/reorder_pages", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
"reordered.pdf", await response.Content.ReadAsByteArrayAsync());Antwort
Bei Erfolg lautet die Antwort 200 OK, mit dem neu angeordneten PDF als
Antworttext:
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 39184Schreiben Sie den Antworttext direkt in eine Datei, wie es die Beispiele oben tun; bei uns wird nichts gespeichert.
Fehler
Fehlgeschlagene Anfragen liefern einen Antworttext vom Typ
application/problem+json. Am häufigsten ist bei diesem Endpoint der Status 400,
der zurückgegeben wird, wenn page_order fehlerhaft ist oder eine Seite nennt,
die es im Dokument nicht gibt. Das Objekt errors benennt das betroffene Feld:
{
"type": "https://www.pdfblocks.com/docs/api/v1/error/400",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"page_order": ["The page_order field references a page that does not exist in the document."]
}
}Ein fehlender oder ungültiger X-API-Key gibt einen 401 zurück. Alle
Statuscodes und die vollständige Form der Antwort finden Sie unter
Fehler.
Rezepte
Häufige Varianten. Klappen Sie eine auf, um sie in jeder Sprache zu sehen.
Die letzte Seite nach vorn verschieben
curl https://api.pdfblocks.com/v1/reorder_pages \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F page_order='-1,1..-2' \
-o last-first.pdfimport requests
with open('input.pdf', 'rb') as file:
response = requests.post(
'https://api.pdfblocks.com/v1/reorder_pages',
headers={'X-API-Key': 'your_api_key'},
files={'file': file},
data={'page_order': '-1,1..-2'},
)
response.raise_for_status()
with open('last-first.pdf', 'wb') as output:
output.write(response.content)import { readFile, writeFile } from 'node:fs/promises';
const body = new FormData();
body.set('file', new Blob([await readFile('input.pdf')]), 'input.pdf');
body.set('page_order', '-1,1..-2');
const response = await fetch('https://api.pdfblocks.com/v1/reorder_pages', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('last-first.pdf', Buffer.from(await response.arrayBuffer()));<?php
$ch = curl_init('https://api.pdfblocks.com/v1/reorder_pages');
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'),
'page_order' => '-1,1..-2',
],
]);
$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
file_put_contents('last-first.pdf', $pdf);
}require 'http'
response = HTTP
.headers('X-API-Key' => 'your_api_key')
.post('https://api.pdfblocks.com/v1/reorder_pages', form: {
file: HTTP::FormData::File.new('input.pdf'),
page_order: '-1,1..-2',
})
File.write('last-first.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("page_order", "-1,1..-2")
form.Close()
req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/reorder_pages", &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("last-first.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("-1,1..-2"), "page_order" },
};
var response = await client.PostAsync(
"https://api.pdfblocks.com/v1/reorder_pages", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
"last-first.pdf", await response.Content.ReadAsByteArrayAsync());Das Deckblatt duplizieren
curl https://api.pdfblocks.com/v1/reorder_pages \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F page_order='1,1..-1' \
-o doubled-cover.pdfimport requests
with open('input.pdf', 'rb') as file:
response = requests.post(
'https://api.pdfblocks.com/v1/reorder_pages',
headers={'X-API-Key': 'your_api_key'},
files={'file': file},
data={'page_order': '1,1..-1'},
)
response.raise_for_status()
with open('doubled-cover.pdf', 'wb') as output:
output.write(response.content)import { readFile, writeFile } from 'node:fs/promises';
const body = new FormData();
body.set('file', new Blob([await readFile('input.pdf')]), 'input.pdf');
body.set('page_order', '1,1..-1');
const response = await fetch('https://api.pdfblocks.com/v1/reorder_pages', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('doubled-cover.pdf', Buffer.from(await response.arrayBuffer()));<?php
$ch = curl_init('https://api.pdfblocks.com/v1/reorder_pages');
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'),
'page_order' => '1,1..-1',
],
]);
$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
file_put_contents('doubled-cover.pdf', $pdf);
}require 'http'
response = HTTP
.headers('X-API-Key' => 'your_api_key')
.post('https://api.pdfblocks.com/v1/reorder_pages', form: {
file: HTTP::FormData::File.new('input.pdf'),
page_order: '1,1..-1',
})
File.write('doubled-cover.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("page_order", "1,1..-1")
form.Close()
req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/reorder_pages", &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("doubled-cover.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("1,1..-1"), "page_order" },
};
var response = await client.PostAsync(
"https://api.pdfblocks.com/v1/reorder_pages", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
"doubled-cover.pdf", await response.Content.ReadAsByteArrayAsync());