Skip to content

juca-soft/RabbitPDF

Repository files navigation

RabbitPDF

RabbitPDF é uma biblioteca Python para criar, compor, visualizar, manipular e aplicar OCR em arquivos PDF.

Versão atual: 0.3.0.

English README

Recursos

  • Criar PDFs simples a partir de texto, linhas ou imagens.
  • Compor documentos ricos com cabeçalho, rodapé, tabelas, imagens, marca d'água, numeração de páginas e estilos de texto.
  • Renderizar templates JSON com variáveis, tabelas repetíveis e preview web local.
  • Extrair PDFs existentes para JSON-base de template.
  • Ajustar fonte, tamanho, entrelinha, margens independentes, espaçamentos, bordas e padding de tabelas.
  • Juntar, extrair, dividir, criptografar, descriptografar e marcar PDFs existentes.
  • Abrir PDFs no visualizador local ou em uma página HTML simples.
  • Executar OCR em PDFs digitalizados com dependências opcionais.
  • Usar por API Python ou pela CLI rabbitpdf.

Instalação

pip install RabbitPDF

Para OCR:

pip install "RabbitPDF[ocr]"

O OCR também exige o binário do Tesseract instalado no sistema.

Começo Rápido

from rabbitpdf import PDFCreator, PDFViewer

PDFCreator(title="Exemplo").create_from_text(
    "Olá, RabbitPDF!",
    "hello.pdf",
)

PDFViewer("hello.pdf").open()

Para abrir em um viewer web local:

PDFViewer("hello.pdf").web()
PDFViewer("hello.pdf").web(5522)

Em templates, o preview pode ficar junto da criacao:

from rabbitpdf import PDFViewer, render_template_file

created = render_template_file("template.json", "dados.json", "saida.pdf")
PDFViewer.web(created)

Documento Avançado

from reportlab.lib.units import cm

from rabbitpdf import DocumentTheme, RabbitDocument, TableOptions, TextStyle

(
    RabbitDocument(
        title="Relatório",
        page_size="A4",
        left_margin=2.5 * cm,
        right_margin=2.5 * cm,
        top_margin=2.0 * cm,
        bottom_margin=2.0 * cm,
        theme=DocumentTheme(font_size=11, leading=14),
    )
    .add_paragraph("RELATÓRIO", bold=True, underline=True, align="center")
    .add_spacer(16)
    .add_table(
        [
            ["Item", "Valor"],
            ["Subtotal", "R$ 100,00"],
            ["Total", "R$ 100,00"],
        ],
        options=TableOptions(
            repeat_header=True,
            padding=6,
            cell_style=TextStyle(font_size=10, leading=12, space_after=0),
        ),
    )
    .build("relatorio.pdf")
)

CLI

Criar PDF com texto:

rabbitpdf create hello.pdf --text "Olá, RabbitPDF"

Criar PDF a partir de imagens:

rabbitpdf create album.pdf --images pagina-1.png pagina-2.jpg

Juntar PDFs:

rabbitpdf merge final.pdf capa.pdf conteudo.pdf anexos.pdf

Renderizar template com dados:

rabbitpdf template render examples/live_preview_template.json examples/live_preview_data.json invoice.pdf

Abrir preview web do template:

rabbitpdf template preview examples/live_preview_template.json examples/live_preview_data.json

Extrair um PDF para JSON-base de template:

rabbitpdf template extract entrada.pdf template-extraido.json

Abrir PDF pronto em viewer web local:

rabbitpdf view invoice.pdf --web
rabbitpdf view invoice.pdf --web --port 5522

Extrair páginas:

rabbitpdf extract relatorio.pdf resumo.pdf --pages "1,3-5,-1"

Adicionar marca d'água:

rabbitpdf watermark entrada.pdf saida.pdf --text "CONFIDENCIAL"

Se o executável não estiver no PATH, use:

python -m rabbitpdf --help

Exemplos

Os exemplos ficam em examples e geram arquivos em examples/output/.

Execute qualquer exemplo com:

python examples/ex01_quick_start.py

Documentação

About

RabbitPDF is a small Python library for PDF

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages