Seguranca
Criptografia
gpdf suporta criptografia AES-256 (ISO 32000-2, Rev 6) com senhas de proprietario e usuario.
Apenas senha do proprietario
O PDF pode ser aberto sem senha, mas a edicao e restrita.
import (
"github.com/gpdf-dev/gpdf"
"github.com/gpdf-dev/gpdf/encrypt"
)
doc := gpdf.NewDocument(
gpdf.WithPageSize(gpdf.A4),
gpdf.WithEncryption(
encrypt.WithOwnerPassword("owner-secret-123"),
),
)
Senhas de usuario e proprietario
A senha do usuario e necessaria para abrir o PDF.
doc := gpdf.NewDocument(
gpdf.WithPageSize(gpdf.A4),
gpdf.WithEncryption(
encrypt.WithOwnerPassword("owner-pass"),
encrypt.WithUserPassword("user-pass"),
),
)
Controle de permissoes
Restringe operacoes especificas como impressao, copia ou modificacao.
doc := gpdf.NewDocument(
gpdf.WithPageSize(gpdf.A4),
gpdf.WithEncryption(
encrypt.WithOwnerPassword("owner"),
encrypt.WithUserPassword("user"),
encrypt.WithPermissions(encrypt.PermPrint|encrypt.PermCopy|encrypt.PermPrintHighRes),
),
)
Permissoes disponiveis:
| Constant | Description |
|---|---|
encrypt.PermPrint | Permitir impressao |
encrypt.PermModify | Permitir modificacao |
encrypt.PermCopy | Permitir copia de texto |
encrypt.PermAnnotate | Permitir anotacoes |
encrypt.PermPrintHighRes | Permitir impressao de alta resolucao |
encrypt.PermAll | Todas as permissoes (padrao) |
Conformidade PDF/A
Gera PDFs de qualidade de arquivo em conformidade com os padroes PDF/A.
PDF/A-1b
import (
"github.com/gpdf-dev/gpdf"
"github.com/gpdf-dev/gpdf/pdfa"
)
doc := gpdf.NewDocument(
gpdf.WithPageSize(gpdf.A4),
gpdf.WithPDFA(), // defaults to PDF/A-1b
)
PDF/A-2b com metadados
doc := gpdf.NewDocument(
gpdf.WithPageSize(gpdf.A4),
gpdf.WithPDFA(
pdfa.WithLevel(pdfa.LevelA2b),
pdfa.WithMetadata(pdfa.MetadataInfo{
Title: "Annual Report 2026",
Author: "ACME Corp",
Subject: "Financial Report",
Creator: "gpdf",
CreateDate: "2026-01-15T10:30:00+09:00",
ModifyDate: "2026-01-15T10:30:00+09:00",
}),
),
)
| Level | Standard | Description |
|---|---|---|
pdfa.LevelA1b | ISO 19005-1 | PDF/A-1b (padrao) |
pdfa.LevelA2b | ISO 19005-2 | PDF/A-2b |
Assinaturas digitais
Assine PDFs com assinaturas digitais CMS/PKCS#7 usando chaves RSA ou ECDSA.
Assinatura basica
import (
"github.com/gpdf-dev/gpdf"
"github.com/gpdf-dev/gpdf/signature"
)
// Generate the PDF first
data, _ := doc.Generate()
// Sign it
signed, err := gpdf.SignDocument(data, signature.Signer{
Certificate: cert,
PrivateKey: key,
},
signature.WithReason("Approved"),
signature.WithLocation("Tokyo"),
)
Com cadeia de certificados e carimbo de tempo
signed, err := gpdf.SignDocument(data, signature.Signer{
Certificate: cert,
PrivateKey: key,
Chain: []*x509.Certificate{intermediateCert},
},
signature.WithReason("Contract signed"),
signature.WithLocation("New York"),
signature.WithTimestamp("http://tsa.example.com"),
)
| Option | Description |
|---|---|
signature.WithReason(reason) | Motivo da assinatura |
signature.WithLocation(location) | Local da assinatura |
signature.WithTimestamp(tsaURL) | URL da autoridade de carimbo de tempo RFC 3161 |
signature.WithSignTime(t) | Hora de assinatura explicita (padrao: agora) |