Preguntes freqüents
Licència i codi obert
Quina és la llicència per a FOSS for Go?
Aspose.PDF FOSS for Go is released under the Licència MIT.El text complet de la llicència és: inclòs en el repositori de la github.com/aspose-pdf-foss/asspose - pdf-Foss-for-go. No es requereix cap registre, fitxer d’activació o clau de temps d ’execució.
Puc utilitzar FOSS per a Go en un producte comercial?
Sí. La llicència MIT permet l’ús comercial i la modificació, distribució i ús privat sense restriccions. Has d’incloure el missatge de copyright i text de la llicencia MIT en totes les còpies o parts substancials del programari.
Hi ha una versió 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 amb suport empresarial, cobertura de format ampliat i integració en el núvol.
Instal·lació i requisits
Com puc instal·lar FOSS per a Go?
Afegir el mòdul al teu projecte Go:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goImporteu-la amb un alias als arxius font:
import pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"Quina versió Go és necessària?
Es requereix 1.24 o més tard. Verifica la teva versió amb go version.
Hi ha dependències de la biblioteca nativa o del sistema?
No. Aspose.PDF FOSS for Go és una implementació pura de Go sense dependències en C, C++, o CGo. No requereix cap biblioteca del sistema, visualitzador PDF ni eines externs.
Ús de l’API
Com puc obrir un PDF existent?
Utilització: pdf.Open per a PDFs estàndards i pdf.OpenWithPassword per a arxius protegits amb contrasenya:
doc, err := pdf.Open("document.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Com puc dividir un PDF en pàgines individuals?
Document.Split retorna un []*Document, una per pàgina:
doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}Com puc fusionar múltiples PDFs?
Document.Append fusiona un document font en el lloc:
base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")Com puc omplir un camp d’AcroForm?
Utilització: Document.Form().Field(name) i afirmen el tipus de formigó:
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")Tipus de camps compatibles: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.
Com puc afegir segells?
Crear un OutlineItemCollection i fixar un 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")Seguretat i encriptació
Com puc protegir un PDF amb contrasenya?
Utilització: Document.SetEncryption amb un EncryptionOptions Structural per aplicar la protecció de contrasenyes i les banderes d’autorització. Fornir una contrassenya d ‘usuari per obrir el fitxer i una password del propietari pels drets de modificació:
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")Quins algoritmes de xifratge són compatibles?
Tres algoritmes estan disponibles a través de: EncryptionOptions.Algorithm:
| Algorithm | Constant | Standard |
|---|---|---|
| AES-128 | EncryptionAlgAES128 (default) | ISO 32000-1 |
| AES-256 | EncryptionAlgAES256 | ISO 32000-2 (PDF 2.0 de sortida) |
| RC4-128 | EncryptionAlgRC4_128 | Legacy |
Com puc obrir un fitxer protegit per contrasenya?
Utilització: pdf.OpenWithPassword Quan el fitxer requereix autenticació. Passa la contrasenya d’usuari com a segon argument; retorna un normal *Document un cop l’escodatge hagi tingut èxit:
doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount())Com puc eliminar el xifratge d’un PDF?
Call Document.RemoveEncryption després d’obrir el fitxer amb la contrasenya correcta. Salvar el resultat per escriure una còpia no codificada:
doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")Rendering i text
Com puc convertir una pàgina PDF en una imatge?
Utilitzar un dels tipus de dispositiu: BmpDevice, PngDevice, JpegDevice, TiffDevice, o GifDevice.Construir el dispositiu amb un Resolution valor i cridar el corresponent Render* mètode amb un io.Writer i de la 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})Com busco text en un PDF?
Call Document.SearchText amb una cadena de consulta i SearchOptions.El resultat és un Testa de TextMatch valors cada un porta el text corresponent, l’índex de la pàgina i el seu index. caixa de limitació.
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)
}Com aplanar un formulari?
Call Document.Flatten Després de omplir o revisar un formulari. El mètode s’utilitza per a fer una llista completa dels camps i les dades que es presenten en el seu lloc d’ús. valors en els gràfics de la pàgina i elimina els camps del formulari interactiu:
doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")Limitacions conegudes
S’apliquen totes les característiques del PDF?
La biblioteca cobreix les operacions de gestió de documents més comunes: obrir, crear, guardar, dividir, fusionar, extracció de pàgines, encriptament, AcroForms, taules, marcadors, anotacions, renderizació a imatge, cerca de text i aplanatge de formulari. Les característiques avançades com signes digitals, contingut 3D i conversió PDF / A poden no estar totalment implementades en la versió actual. Consulteu el repositori README per l’estat actualitzat de la característica.
Què passa si utilitzo una afirmació de tipus camp que no coincideix?
Una afirmació de tipus sobre: Field que no coincideix amb el tipus de camp real entrarà en pànic. Utilització: pdf.FieldType(f) inspeccionar el tipus abans d’afirmar, o utilitzar un interruptor de tipus:
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())
}
}