---
title: "Carimbo de tempo em PDF - PKI Express"
description: "Como adicionar um carimbo de tempo a um PDF com o PKI Express: a classe PadesTimestamper, a autoridade de carimbo de tempo (como a do Rest PKI, com um token de acesso) e o arquivo de saída."
canonical: "https://docs.lacunasoftware.com/articles/pki-express/timestamp-pdf"
locale: "pt-BR"
product: "PKI Express"
last_updated: "2026-10-12"
---

# Carimbo de tempo em PDF - PKI Express

O [PKI Express](https://docs.lacunasoftware.com/articles/pki-express) pode adicionar um carimbo de tempo a um PDF, o que prova que o arquivo existia, tal como está, naquele momento. Os
samples adicionam um carimbo de tempo de documento com a classe `PadesTimestamper`, usando a autoridade de carimbo de tempo do Rest PKI. 
Isso exige o PKI Express 1.7.0 ou posterior, que acrescentou o comando `stamp-pdf`. 

O código é Python, dos [samples do PKI Suite](https://github.com/LacunaSoftware/PkiSuiteSamples), com o pacote `pkiexpress` (1.10.4); o
sample em Node.js faz o mesmo. 

## Fluxo

1. Crie um `PadesTimestamper` e informe a ele uma autoridade de carimbo de tempo.
1. Defina o PDF e o caminho do arquivo de saída.
1. Chame `stamp()`, que executa o comando `stamp-pdf` do PKI Express e grava o PDF com carimbo de tempo no caminho de saída.

```python
stamper = PadesTimestamper()
set_pki_defaults(stamper)
stamper.set_pdf_from_path(join(current_app.config['APPDATA_FOLDER'],
                               file_id))
create_app_data()  # Guarantees that "app_data" folder exists.
output_file = '%s.pdf' % str(uuid.uuid4())
output_file_path = join(current_app.config['APPDATA_FOLDER'], output_file)
stamper.output_file_path = output_file_path
stamper.stamp()
```

* Em vez de um caminho de saída, você pode definir `overwrite_original_file` para aplicar o carimbo no próprio PDF. 
* O PDF também pode ser informado em bytes (`set_pdf_from_raw`) ou em Base64 (`set_pdf_from_base64`). 
* `stamp()` não devolve nada: leia o resultado do arquivo de saída. 

A classe tem o mesmo nome nas outras bibliotecas cliente; os métodos mudam: 

| Biblioteca | PDF de entrada | Arquivo de saída | Carimbo |
|---|---|---|---|
| Node.js | `setPdfFromPath(path)` (devolve uma Promise) | `setOutputFilePath(path)` | `stamp()` (devolve uma Promise) |
| Java | `setPdf(path)` | `setOutputFilePath(path)` | `stamp()` |
| PHP | `setPdfFromPath($path)` | `setOutputFile($path)` | `stamp()` |
| Python | `set_pdf_from_path(path)` | propriedade `output_file_path` | `stamp()` |

Uma representação visual do carimbo de tempo está disponível no PKI Express 1.18.0 e posteriores, por `setVisualRepresentation` nas
bibliotecas Node.js, Java (1.23.1) e PHP. 

## A autoridade de carimbo de tempo

Os samples definem a autoridade de carimbo de tempo em uma função auxiliar por onde passam todos os operadores. Eles usam a autoridade de
carimbo de tempo do Rest PKI, autenticada com o token de acesso do Rest PKI, e só a definem quando há um token configurado: 

```python
if current_app.config['REST_PKI_ACCESS_TOKEN'] is not None:
    authority = TimestampAuthority('https://pki.rest/tsp/a402df41-8559-47b2-a05c-be555bf66310')
    authority.set_oauth_token_authentication(current_app.config['REST_PKI_ACCESS_TOKEN'])
    operator.timestamp_authority = authority
```

* Para obter um token de acesso do Rest PKI, veja [Solicitando carimbos de tempo ao Rest PKI](https://docs.lacunasoftware.com/articles/rest-pki/requesting-timestamps). 
* Outras autoridades de carimbo de tempo podem autenticar com usuário e senha (`set_basic_authentication`) ou com um certificado cliente SSL,
  identificado pelo thumbprint (`set_ssl_authentication`; Java: `setSSLThumbprint`). Veja [Configurando uma autoridade de carimbo de tempo](https://docs.lacunasoftware.com/articles/pki-express/php/configuring-timestamp-authority)
  para a versão em PHP. 
* A biblioteca Python envia um timeout da requisição de carimbo de tempo (`request_timeout`, padrão 15), e a biblioteca Node.js sempre envia
  15; as duas exigem o PKI Express 1.12.2, que acrescentou esse timeout. 
  TODO(docs): a unidade do timeout da requisição de carimbo de tempo.
* TODO(docs): o que o `stamp-pdf` faz quando não há autoridade de carimbo de tempo definida (os samples só definem uma quando há um token do
  Rest PKI configurado).

## Erros

Se a autoridade de carimbo de tempo falhar, o PKI Express devolve o código 30 (`TimestampAuthorityNotAvailable`); o código 32
(`TimestampOptionsRequired`) indica que nenhum endereço de autoridade de carimbo de tempo foi informado. Veja os
[códigos de retorno](https://docs.lacunasoftware.com/articles/pki-express/return-codes). 

## Veja também

* [Validar assinaturas](https://docs.lacunasoftware.com/articles/pki-express/validate-signatures), para inspecionar o arquivo com carimbo de tempo
* [Referência rápida do PKI Express](https://docs.lacunasoftware.com/articles/pki-express/quick-reference)
* [Rest PKI Core](https://docs.lacunasoftware.com/articles/rest-pki/core), cujo serviço em nuvem também aplica carimbos de tempo em PDFs 

**Demonstrações e exemplos**

- Demonstração: [Timestamp a PDF](https://try.lacunasoftware.com/pt/pki-suite/timestamp-a-pdf)
- Timestamp a PDF with PKI Express: [Node.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/nodejs/expressmvc/routes/timestamp-pdf-express.js) · [Python](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/timestamp_pdf_express.py)
