Preguntas frecuentes
Licencia y código abierto
¿Cuál es la licencia para Aspose.PDF FOSS para Go?
Aspose.PDF FOSS for Go is released under the Licencia MIT.El texto completo de la licencia es incluido en el repositorio de github.com/aspose-pdf-foss/aficionado a PDF-for-go. No se requiere registro, archivo de activación o clave de tiempo de trabajo.
¿Puedo usar Aspose.PDF FOSS para ir en un producto comercial?
La licencia de MIT permite uso comercial, modificación, distribución y uso privado sin restricciones.Tiene que incluir el aviso de copyright y texto de la licencias de MIT en todas las copias o partes sustanciales del software.
¿Existe una versión empresarial?
Aspose.PDF FOSS is the open-source, MIT-licensed edition. A separate commercial Aspose.PDF product is available as the Aspose.PDF — Enterprise Product Family con soporte empresarial, cobertura de formato ampliada y integración en la nube.
Instalación y Requisitos
¿Cómo puedo instalar Aspose.PDF FOSS para Go?
Añade el módulo a tu proyecto:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goImporta con un alias en sus archivos de fuente:
import pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"¿Qué versión Go es necesaria?
1.24 o más tarde es necesario. verifique su versión con go version.
¿Hay dependencias de la biblioteca nativa o sistema?
No. Aspose.PDF FOSS for Go es una implementación pura-Go con ninguna dependencia de C, C++ o CGo. no requiere bibliotecas del sistema, visualizadores PDF o herramientas externas.
El uso de API
¿Cómo puedo abrir un PDF existente?
Uso pdf.Open para los PDFs estándar y pdf.OpenWithPassword Para los archivos protegidos por contraseña:
doc, err := pdf.Open("document.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())¿Cómo puedo dividir un PDF en páginas individuales?
Document.Split Volver a []*Document,Una por página:
doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}¿Cómo puedo combinar varios PDFs?
Document.Append Se mezcla un documento de fuente en lugar:
base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")¿Cómo puedo rellenar un campo AcroForm?
Uso Document.Form().Field(name) Y asegura el tipo concreto:
doc, _ := pdf.Open("form.pdf")
text := doc.Form().Field("customer_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree").(*pdf.CheckboxField)
check.SetChecked(true)
doc.Save("form_filled.pdf")Tipos de campos apoyados: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.
¿Cómo puedo añadir bookmarks?
Crea una OutlineItemCollection y establece a Destination:
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
bm := pdf.NewOutlineItemCollection(doc)
bm.SetTitle("Chapter 1")
bm.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(bm)
doc.Save("manual_with_bookmarks.pdf")Seguridad y cifrado
¿Cómo puedo proteger una contraseña de PDF?
Uso Document.SetEncryption Con una EncryptionOptions Proporcionar una contraseña de usuario para abrir el archivo y una password propietaria para modificar los derechos:
doc, _ := pdf.Open("doc.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("doc_protected.pdf")¿Qué algoritmos de cifrado se apoyan?
Tres algoritmos están disponibles a través de EncryptionOptions.Algorithm:
| Algoritmo | Constante | estándar |
|---|---|---|
| AES-128 | EncryptionAlgAES128 (default de la | ISO 32000-1 |
| AES-256 | EncryptionAlgAES256 | ISO 32000-2 (PDF 2.0) y la versión de la norma |
| RC4-128 | EncryptionAlgRC4_128 | herencia |
¿Cómo puedo abrir un archivo protegido por contraseña?
Uso pdf.OpenWithPassword cuando el archivo requiere autenticación. pasar la contraseña del usuario como segundo argumento; devolve un normal *Document Una vez que la decrypción sucede:
doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())¿Cómo puedo eliminar la cifrado de un PDF?
llamadas Document.RemoveEncryption Después de abrir el archivo con la contraseña correcta.Save the result to write an uncripted copy:
doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")Rendering y texto
¿Cómo puedo render una página PDF a una imagen?
Utilice uno de los tipos de dispositivos: BmpDevice, PngDevice, JpegDevice, TiffDevice,o GifDevice.Construcción del dispositivo con una Resolution valor y llamar al correspondiente Render* El método con un io.Writer y RenderOptions:
doc, _ := pdf.Open("report.pdf")
page, _ := doc.Page(1)
f, _ := os.Create("page1.png")
defer f.Close()
page.RenderPNG(f, pdf.RenderOptions{DPI: 150})¿Cómo puedo buscar texto en un PDF?
llamadas Document.SearchText con una línea de consulta y SearchOptions.El resultado es un El slice de TextMatch valores: cada uno lleva el texto correspondiente, su índice de página y su La cuenca de límite.
doc, _ := pdf.Open("doc.pdf")
matches, _ := doc.SearchText("total", pdf.SearchOptions{CaseInsensitive: true})
for _, m := range matches {
fmt.Printf("page %d: %q\n", m.PageNumber, m.Text)
}¿Cómo puedo hacer una forma?
llamadas Document.Flatten después de rellenar o revisar un formulario. el método enmarca todo el campo Valores en la página gráficos y elimina los campos de formulario interactivo:
doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")Conocidas limitaciones
¿Todos los recursos de PDF están apoyados?
La biblioteca cubre las operaciones de gestión más comunes de documentos: abrir, crear, salvar, dividir, fusionar, extracción de páginas, cifrado, AcroForms, tablas, marcadores, anotaciones, rendering a imagen, búsqueda de texto y flamenco de formularios. Funciones avanzadas como firmas digitales, contenido 3D y conversión PDF/A no pueden ser plenamente implementados en la versión actual. Verificar el repositorio README para el estado de función actual.
¿Qué pasa si uso una afirmación de tipo de campo que no se ajusta?
Un tipo de afirmación sobre Field que no se ajusta al tipo de campo real será panico. Uso pdf.FieldType(f) para inspeccionar el tipo antes de afirmar, o utilizar un interruptor de tipo:
doc, _ := pdf.Open("form.pdf")
for _, f := range doc.Form().Fields() {
switch v := f.(type) {
case *pdf.TextBoxField:
fmt.Println("text:", v.Value())
case *pdf.CheckboxField:
fmt.Println("checked:", v.Checked())
}
}