Зазвичай використовуються випадки Aspose.PDF FOSS for Go.

Зазвичай використовуються випадки 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, буферів або потокових трубопроводів.


See Also

 Українська