Общи случаи на употреба за Aspose.PDF FOSS for Go
Aspose.PDF FOSS for Go is a pure-Go module for PDF document management. This article Обхваща най-често необходимите операции, използвайки системата за управление на данните. Document, Form, EncryptionOptions, Table, и OutlineItemCollection Инсталиране с go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
Постепенно ръководство
Стъпка 1: Инсталирайте пакета
Добавете зависимостта на модула Go:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goСтъпка 2: Импортиране на пакета
Използвайте алиас, за да поддържате препратки към вноса кратки:
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)Стъпка 3: Разделяне на PDF файл в по-страници
Document.Split разделя многостраничен документ на един *Document на страница.
doc, err := pdf.Open("report.pdf")
if err != nil {
panic(err)
}
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("report_page_%03d.pdf", i+1))
}
fmt.Printf("Split %d pages\n", len(pages))Стъпка 4: Съединете няколко PDF файла в един
Document.Append съчетава страници от втори документ на място преди запазване.
base, _ := pdf.Open("intro.pdf")
chapter1, _ := pdf.Open("chapter1.pdf")
chapter2, _ := pdf.Open("chapter2.pdf")
appendix, _ := pdf.Open("appendix.pdf")
base.Append(chapter1)
base.Append(chapter2)
base.Append(appendix)
base.Save("full_document.pdf")Стъпка 5: Приложи шифроване с парола
EncryptionOptions конфигурира паролата на потребителя, собственика и алгоритъма; за всяка операция Permissions в едно обаждане:
doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "clientpass",
OwnerPassword: "adminpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")За да се произведе обикновена текстова копия от криптиран файл:
doc, _ := pdf.OpenWithPassword("contract_protected.pdf", "clientpass")
doc.RemoveEncryption()
doc.Save("contract_decrypted.pdf")Стъпка 6: Попълнете акроформата
Итерация или целеви полета по име.TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField).
doc, _ := pdf.Open("application_form.pdf")
name := doc.Form().Field("applicant_name").(*pdf.TextBoxField)
name.SetValue("Jane Doe")
agree := doc.Form().Field("terms_accepted").(*pdf.CheckboxField)
agree.SetChecked(true)
country := doc.Form().Field("country").(*pdf.ComboBoxField)
country.SetSelected(0)
doc.Save("application_filled.pdf")Стъпка 7: Създайте план за масата
Добавете a. Table с: Row и в) Cell вписвания на страница за генериране на фактура или доклад:
doc, _ := pdf.Open("invoice_template.pdf")
page, _ := doc.Page(1)
tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{200, 80, 100})
header := tbl.AddRow()
header.AddCell("Description")
header.AddCell("Qty")
header.AddCell("Amount")
row := tbl.AddRow()
row.AddCell("PDF Processing Service")
row.AddCell("1")
row.AddCell("$500.00")
page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")Стъпка 8: Добавяне на дърво за бележки
OutlineItemCollection създава закладки с вграждане на глави/раздели и DestinationXYZ Цели на страници:
doc, _ := pdf.Open("manual.pdf")
page1, _ := doc.Page(1)
page2, _ := doc.Page(2)
ch1 := pdf.NewOutlineItemCollection(doc)
ch1.SetTitle("Introduction")
ch1.SetBold(true)
ch1.SetDestination(pdf.NewDestinationXYZ(page1, 0, 792, 1.0))
doc.Outlines().Add(ch1)
ch2 := pdf.NewOutlineItemCollection(doc)
ch2.SetTitle("Configuration")
ch2.SetDestination(pdf.NewDestinationFit(page2))
doc.Outlines().Add(ch2)
doc.Save("manual_bookmarked.pdf")Обичайни проблеми и решения
pdf.Open Връща грешка за валидни PDF файлове Проверете дали пътят на файла е правилен и че файлът не е отворен в друг код. В Windows блокирането на файловете може да предотврати четенето.
Прикриване на формулярните полета при използването на “Тайп” Използване на: pdf.FieldType(f) или превключвател за проверка на типа поле преди твърдение. *pdf.TextBoxField твърдение за CheckboxField Ще се паникьосвам.
go get Провал с “модул не е намерен” Осигуряване на GOPROXY е зададен на достъпна прокси (напр. GOPROXY=direct) и че мрежата ви може да достигне до github.com.В среда с въздушни провали, използване на GONOSUMCHECK или локално огледало на модула.
SaveTo не работи след OpenWithPassword Ако се обадиш… Save след това OpenWithPassword без да се обаждаш. RemoveEncryption, Изходът е повторно криптиран с оригиналната парола. Това е очакваното поведение повикване RemoveEncryption изрично да се произведе обикновена копие.
Смятането на страниците в обединения документ е грешно. Append Уверете се, че не ви каните. Append на 1 януари документ, който вече е бил запазен; отворете отново базовия документ ако се наложи. да се изграждат множество обединени изходи.
Често задавани въпроси
Мога ли да обработя PDF файлове без запис на диск?
Document.WriteTo приема и io.Writer, така че можете да пишете на буфер, мрежата поток, или писател на отговори без създаване на временен файл.
Безопасно ли е да използвате Aspose.PDF FOSS за Go едновременно?
Всеки от тях. *Document Инстанция не е goroutine-безопасен. Използвайте един Document на горотин, или защита на споделени инстанции с мутекс.
Как да прочета обратно стойностите на полето от попълнен формуляр?
Използване на: Field.Value() за достъп до специфични за типа аксесоари на всяко поле или заявка за тип като например: CheckboxField.Checked() или с други: ComboBoxField.SelectedIndex().
Мога ли да създам PDF от нулата без съществуващ шаблон?
- Да, много добре.
pdf.NewDocument()създава празен документ.AddBlankPageFromFormat(pdf.PageFormatA4)да добавите празна страница, след което додайте съдържание (таблици, бележки и т.н.) преди съхранение.
Каква е разликата между: Document.Save и в) Document.WriteTo?
Save(path string) пише на път за файл. WriteTo(w io.Writer) Пише на всеки. io.Writer полезен за HTTP отговори, буфери или поточни тръбопроводи.