Casos de uso común para Aspose.PDF FOSS para Go

Casos de uso común para Aspose.PDF FOSS para Go

Aspose.PDF FOSS for Go is a pure-Go module for PDF document management. This article que cubren las operaciones más frecuentemente necesarias mediante el uso de la Document, Form, EncryptionOptions, Table,y, OutlineItemCollection Tipos: Instalar con go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.

Guía paso a paso

Paso 1: Instalar el paquete

Adicionar la dependencia de módulo Go:

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

Paso 2: Importación del paquete

Utilice un alias para mantener las referencias de importación concisas:

import (
    "fmt"
    pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)

Paso 3: Dividir un PDF en archivos por página

Document.Split Divide un documento de varias páginas en una *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))

Paso 4: Incorporar varios PDFs a uno

Document.Append Se mezclan páginas de un segundo documento en lugar antes de ahorrar.

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")

Paso 5: Aplique la cifrado de contraseña

EncryptionOptions Configura la contraseña del usuario, el contrasinal de propietario, los algoritmos y Per-Operación Permissions En una sola llamada:

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 producir una copia de un archivo cifrado:

doc, _ := pdf.OpenWithPassword("contract_protected.pdf", "clientpass")
doc.RemoveEncryption()
doc.Save("contract_decrypted.pdf")

Paso 6: Rellenar un acroform

Título: El nombre de los campos es el tipo concreto (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")

Paso 7: Crea una tabla de diseño

Añadir a Table con Row y Cell Entrar en una página para la generación de facturas o informes:

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")

Paso 8: Agregar un árbol de notación

OutlineItemCollection Crea las cartas con el capítulo/sección de la nisa y DestinationXYZ Objetivos 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 y soluciones comunes

pdf.Open devolver un error para los archivos PDF válidos Verifique si el archivo es correcto y que el fichero no se abre en otro. En Windows, el bloqueo de archivos puede evitar las lecturas.

Tipo de aserción del pánico al acceder a los campos de forma Uso pdf.FieldType(f) o un tipo de cambio para inspeccionar el tipo del campo antes de que se El comentario. a *pdf.TextBoxField La afirmación de A CheckboxField Se va a panicar.

go get Fracaso con “modulo no encontrado” Seguridad GOPROXY Se establece a un proxy alcanzable (por ejemplo,. GOPROXY=directy que eso Su red puede llegar a github.com.En los ambientes de aire, el uso GONOSUMCHECK o un espejo de módulo local.

El salto falló después de OpenWithPassword Si llamas Save Después de OpenWithPassword sin llamar RemoveEncryption, la salida se reencryptan con la contraseña original. esta es la esperada El comportamiento - llamadas RemoveEncryption para producir una copia de la reclamación.

La cuantía de páginas del documento es equivocada Append mutiendo el receptor en lugar. asegúrese de no llamar Append En el un documento que ya ha sido guardado; reabrir el documento de base si necesita para construir múltiples fuentes mezclas.


Preguntas frecuentes

¿Puedo procesar PDFs sin escribir en disco?

Document.WriteTo Acepta una io.Writer, así que puedes escribir a un buffer, red flujo, o el editor de respuesta sin crear un archivo temporal.

¿Es seguro usar Aspose.PDF FOSS para Go de forma concurrente?

Cada uno *Document El caso no es de la Goroutine-Safe.Utilizar una Document por la gorroutina, o proteger los casos compartidos con un mutex.

¿Cómo puedo revertir los valores de campo desde un formulario llenado?

Uso Field.Value() en cualquier campo o tipo de alerta para acceder a accesorios específicos de tipo Como como CheckboxField.Checked() o ComboBoxField.SelectedIndex().

¿Puedo crear un PDF de la ficha sin un modelo existente?

Sí sí. pdf.NewDocument() Crea un documento vacío.Calcular AddBlankPageFromFormat(pdf.PageFormatA4) para añadir una página blanca, luego agregar contenido (tables, anotaciones, etc.) antes de salvar.

¿Cuál es la diferencia entre Document.Save y Document.WriteTo?

Save(path string) Escribe a un archivo de ruta. WriteTo(w io.Writer) Escribe a cualquiera io.Writer - útil para las respuestas HTTP, buffers o pipelines de flujo.


Ver también

 Español