Seiten aus einem PDF extrahieren
Erstellen Sie ein neues PDF aus einer Auswahl von Seiten eines vorhandenen PDFs.
Extrahieren Sie eine oder mehrere Seiten aus einem PDF in ein neues Dokument.
Wählen Sie die Seiten mit dem Parameter pages aus. Wird
er weggelassen, werden alle Seiten extrahiert, und das Ergebnis behält sie
immer in der Reihenfolge des Dokuments. Die API ist stateless: Ihr Dokument
wird in der Region verarbeitet und niemals gespeichert.
Endpoint
/v1/extract_pagesIn allen Regionen verfügbar. Hinweise zu Routing und Datenresidenz finden Sie unter Regionen und Datenresidenz.
| Region | URL |
|---|---|
| Global | https://api.pdfblocks.com/v1/extract_pages |
| USA | https://us.api.pdfblocks.com/v1/extract_pages |
| HIPAA USA | https://hipaa.api.pdfblocks.com/v1/extract_pages |
| Europäische Union | https://eu.api.pdfblocks.com/v1/extract_pages |
| Vereinigtes Königreich | https://uk.api.pdfblocks.com/v1/extract_pages |
| Kanada | https://ca.api.pdfblocks.com/v1/extract_pages |
| Australien | https://au.api.pdfblocks.com/v1/extract_pages |
| Japan | https://jp.api.pdfblocks.com/v1/extract_pages |
| Indien | https://in.api.pdfblocks.com/v1/extract_pages |
| Brasilien | https://br.api.pdfblocks.com/v1/extract_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.
pagesstringDie zu extrahierenden Seiten, geschrieben als
Seitenbereich wie 1..3,5. Wird der Parameter
weggelassen, werden alle Seiten extrahiert. Maximal 1.000 Zeichen.
Seiten auswählen
Der Parameter pages nimmt eine durch Kommas getrennte Liste aus 1-basierten
Seitenzahlen und Bereichen entgegen. Er wird als Menge behandelt:
Reihenfolge und Duplikate werden ignoriert, und die extrahierten Seiten bleiben
immer in der Reihenfolge des Dokuments. Um Seiten in eine beliebige Reihenfolge
zu bringen, verwenden Sie stattdessen Seiten neu
anordnen.
| Muster | Wählt aus |
|---|---|
| (weglassen) | Alle Seiten |
1 |
Nur die erste Seite |
1..3,5 |
Die Seiten 1, 2, 3 und 5 |
2.. |
Von Seite 2 bis zur letzten Seite |
..-2 |
Von der ersten bis zur vorletzten Seite |
-1 |
Die letzte Seite |
Siehe Seiten auswählen für die vollständige Referenz.
Beispiele
Extrahieren Sie die Seiten 1 bis 3 und 5 in ein neues PDF:
curl https://api.pdfblocks.com/v1/extract_pages \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F pages='1..3,5' \
-o extracted.pdf# pip install requests
import requests
with open('input.pdf', 'rb') as file:
response = requests.post(
'https://api.pdfblocks.com/v1/extract_pages',
headers={'X-API-Key': 'your_api_key'},
files={'file': file},
data={'pages': '1..3,5'},
)
response.raise_for_status()
with open('extracted.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('pages', '1..3,5');
const response = await fetch('https://api.pdfblocks.com/v1/extract_pages', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('extracted.pdf', Buffer.from(await response.arrayBuffer()));<?php
$ch = curl_init('https://api.pdfblocks.com/v1/extract_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'),
'pages' => '1..3,5',
],
]);
$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
file_put_contents('extracted.pdf', $pdf);
}# gem install http
require 'http'
response = HTTP
.headers('X-API-Key' => 'your_api_key')
.post('https://api.pdfblocks.com/v1/extract_pages', form: {
file: HTTP::FormData::File.new('input.pdf'),
pages: '1..3,5',
})
File.write('extracted.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("pages", "1..3,5")
form.Close()
req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/extract_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("extracted.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..3,5"), "pages" },
};
var response = await client.PostAsync(
"https://api.pdfblocks.com/v1/extract_pages", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
"extracted.pdf", await response.Content.ReadAsByteArrayAsync());Antwort
Bei Erfolg lautet die Antwort 200 OK mit dem extrahierten PDF als
Antworttext:
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 22841Die Ausgabe enthält nur die ausgewählten Seiten, in der Reihenfolge des Dokuments. Schreiben Sie den Antworttext direkt in eine Datei, wie es die Beispiele oben tun; auf unserer Seite wird nichts gespeichert.
Fehler
Fehlgeschlagene Anfragen geben einen Text vom Typ application/problem+json
zurück. Der häufigste Fehler an diesem Endpoint ist 400, der zurückgegeben
wird, wenn pages auf eine Seite verweist, die es im Dokument nicht gibt, oder
wenn file kein lesbares PDF ist. Das Objekt errors benennt jedes Feld:
{
"type": "https://www.pdfblocks.com/docs/api/v1/error/400",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"pages": ["The pages 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 allen Sprachen zu sehen.
Eine einzelne Seite extrahieren
curl https://api.pdfblocks.com/v1/extract_pages \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F pages='1' \
-o page-1.pdfimport requests
with open('input.pdf', 'rb') as file:
response = requests.post(
'https://api.pdfblocks.com/v1/extract_pages',
headers={'X-API-Key': 'your_api_key'},
files={'file': file},
data={'pages': '1'},
)
response.raise_for_status()
with open('page-1.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('pages', '1');
const response = await fetch('https://api.pdfblocks.com/v1/extract_pages', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('page-1.pdf', Buffer.from(await response.arrayBuffer()));<?php
$ch = curl_init('https://api.pdfblocks.com/v1/extract_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'),
'pages' => '1',
],
]);
$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
file_put_contents('page-1.pdf', $pdf);
}require 'http'
response = HTTP
.headers('X-API-Key' => 'your_api_key')
.post('https://api.pdfblocks.com/v1/extract_pages', form: {
file: HTTP::FormData::File.new('input.pdf'),
pages: '1',
})
File.write('page-1.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("pages", "1")
form.Close()
req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/extract_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("page-1.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"), "pages" },
};
var response = await client.PostAsync(
"https://api.pdfblocks.com/v1/extract_pages", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
"page-1.pdf", await response.Content.ReadAsByteArrayAsync());Die letzten drei Seiten extrahieren
curl https://api.pdfblocks.com/v1/extract_pages \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F pages='-3..-1' \
-o last-three.pdfimport requests
with open('input.pdf', 'rb') as file:
response = requests.post(
'https://api.pdfblocks.com/v1/extract_pages',
headers={'X-API-Key': 'your_api_key'},
files={'file': file},
data={'pages': '-3..-1'},
)
response.raise_for_status()
with open('last-three.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('pages', '-3..-1');
const response = await fetch('https://api.pdfblocks.com/v1/extract_pages', {
method: 'POST',
headers: { 'X-API-Key': 'your_api_key' },
body,
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
await writeFile('last-three.pdf', Buffer.from(await response.arrayBuffer()));<?php
$ch = curl_init('https://api.pdfblocks.com/v1/extract_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'),
'pages' => '-3..-1',
],
]);
$pdf = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200) {
file_put_contents('last-three.pdf', $pdf);
}require 'http'
response = HTTP
.headers('X-API-Key' => 'your_api_key')
.post('https://api.pdfblocks.com/v1/extract_pages', form: {
file: HTTP::FormData::File.new('input.pdf'),
pages: '-3..-1',
})
File.write('last-three.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("pages", "-3..-1")
form.Close()
req, _ := http.NewRequest("POST", "https://api.pdfblocks.com/v1/extract_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-three.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"), "pages" },
};
var response = await client.PostAsync(
"https://api.pdfblocks.com/v1/extract_pages", form);
response.EnsureSuccessStatusCode();
await File.WriteAllBytesAsync(
"last-three.pdf", await response.Content.ReadAsByteArrayAsync());