Perguntas Frequentes
Licenciamento e código aberto
Qual é a licença para o FOSS for Go?
Aspose.PDF FOSS for Go is released under the Licença MIT.O texto completo da licença é: incluído no repositório em: github.com/aspose-pdf-foss/asspose - pdf-Foss-for-go. Não é necessário nenhum registo, arquivo de ativação ou chave de execução.
Posso usar o FOSS para ir num produto comercial?
Sim. A licença MIT permite uso comercial, modificação, distribuição e uso privado ilimitados. Você deve incluir o aviso de direitos autorais e o texto da licenca MIT em todas as cópias ou partes substanciais do software.
Existe uma versão empresarial?
Aspose.PDF FOSS is the open-source, MIT-licensed edition. A separate commercial Aspose.PDF product is available as the Aspose.PDF — Enterprise Product Family com suporte empresarial, cobertura de formato estendido e integração na nuvem.
Instalação e requisitos
Como posso instalar o FOSS para Go?
Adicionar o módulo ao seu projeto Go:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goImportar com um alias nos arquivos de origem:
import pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"Qual é a versão do Go?
É necessário ir 1.24 ou posterior. Verifique a sua versão com o go version.
Há dependências de biblioteca nativa ou sistema?
Não. Aspose.PDF FOSS for Go é uma implementação pura de Go sem dependências em C, C++, ou CGo. Ele não requer bibliotecas do sistema, visores PDF nem ferramentas externas.
Utilização da API
Como eu abro um PDF existente?
Utilização: pdf.Open para PDFs padrão e pdf.OpenWithPassword para ficheiros protegidos por senha:
doc, err := pdf.Open("document.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Como dividir um PDF em páginas individuais?
Document.Split retorna um []*Document, uma por página:
doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}Como eu unificar vários PDFs?
Document.Append Reunião de um documento-fonte no local:
base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")Como preencho um campo do AcroForm?
Utilização: Document.Form().Field(name) e indicar o tipo de concreto:
doc, _ := pdf.Open("form.pdf")
text := doc.Form().Field("customer_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree").(*pdf.CheckboxField)
check.SetChecked(true)
doc.Save("form_filled.pdf")Tipo de campo suportado: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.
Como adiciono marcadores?
Criar um OutlineItemCollection e definir um Destination:
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
bm := pdf.NewOutlineItemCollection(doc)
bm.SetTitle("Chapter 1")
bm.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(bm)
doc.Save("manual_with_bookmarks.pdf")Segurança e criptografia
Como posso proteger um PDF por senha?
Utilização: Document.SetEncryption com um EncryptionOptions Fornecer uma senha de utilizador para abrir o ficheiro e uma palavra-passe do proprietário para direitos de modificação:
doc, _ := pdf.Open("doc.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("doc_protected.pdf")Que algoritmos de criptografia são suportados?
Três algoritmos estão disponíveis através de: EncryptionOptions.Algorithm:
| Algoritmo de avaliação | Constantes | Padrão |
|---|---|---|
| AES-128 | EncryptionAlgAES128 (default) | ISO 32000-1 |
| AES-256 | EncryptionAlgAES256 | ISO 32000-2 (PDF 2.0 de saída) |
| RC4-128 | EncryptionAlgRC4_128 | O legado |
Como eu abro um arquivo protegido por senha?
Utilização: pdf.OpenWithPassword quando o arquivo requer autenticação. Passe a senha do usuário como segundo argumento; retorna um normal *Document Uma vez que a descriptação tiver sido bem-sucedida:
doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Como eu removo a criptografia de um PDF?
Chama-me . Document.RemoveEncryption Salve o resultado para escrever uma cópia não criptografada:
doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")Rendering e Texto
Como faço para transformar uma página PDF em imagem?
Utilize um dos tipos de dispositivo: BmpDevice, PngDevice, JpegDevice, TiffDevice, ou GifDevice.Construir o dispositivo com um Resolution valor e chamar o correspondente Render* método com um io.Writer e a) RenderOptions:
doc, _ := pdf.Open("report.pdf")
page, _ := doc.Page(1)
f, _ := os.Create("page1.png")
defer f.Close()
page.RenderPNG(f, pdf.RenderOptions{DPI: 150})Como procuro texto num PDF?
Chama-me . Document.SearchText com uma sequência de consulta e SearchOptions.O resultado é um fechada de TextMatch valores cada um contém o texto correspondente, seu índice de página e sua lista de páginas. caixa de limitação.
doc, _ := pdf.Open("doc.pdf")
matches, _ := doc.SearchText("total", pdf.SearchOptions{CaseInsensitive: true})
for _, m := range matches {
fmt.Printf("page %d: %q\n", m.PageNumber, m.Text)
}Como aplanar um formulário?
Chama-me . Document.Flatten O método corta todos os campos de dados e, em seguida, elimina o código-fonte. valores na página gráfica e remove os campos de formulário interativos:
doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")Limitações conhecidas
Todos os recursos PDF são suportados?
A biblioteca abrange as operações de gerenciamento de documentos mais comuns: abrir, criar, salvar, dividir, fundir , extração de páginas, criptografia, AcroForms, tabelas, marcadores, anotações, renderização para imagem, pesquisa de texto e achatamento do formulário. recursos avançados como assinaturas digitais, conteúdo 3D e conversão PDF / A podem não ser totalmente implementados na versão atual. Verifique o repositório README para o status atualmente disponível.
O que acontece se eu usar uma afirmação tipo campo que não corresponde?
Uma afirmação de tipo sobre: Field que não corresponda ao tipo de campo real vai entrar em pânico. Utilização: pdf.FieldType(f) Para inspecionar o tipo antes de afirmar ou utilizar um interruptor de tipo:
doc, _ := pdf.Open("form.pdf")
for _, f := range doc.Form().Fields() {
switch v := f.(type) {
case *pdf.TextBoxField:
fmt.Println("text:", v.Value())
case *pdf.CheckboxField:
fmt.Println("checked:", v.Checked())
}
}