Често задавани въпроси

Често задавани въпроси

Лицензиране и отворен код

Каква е лицензът за “FOSS for Go”?

Aspose.PDF FOSS for Go is released under the Лицензия MIT.Пълният текст на лиценза е: включени в репозитория на github.com/aspose-pdf-foss/asspose - pdf-Foss-for-go (на английски: GitHub). Не се изисква регистрация, активиране на файл или ключ за изпълнение.

Мога ли да използвам Aspose.PDF FOSS за Go в търговски продукт?

Да. Лицензът на MIT позволява неограничено търговско използване, модификация, разпространение и частно ползване. Трябва да включите уведомлението за авторските права и текста на лиценза на MIT във всички копия или значителни части от софтуера.

Има ли корпоративна версия?

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 с корпоративна поддръжка, разширено покритие на формата и облачна интеграция.


Инсталация и изисквания

Как да инсталирам Aspose.PDF FOSS за Go?

Добавете модула към проекта си на Go:

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

Импортирайте го с псевдоним в източните файлове:

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

Каква версия на Go е необходима?

Проверявайте версията си с: go version.

Има ли зависимости от местна или системна библиотека?

FOSS for Go е чиста реализация на Go без зависимости от C, C++, или CGo. Не изисква никакви системни библиотеки, PDF прозорци или външни инструменти.


Използване на API

Как да отворя съществуващ PDF файл?

Използване на: pdf.Open за стандартни PDF файлове и pdf.OpenWithPassword за защитени с парола файлове:

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

Как да разделя PDF на отделни страници?

Document.Split връща a []*Document, по една на страница:

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

Как да слия няколко PDF файла?

Document.Append съчетава източник на документа в негово място:

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

Как да попълня поле на AcroForm?

Използване на: Document.Form().Field(name) и посочете конкретния вид бетон:

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

Поддържани видове полета: TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ButtonField.

Как да добавя закладки?

Създаване на OutlineItemCollection и да се постави 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")

Безопасност и криптиране

Как да защитя PDF с парола?

Използване на: Document.SetEncryption с един EncryptionOptions struct за прилагане на защитата от пароли и знамена за разрешения. Предоставяйте потребителска парола за откриване на файла и собственикова пароля за права за промяна:

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

Кои алгоритми за криптиране се поддържат?

Три алгоритма са достъпни чрез: EncryptionOptions.Algorithm:

АлгоритмПостояннаСтандартно
AES-128EncryptionAlgAES128 (по подразбиране)ISO 32000-1
AES-256EncryptionAlgAES256ISO 32000-2 (изход PDF 2.0)
RC4-128EncryptionAlgRC4_128Наследство

Как да отворя защитен файл с парола?

Използване на: pdf.OpenWithPassword когато файлът изисква аутентификация. Предайте паролата на потребителя като втори аргумент; връща нормален код, който се използва за идентификацията на файла. *Document след като дешифрирането е успешно:

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

Как да премахна криптирането от PDF?

Обади се. Document.RemoveEncryption след отваряне на файла с правилната парола. Запази резултата, за да напишеш нешифровано копие:

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

Редактиране и текст

Как да превърна PDF страница в изображение?

Използвайте един от типовете устройства: BmpDevice, PngDevice, JpegDevice, TiffDevice, или GifDevice.Конструирайте устройството с Resolution стойност и да се обади на съответната Render* метод с io.Writer и в) 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})

Как да търся текст в PDF?

Обади се. Document.SearchText с реплика за запитване и SearchOptions.Резултатът е: Слиз от TextMatch стойности всяка съдържа съответния текст, индекса на страницата и нейната гранична кутия.

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

Как да изравня формуляра?

Обади се. Document.Flatten след попълване или преглед на формуляр. Методът изпече всички полета стойности в графиката на страницата и премахва полетата за интерактивни формуляри:

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

Известни ограничения

Поддържат ли се всички PDF функции?

Библиотеката обхваща най-често срещаните операции за управление на документи: отваряне, създаване, съхранение, разделяне и сливане на страниците, криптиране, AcroForms, таблици, букмаркове, аннотации, редериране към изображения, търсене на текст и разгласяване. Разширени функции като цифрови подписи, 3D съдържание и конвертиране PDF/A може да не са напълно имплементирани в текущото издание. Проверете в хранилището README статуса на настоящата функция.

Какво се случва, ако използвам твърдение от типа поле, което не съвпада?

Заявление за типа на: Field Ако не съвпада с реалния тип поле, ще се паникьосваме. Използване на: pdf.FieldType(f) да проверява типа преди налагане или да използва превключвател за тип:

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())
    }
}
 Български