Documentação da API Web2PDF
A API Web2PDF permite que você gere PDFs, relatórios personalizados e gráficos dinâmicos com uma simples requisição HTTP. Selecione um método na barra lateral para ver detalhes e exemplos.
Introdução
A API Web2PDF permite que você converta qualquer página web em um documento PDF de alta qualidade com uma simples requisição HTTP. Esta documentação explica como integrar e utilizar a API em seus projetos.
Autenticação
Todas as requisições à API Web2PDF exigem uma chave de API válida. A chave deve ser enviada no cabeçalhoAuthorizationusando o esquema Bearer.
Authorization: YOUR_API_KEYVocê receberá sua chave de API após a compra do serviço. Mantenha sua chave segura e não a compartilhe publicamente. Para ambientes de desenvolvimento, você pode usar a chave de teste:test_api_key
Endpoints
Gerar PDF
GET /api/pdf
Converte uma página web em PDF com base na URL fornecida.
Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | URL da página web a ser convertida em PDF |
| format | string | Não | Formato do papel (A4, Letter, etc). Padrão: A4 |
| landscape | boolean | Não | Orientação paisagem. Padrão: false |
| scale | number | Não | Escala do conteúdo (0.1 a 2). Padrão: 0.7 |
| printBackground | boolean | Não | Imprimir plano de fundo. Padrão: true |
| displayHeaderFooter | boolean | Não | Exibir cabeçalho e rodapé. Padrão: false |
| headerTemplate | string | Não | HTML para o cabeçalho |
| footerTemplate | string | Não | HTML para o rodapé |
| pageRanges | string | Não | Intervalo de páginas (ex: '1-5, 8') |
| marginTop | string | Não | Margem superior (ex: '10mm'). Padrão: '10mm' |
| marginRight | string | Não | Margem direita (ex: '10mm'). Padrão: '10mm' |
| marginBottom | string | Não | Margem inferior (ex: '10mm'). Padrão: '10mm' |
| marginLeft | string | Não | Margem esquerda (ex: '10mm'). Padrão: '10mm' |
| preferCSSPageSize | boolean | Não | Preferir tamanho de página CSS. Padrão: false |
Exemplo de Requisição
curl -X GET \ "$http://localhost:3000/api/pdf?url=https://exemplo.com&format=A4&landscape=false&scale=0.8" \ -H "Authorization: YOUR_API_KEY" \ --output documento.pdfResposta
Arquivo PDF binário com status 200 OK ou resposta JSON com erro.
Exemplos de Integração
JavaScript / Node.js
// Usando fetch (Browser ou Node.js com node-fetch)
const generatePDF = async (url) => {
try {
const response = await fetch(
`http://localhost:3000/api/pdf?url=${encodeURIComponent(url)}&format=A4&scale=0.8`,
{
method: 'GET',
headers: {
'Authorization': 'YOUR_API_KEY',
},
}
);
if (!response.ok) {
throw new Error('Falha ao gerar PDF');
}
// Blob do PDF gerado
const pdfBlob = await response.blob();
// Criar URL para download
const pdfUrl = URL.createObjectURL(pdfBlob);
// Iniciar download
const a = document.createElement('a');
a.href = pdfUrl;
a.download = 'documento.pdf';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
} catch (error) {
console.error('Erro:', error);
}
};</code>
</pre>
</div>
</div>
<div className="mb-8">
<h3 className="text-xl font-mono font-bold mb-2 text-green-300">React</h3>
<div className="bg-black/40 p-4 rounded-md border border-green-500/20 mb-6">
<pre className="font-mono text-green-400 text-sm overflow-x-auto">
<code>import React, { useState } from 'react';
export default function PDFGenerator() {
const [url, setUrl] = useState('');
const [isLoading, setIsLoading] = useState(false);
const handleGeneratePDF = async () => {
if (!url) return;
setIsLoading(true);
try {
const response = await fetch(
`http://localhost:3000/api/pdf?url=${encodeURIComponent(url)}&format=A4&landscape=false`,
{
headers: {
'Authorization': 'YOUR_API_KEY',
},
}
);
if (!response.ok) {
throw new Error('Falha ao gerar PDF');
}
const pdfBlob = await response.blob();
const pdfUrl = URL.createObjectURL(pdfBlob);
window.open(pdfUrl, '_blank');
} catch (error) {
console.error('Erro:', error);
alert('Falha ao gerar PDF');
} finally {
setIsLoading(false);
}
};
return (
<div className="pdf-generator">
<input
type="text"
value={url}
onChange={(e) => setUrl(e.target.value)}
placeholder="Digite a URL para converter"
className="input"
/>
<button
onClick={handleGeneratePDF}
disabled={isLoading}
className="button"
>
{isLoading ? 'Gerando...' : 'Gerar PDF'}
</button>
</div>
);
Python
import requests
def generate_pdf(url):
api_url = 'http://localhost:3000/api/pdf'
params = {
'url': url,
'format': 'A4',
'landscape': 'false',
'scale': '0.8'
}
headers = {
'Authorization': 'YOUR_API_KEY'
}
response = requests.get(api_url, params=params, headers=headers)
if response.status_code == 200:
# Salvar o PDF
with open('documento.pdf', 'wb') as f:
f.write(response.content)
print('PDF gerado com sucesso!')
else:
print(f'Erro: {response.status_code}')
print(response.json())Limites e Considerações
- Máximo de 5 requisições por segundo por chave de API.
- Tempo limite de 60 segundos para renderização de páginas complexas.
- Tamanho máximo de arquivo PDF: 50MB.
- Páginas protegidas por autenticação podem ser acessadas passando cabeçalhos adicionais.
- Para páginas que exigem JavaScript, a API aguarda até que a página esteja completamente carregada.
- Fontes personalizadas são suportadas desde que estejam disponíveis na página web.