Editor de PDF desktop · Processamento local
Meu editor de PDF

Edite o texto.Preserve a identidade.

Fonte, corpo, cor e posição respeitados na edição.

Troca o texto de um PDF preservando a fonte, e recusa quando não dá.

App desktopPDFAutoral

  • Tauri
  • Rust
  • PDFium
  • React
Editor de PDF desktop · Processamento local
Meu editor de PDF

Edite o texto.Preserve a identidade.

Fonte, corpo, cor e posição respeitados na edição.

  • Tauri
  • Rust
  • PDFium
  • React

Troca o texto de um PDF preservando a fonte, e recusa quando não dá.

App desktopPDFAutoral

  • Tauri
  • Rust
  • PDFium
  • React

PortfólioMeu editor de PDF

O clique no texto

A tela e o motor leem o PDF diferente. A geometria une os dois.

O que você vê vem de uma biblioteca; o que o programa edita vem de outra, e elas cortam o texto de jeitos diferentes. Para saber qual objeto editar, o programa não chuta: pergunta, em três passos, que caixa contém o ponto. Arraste o trecho e veja a decisão mudar.

Arraste o trecho (laranja) na página

#0 DADOS DO APARTAMENTO#1 Quadro na Área de ServiçoDADOS DO APARTAMENTO

A decisão

  1. 1Quem contém o ponto central (base + 0,32 do corpo)?
  2. 2Quem cruza a caixa do trecho (−0,25 a +0,9 do corpo)?
  3. 3Quem está mais perto (até 1,5 corpo e 2× melhor que o segundo)?

#0 contém o centro do trecho, é ele.

Trecho
DADOS DO APARTAMENTO
x · y
40 · 92 pt
Objetos
2

As regras são as do programa (matchObject.ts): o ponto é a linha de base mais 0,32 do corpo; a caixa vai de −0,25 a +0,9 do corpo; sem um vencedor claro, ele recusa em vez de editar o texto errado. A página e os objetos aqui são de exemplo, em pontos de PDF.

Cena do projeto: o editor aberto com a janela de edição de texto e, na frente, um grande Aa dourado sobre papéis

Cada fonte tem seus limites. O editor mostra.

Inspeção de fontes e caracteres disponíveis antes de aplicar.

Um PDF costuma levar só os caracteres que usa de cada fonte. Antes de trocar um texto, o programa lê o nome da fonte, a permissão do fabricante e os caracteres que ela tem, e depois de gravar, relê para conferir. Escolha uma fonte, escreva e aplique.

A fonte do trecho

O que o nome diz

Subconjunto
Sim
Família
Segoe
Peso
700
Itálico
Não
Permissão do fabricante (fsType)
0, instalável, sem restrição

Caracteres disponíveis (clique para inserir)

  • Já existia no original
  • Nova, a fonte tem
  • A fonte não tem

As regras são as do programa (pdf_engine.rs e font_rights.rs): 6 maiúsculas e + no nome indicam subconjunto; a permissão 4 ou 2 só barra caractere novo; depois de gravar, o motor relê o texto e, se algo não saiu, não grava. Mais de 0,5 pt de largura conta como mais largo. As fontes e a largura aqui são de exemplo.

Cena do projeto: o editor em dois monitores, um no tema escuro e outro no claro, com papéis e uma caneta-tinteiro

Claro ou escuro. Desfazer em 20 passos.

Tauri 2, Rust e PDFium com React e TypeScript.

Projeto autoral

Desfazer uma edição de PDF invertendo a operação não devolve o arquivo exato. Por isso o programa guarda uma cópia inteira a cada passo, e para em 20, para não travar. Edite, desfaça com Ctrl+Z e veja a pilha encher e esquecer.

100%

FIAÇÃO ELÉTRICA

DADOS DO APARTAMENTO

Quadro na Área de Serviço

Cozinha ao lado da AS

QUADRO DE DISTRIBUIÇÃO

C1 10A Iluminação Sala

Cópias guardadas0/20

Memória (PDF de 5 MB)0 × 5 MB = 0 MB

As telas de verdade

As regras são as do programa (useHistory.ts): cada passo guarda os bytes do documento; o limite é 20 e o 21º descarta o mais antigo; editar depois de desfazer apaga o que estava à frente. Ctrl+Z desfaz, Ctrl+Y ou Ctrl+Shift+Z refazem, Ctrl+S salva. O zoom anda de 25% a 400%. O documento aqui é de exemplo.

As tecnologias

Do que é feito, peça por peça

Duas bibliotecas de PDF trabalhando juntas: o pdf.js desenha a página na tela, e o PDFium, chamado pelo Rust, faz a edição de verdade, com 23 comandos entre a tela e o motor. Escolha uma peça para ver o que ela faz aqui e em que arquivo está.

8tecnologias, em 2 camadas

Tela

Motor