Como Carregar um Documento em Go

Como Carregar um Documento em Go

Aspose.PDF FOSS for Go carrega um PDF a partir de um caminho de arquivo, um io.Reader, ou qualquer das fontes protegidas por senha, sempre retornando um valor *Document para operar. A biblioteca é um módulo Go instalado com go get.

Guia passo a passo

Etapa 1: Instalar o Pacote

Adicione o módulo ao seu projeto:

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

Verifique se o módulo resolve:

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

Etapa 2: Importar Classes Necessárias

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

Etapa 3: Carregar um PDF a partir de um caminho de arquivo

pdf.Open carrega um arquivo PDF e retorna um *Document e um erro:

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

Etapa 4: Carregar um PDF protegido por senha

pdf.OpenWithPassword abre um arquivo que está criptografado com uma senha de usuário:

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

Etapa 5: Carregar um PDF a partir de um fluxo

pdf.OpenStream lê um PDF de qualquer io.Reader — uma resposta de rede, um buffer em memória ou um arquivo aberto separadamente. pdf.OpenStreamWithPassword é o equivalente protegido por senha para fluxos:

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

Etapa 6: Inspecionar o Documento Carregado

Depois de carregado, Document.PageCount relata o número total de páginas e Document.Page(n) recupera uma única página pelo seu índice baseado em 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 comuns e correções

OpenWithPassword continua falhando depois que insiro o que acredito ser a senha correta

Fornecer uma senha incorreta para OpenWithPassword resulta em um erro não nulo. As senhas diferenciam maiúsculas de minúsculas — confirme a senha exata do usuário definida no PDF de origem.

OpenStream retorna um erro em um PDF criptografado

OpenStream não pode abrir PDFs criptografados. Use OpenStreamWithPassword para fluxos protegidos por senha, em vez disso.

Preciso OpenWithPassword para um PDF que acaba não estando criptografado?

Não — abrir um arquivo não criptografado através de OpenWithPassword é permitido e se comporta da mesma forma que uma chamada simples de Open, portanto é seguro usar OpenWithPassword quando você não tem certeza se o arquivo está criptografado.

Document.Page(n) retorna um erro após um sucesso Open

O número da página está fora do intervalo. Page usa um índice baseado em 1 entre 1 e Document.PageCount(); chame PageCount() primeiro para validar o intervalo.


Perguntas Frequentes

Quais formatos de arquivo posso carregar com Open?

Open, OpenWithPassword, OpenStream e OpenStreamWithPassword aceitam apenas entrada PDF.

Como carrego um PDF que já está na memória em vez de no disco?

Envolva o slice de bytes em um bytes.Reader (que satisfaz io.Reader) e passe-o para pdf.OpenStream, ou pdf.OpenStreamWithPassword se os bytes representarem um PDF criptografado.

Como faço para carregar um PDF protegido por senha?

Chame pdf.OpenWithPassword(path, password) para um caminho de arquivo, ou pdf.OpenStreamWithPassword(r, password) para um fluxo.

Como verifico quantas páginas foram carregadas?

Chame Document.PageCount() no *Document retornado.

Ver também

 Português