Casos de uso comuns para Aspose.PDF FOSS for Go

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-go

Passo 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.


Ver também:

 Português