Cómo cargar un documento en Go

Cómo cargar un documento en Go

Aspose.PDF FOSS para Go carga un PDF desde una ruta de archivo, un io.Reader, o cualquiera de las dos fuentes protegidas por una contraseña, siempre devolviendo un valor *Document para operar. La biblioteca es un módulo de Go instalado con go get.

Guía paso a paso

Paso 1: Instalar el paquete

Agrega el módulo a tu proyecto:

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

Verifica que el módulo se resuelva:

import asposepdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"

Paso 2: Importar clases requeridas

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

Paso 3: Cargar un PDF desde una ruta de archivo

pdf.Open carga un archivo PDF y devuelve un *Document y un error:

doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
	panic(err)
}
fmt.Println(doc.PageCount(), "pages")

Paso 4: Cargar un PDF protegido con contraseña

pdf.OpenWithPassword abre un archivo que está cifrado con una contraseña de usuario:

doc, err := pdf.OpenWithPassword("locked.pdf", "secret")
if err != nil {
	panic(err)
}
fmt.Println("opened:", doc.PageCount(), "pages")

Paso 5: Cargar un PDF desde un flujo

pdf.OpenStream lee un PDF de cualquier io.Reader — una respuesta de red, un búfer en memoria o un archivo abierto por separado. pdf.OpenStreamWithPassword es el equivalente protegido con contraseña para flujos:

f, err := os.Open("input.pdf")
if err != nil {
	panic(err)
}
defer f.Close()

doc, err := pdf.OpenStream(f)
if err != nil {
	panic(err)
}
fmt.Println(doc.PageCount(), "pages")

// For an encrypted stream, open a separate reader and pass a password:
f2, _ := os.Open("locked.pdf")
defer f2.Close()
doc2, err := pdf.OpenStreamWithPassword(f2, "secret")
if err != nil {
	panic(err)
}
fmt.Println(doc2.PageCount(), "pages (encrypted)")

Paso 6: Inspeccionar el documento cargado

Una vez cargado, Document.PageCount informa el número total de páginas y Document.Page(n) recupera una página única por su índice basado en 1:

doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
	panic(err)
}
fmt.Printf("Page count: %d\n", doc.PageCount())

page, err := doc.Page(1)
if err != nil {
	panic(err)
}
size, err := page.Size()
if err != nil {
	panic(err)
}
fmt.Printf("Page 1 size: %.0f x %.0f pt\n", size.Width, size.Height)

Problemas comunes y soluciones

OpenWithPassword todavía falla después de que ingreso lo que creo que es la contraseña correcta

Proporcionar una contraseña incorrecta a OpenWithPassword produce un error no nulo. Las contraseñas distinguen entre mayúsculas y minúsculas — confirme la contraseña exacta del usuario establecida en el PDF de origen.

OpenStream devuelve un error en un PDF cifrado

OpenStream no puede abrir PDFs cifrados. Use OpenStreamWithPassword para flujos protegidos con contraseña en su lugar.

¿Necesito OpenWithPassword para un PDF que resulta no estar cifrado?

No — abrir un archivo sin cifrar a través de OpenWithPassword está permitido y se comporta igual que una llamada simple a Open, por lo que es seguro usar OpenWithPassword cuando no estás seguro de que un archivo esté cifrado.

Document.Page(n) devuelve un error después de una operación exitosa Open

El número de página está fuera de rango. Page usa un índice basado en 1 entre 1 y Document.PageCount(); llama a PageCount() primero para validar el rango.


Preguntas Frecuentes

¿Qué formatos de archivo puedo cargar con Open?

Open, OpenWithPassword, OpenStream y OpenStreamWithPassword aceptan exclusivamente entrada PDF.

¿Cómo cargo un PDF que ya está en memoria en lugar de en disco?

Envuelve la porción de bytes en un bytes.Reader (que satisface io.Reader) y pásalo a pdf.OpenStream, o pdf.OpenStreamWithPassword si los bytes representan un PDF cifrado.

¿Cómo cargo un PDF protegido con contraseña?

Llame a pdf.OpenWithPassword(path, password) para una ruta de archivo, o a pdf.OpenStreamWithPassword(r, password) para un flujo.

¿Cómo verifico cuántas páginas se cargaron?

Llame a Document.PageCount() en el *Document devuelto.

Ver también

 Español