Vanliga frågor

Vanliga frågor

Licensiering och öppen källkod

Vad är licensen för Aspose.PDF FOSS för Go?

Aspose.PDF FOSS för Go är släppt under MIT License. Den fullständiga licenstexten finns i arkivet på github.com/aspose-pdf-foss/aspose-pdf-foss-for-go. Ingen registrering, aktiveringsfil eller környckel krävs.

Kan jag använda Aspose.PDF FOSS för Go i en kommersiell produkt?

Ja. MIT-licensen tillåter obegränsad kommersiell användning, modifiering, distribution och privat bruk. Du måste inkludera upphovsrättsmeddelandet och MIT-licenstexten i alla kopior eller väsentliga delar av mjukvaran.

Finns det en företagsversion?

Aspose.PDF FOSS är den öppna källkods-MIT-licensierade utgåvan. En separat kommersiell Aspose.PDF produkt finns tillgänglig som Aspose.PDF — Enterprise Product Family med företagsstöd, utökad formattäckning och molnintegration.


Installation och krav

Hur installerar jag Aspose.PDF FOSS för Go?

Lägg till modulen i ditt Go-projekt:

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

Importera den med ett alias i dina källkodsfiler:

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

Vilken Go-version krävs?

Go 1.24 eller senare krävs. Verifiera din version med go version.

Finns det inhemska eller systembiblioteksberoenden?

Nr. Aspose.PDF FOSS för Go är en ren-Go-implementation utan C-, C++- eller CGo-beroenden. Den kräver inga systembibliotek, PDF-visare eller externa verktyg.


API Usage

Hur öppnar jag en befintlig PDF?

Använd pdf.Open för standard-PDF-filer och pdf.OpenWithPassword för lösenordsskyddade filer:

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

Hur delar jag en PDF i enskilda sidor?

Document.Split returnerar en []*Document, en per sida:

doc, _ := pdf.Open("report.pdf")
pages, _ := doc.Split()
for i, p := range pages {
    p.Save(fmt.Sprintf("page_%03d.pdf", i+1))
}

Hur slår jag samman flera PDF-filer?

Document.Append slår samman ett källdokument på plats:

base, _ := pdf.Open("part1.pdf")
part2, _ := pdf.Open("part2.pdf")
base.Append(part2)
base.Save("combined.pdf")

Hur fyller jag i ett AcroForm-fält?

Använd Document.Form().Field(name) och ange den konkreta typen:

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

Stödda fälttyper: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.

Hur lägger jag till bokmärken?

Skapa en OutlineItemCollection och ange en 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")

Säkerhet och kryptering

Hur skyddar jag en PDF med lösenord?

Använd Document.SetEncryption med en EncryptionOptions-struktur för att tillämpa lösenordsskydd och behörighetsflaggor. Ange ett användarlösenord för att öppna filen och ett ägarlösenord för ändringsrättigheter:

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

Vilka krypteringsalgoritmer stöds?

Tre algoritmer är tillgängliga via EncryptionOptions.Algorithm:

AlgorithmConstantStandard
AES-128EncryptionAlgAES128 (standard)ISO 32000-1
AES-256EncryptionAlgAES256ISO 32000-2 (PDF 2.0-utdata)
RC4-128EncryptionAlgRC4_128Legacy

Hur öppnar jag en lösenordsskyddad fil?

Använd pdf.OpenWithPassword när filen kräver autentisering. Skicka användarlösenordet som det andra argumentet; den returnerar en normal *Document när dekrypteringen lyckas:

doc, err := pdf.OpenWithPassword("protected.pdf", "userpass")
if err != nil {
    panic(err)
}
fmt.Println(doc.PageCount())

Hur tar jag bort kryptering från en PDF?

Anropa Document.RemoveEncryption efter att ha öppnat filen med rätt lösenord. Spara resultatet för att skriva en okrypterad kopia:

doc, _ := pdf.OpenWithPassword("protected.pdf", "userpass")
doc.RemoveEncryption()
doc.Save("decrypted.pdf")

Rendering och text

Hur renderar jag en PDF-sida till en bild?

Använd en av enhetstyperna: BmpDevice, PngDevice, JpegDevice, TiffDevice eller GifDevice. Konstruera enheten med ett Resolution-värde och anropa den motsvarande Render*-metoden med en io.Writer och 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})

Hur söker jag efter text i en PDF?

Anropa Document.SearchText med en söksträng och SearchOptions. Resultatet är en skiva av TextMatch-värden — var och en innehåller den matchade texten, dess sidindex och dess avgränsningsruta.

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

Hur plattar jag till ett formulär?

Anropa Document.Flatten efter att ha fyllt i eller granskat ett formulär. Metoden bakar in alla fältvärden i sidgrafiken och tar bort de interaktiva formulärfälten:

doc, _ := pdf.Open("filled.pdf")
doc.Flatten()
doc.Save("flat.pdf")

Kända begränsningar

Stöds alla PDF-funktioner?

Biblioteket täcker de mest vanliga dokumenthanteringsoperationerna: öppna, skapa, spara, dela, slå ihop, sidutdrag, kryptering, AcroForms, tabeller, bokmärken, annotationer, rendering till bild, textsökning och formplattning. Avancerade funktioner såsom digitala signaturer, 3D-innehåll och PDF/A-konvertering kanske inte är fullt implementerade i den aktuella releasen. Kontrollera repository-README för den aktuella funktionsstatusen.

Vad händer om jag använder en fält-typassertion som inte matchar?

En typassertion på Field som inte matchar den faktiska fälttypen kommer att panikera. Använd pdf.FieldType(f) för att inspektera typen innan du gör assertion, eller använd en typväxling:

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())
    }
}

Se även

 Svenska