Зазвичай використовуються випадки 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 не працює з “модуль не знайдений” Ensure GOPROXY встановлено на доступний прокси (наприклад,. GOPROXY=direct) і що ваша мережа може досягнути github.com.У середовищах з зануреністю повітря, використовуйте: GONOSUMCHECK або локальне дзеркало модуля.
SaveTo не працює після: OpenWithPassword Якщо ти зателефонуєш… Save після OpenWithPassword без дзвінків. RemoveEncryption, вихід перешифровується з оригінальним паролем. Це очікуваний поведінка дзвінок RemoveEncryption явно, щоб створити копію простого тексту.
Вираження сторінки з’єднаного документа не правильне . Append Переконайтеся, що ви не називаєте. Append на документ, який вже був збережений; знову відкрити базовий документ якщо потрібно побудувати кілька об’єднаних виходів.
Часто задавані запитання
Чи можу я обробляти PDF-файли без запису на диск?
Document.WriteTo приймає io.Writer, так що ви можете писати в буфер, мережу потоку, або записуючий письмо без створення тимчасового файлу.
Чи безпечно одночасно використовувати Aspose.PDF FOSS для Go?
Each *Document Інстанція не є безпечною для горутин. Використовуйте одну з них. 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, буферів або потокових трубопроводів.