Casos de uso comuns para Aspose.PDF FOSS for Go
Aspose.PDF FOSS for Go is a pure-Go module for PDF document management. This article O programa de acção “Ação” abrange as operações mais frequentemente necessárias, utilizando o sistema de gestão da informação. Document, Form, EncryptionOptions, Table, e OutlineItemCollection Instalar com: go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Guia passo a passo
Passo 1: Instalar o pacote
Adicionar a dependência do módulo Go:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goPasso 2: Importar o pacote
Utilize um alias para manter as referências de importação concisas:
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)Passo 3: Divida um PDF em ficheiros por página
Document.Split Divide um documento de várias páginas em uma *Document por página.
doc, err := pdf.Open("report.pdf")
if err != nil {
panic(err)
}
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("report_page_%03d.pdf", i+1))
}
fmt.Printf("Split %d pages\n", len(pages))Passo 4: Juntar vários PDFs em um só
Document.Append Reuniu páginas de um segundo documento antes da sua salvação.
base, _ := pdf.Open("intro.pdf")
chapter1, _ := pdf.Open("chapter1.pdf")
chapter2, _ := pdf.Open("chapter2.pdf")
appendix, _ := pdf.Open("appendix.pdf")
base.Append(chapter1)
base.Append(chapter2)
base.Append(appendix)
base.Save("full_document.pdf")Passo 5: Aplicar a criptografia de senha
EncryptionOptions Configura a senha do utilizador, a de um proprietário e o algoritmo; por operação Permissions num único pedido:
doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "clientpass",
OwnerPassword: "adminpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")Para produzir uma cópia de texto simples a partir de um ficheiro criptografado:
doc, _ := pdf.OpenWithPassword("contract_protected.pdf", "clientpass")
doc.RemoveEncryption()
doc.Save("contract_decrypted.pdf")Passo 6: Preencher um AcroFormulario
Iterar ou indicar os campos de destino pelo nome.TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField).
doc, _ := pdf.Open("application_form.pdf")
name := doc.Form().Field("applicant_name").(*pdf.TextBoxField)
name.SetValue("Jane Doe")
agree := doc.Form().Field("terms_accepted").(*pdf.CheckboxField)
agree.SetChecked(true)
country := doc.Form().Field("country").(*pdf.ComboBoxField)
country.SetSelected(0)
doc.Save("application_filled.pdf")Passo 7: Criar um layout de mesa
Adicionar um Table com: Row e a) Cell Entradas numa página para a geração de faturas ou relatórios:
doc, _ := pdf.Open("invoice_template.pdf")
page, _ := doc.Page(1)
tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{200, 80, 100})
header := tbl.AddRow()
header.AddCell("Description")
header.AddCell("Qty")
header.AddCell("Amount")
row := tbl.AddRow()
row.AddCell("PDF Processing Service")
row.AddCell("1")
row.AddCell("$500.00")
page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")Passo 8: Adicionar uma árvore de marcadores
OutlineItemCollection cria marcadores com aninhamento de capítulos/seções e DestinationXYZ alvos de página:
doc, _ := pdf.Open("manual.pdf")
page1, _ := doc.Page(1)
page2, _ := doc.Page(2)
ch1 := pdf.NewOutlineItemCollection(doc)
ch1.SetTitle("Introduction")
ch1.SetBold(true)
ch1.SetDestination(pdf.NewDestinationXYZ(page1, 0, 792, 1.0))
doc.Outlines().Add(ch1)
ch2 := pdf.NewOutlineItemCollection(doc)
ch2.SetTitle("Configuration")
ch2.SetDestination(pdf.NewDestinationFit(page2))
doc.Outlines().Add(ch2)
doc.Save("manual_bookmarked.pdf")Problemas comuns e soluções
pdf.Open Retorna um erro para arquivos PDF válidos Verifique se o caminho do arquivo é correto e que o arquivos não está aberto em outro . No Windows, o bloqueio de arquivos pode impedir leituras.
Pânico de afirmação do tipo ao acessar os campos dos formulários Utilização: pdf.FieldType(f) ou um interruptor de tipo para inspecionar o tipo do campo antes da A. Assegurar a segurança dos trabalhadores; *pdf.TextBoxField A afirmação de que a CheckboxField Vai entrar em pânico.
go get falha com “módulo não encontrado” Assegurar a GOPROXY é definido para um proxy acessível (por exemplo,. GOPROXY=direct) e que a Comissão A sua rede pode chegar a: github.com.Em ambientes com espaços de ar, utilizar o sistema de ventilação. GONOSUMCHECK ou um espelho local do módulo.
SaveTo falha depois de OpenWithPassword Se ligares… Save após o OpenWithPassword sem ligar. RemoveEncryption, A saída é re-criptografada com a senha original. Este é o esperado comportamento chamada RemoveEncryption O artigo 2.o, n.o 1, do Regulamento (CE) n.° 1272/2006 é alterado como segue:.
Contagem de páginas do documento unificado errada Append Certifique-se de que você não está chamando Append em 1 de Setembro de um documento que já foi salvo; reabra o documento base se precisar para construir múltiplos resultados de fusão.
Perguntas Frequentes
Posso processar PDFs sem escrever no disco?
Document.WriteTo aceita um io.Writer, para que você possa escrever a um buffer, rede fluxo, ou escritor de resposta sem criar um arquivo temporário.
É seguro usar simultaneamente o Aspose.PDF FOSS para Go?
Cada um. *Document instância não é goroutine-safe. Use um Document por routine, ou proteger instâncias compartilhadas com um mutex.
Como eu leio os valores de campo de um formulário preenchido?
Utilização: Field.Value() Em qualquer campo ou tipo de indicação para aceder a accesórios específicos do tipo. como: CheckboxField.Checked() ou a) ComboBoxField.SelectedIndex().
Posso criar um PDF do zero sem um modelo existente?
- Sim, é verdade.
pdf.NewDocument()Cria um documento vazio.AddBlankPageFromFormat(pdf.PageFormatA4)para anexar uma página em branco, depois adicionar conteúdo (tabelas, anotações etc.) antes de guardar.
Qual é a diferença entre: Document.Save e a) Document.WriteTo?
Save(path string) escreve para um caminho de arquivo. WriteTo(w io.Writer) escreve a qualquer pessoa. io.Writer Útil para respostas HTTP, buffers ou pipelines de fluxo.