مقدمه
Aspose.PDF FOSS for Go یک کتابخانهٔ خالص Go برای کار با اسناد PDF است. این کتابخانه یک API را برای ایجاد PDFهای جدید از ابتدا، باز کردن و ویرایش فایلهای موجود، تقسیم اسناد به خروجیهای صفحه به صفحه، ادغام چندین PDF، و اعمال رمزنگاری مبتنی بر رمز عبور فراهم میکند — همه بدون هیچ وابستگی بومی C یا C++.
این کتابخانه بهصورت ماژول Go در github.com/aspose-pdf-foss/aspose-pdf-foss-for-go در دسترس است و تحت مجوز MIT منتشر شده است. نیازمند Go 1.24+.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goاین پست به قابلیتهای اصلی میپردازد: عملیات اسناد، امنیت، پر کردن AcroForm، چیدمان جدول، نشانکها و حاشیهنویسیها.
ویژگیهای کلیدی
تقسیم و ادغام اسناد
نوع Document Split() را برای تقسیم یک PDF به اسناد صفحه به صفحه فراهم میکند و Append() را برای ادغام یک سند خارجی بهصورت درجا ارائه میدهد. PageRange به شما امکان کار با زیرمجموعهای از صفحات برای استخراج یا صادرات انتخابی را میدهد. Metadata فیلدهای اطلاعات سند را برای خواندن و نوشتن نویسنده، عنوان و تاریخ ایجاد در دسترس میگذارد.
doc, _ := pdf.Open("report.pdf")
// Split into per-page PDFs
pages, _ := doc.Split()
for i, p := range pages {
p.Save(fmt.Sprintf("page%03d.pdf", i+1))
}
// Merge a second PDF into doc
doc2, _ := pdf.Open("appendix.pdf")
doc.Append(doc2)
doc.Save("combined.pdf")
رمزگذاری رمز عبور و مجوزها
EncryptionOptions رمز عبور کاربر، رمز عبور مالک و عملیاتهای مجاز را در یک فراخوانی به SetEncryption پیکربندی میکند. الگوریتمهای پشتیبانیشده AES-128 (پیشفرض)، AES-256 (ISO 32000-2، خروجی PDF 2.0 تولید میکند) و RC4-128 برای سازگاری با نسخههای قدیمی هستند. Permissions به شما امکان میدهد عملیاتهای فردی — چاپ، کپی، دسترسیپذیری — را بهصورت مستقل اجازه یا رد کنید. OpenWithPassword فایلهای رمزگذاریشده را باز میکند؛ RemoveEncryption قبل از ذخیرهسازی یک نسخه متنی رمز عبور را حذف میکند.
doc, _ := pdf.Open("contract.pdf")
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "userpass",
OwnerPassword: "ownerpass",
Permissions: &pdf.Permissions{AllowPrint: true, AllowCopy: false},
})
doc.Save("contract_protected.pdf")
AcroForm پردازش فیلد
Form دسترسی به تمام فیلدهای AcroForm در یک سند را فراهم میکند. Field رابط پایه است؛ ادعاهای نوع دسترسی به TextBoxField، CheckboxField، RadioButtonField، ComboBoxField، ListBoxField و ButtonField را میدهند. مقادیر فیلد را با نام فیلد تنظیم کنید — نمایشگر بهصورت خودکار ظاهرها را هنگام ذخیرهسازی از طریق /NeedAppearances=true بازتولید میکند.
doc, _ := pdf.Open("application.pdf")
text := doc.Form().Field("full_name").(*pdf.TextBoxField)
text.SetValue("Jane Doe")
check := doc.Form().Field("agree_terms").(*pdf.CheckboxField)
check.SetChecked(true)
combo := doc.Form().Field("country").(*pdf.ComboBoxField)
combo.SetSelected(0)
doc.Save("application_filled.pdf")
چیدمان جدول
Table، Row و Cell چیدمانهای شبکهای ساختار یافته را بر روی صفحات PDF میسازند. BorderInfo سبک حاشیه را برای هر سلول یا کل جدول پیکربندی میکند. MarginInfo فاصله داخلی سلول را تنظیم میکند. TextStyle قلم، اندازه، رنگ و ترازبندی را از طریق HAlign و VAlign کنترل میکند. Image میتواند درون سلولها همراه با متن قرار گیرد.
doc, _ := pdf.Open("invoice_template.pdf")
tbl := pdf.NewTable()
tbl.SetColumnWidths([]float64{120, 80, 80})
row := tbl.AddRow()
row.AddCell("Item")
row.AddCell("Qty")
row.AddCell("Price")
page, _ := doc.Page(1)
page.AddTable(tbl, pdf.Rectangle{LLX: 72, LLY: 100, URX: 540, URY: 700})
doc.Save("invoice.pdf")
نشانکها و ناوبری
OutlineItemCollection نمایانگر یک ورودی نشانک است. از SetTitle، SetBold، SetColor و SetDestination برای پیکربندی آن استفاده کنید. DestinationXYZ یک مختصات دقیق صفحه را هدف میگیرد؛ DestinationFit صفحه را در نمایشگر جا میاندازد. NamedDestinations هدفهای پرش قابل استفاده مجدد را که با نام در دسترس هستند، ثبت میکند.
doc, _ := pdf.Open("manual.pdf")
page, _ := doc.Page(1)
chapter := pdf.NewOutlineItemCollection(doc)
chapter.SetTitle("Chapter 1: Getting Started")
chapter.SetBold(true)
chapter.SetDestination(pdf.NewDestinationXYZ(page, 0, 800, 1.0))
doc.Outlines().Add(chapter)
section := pdf.NewOutlineItemCollection(doc)
section.SetTitle("Installation")
section.SetDestination(pdf.NewDestinationFit(page))
chapter.Add(section)
doc.Save("manual_with_bookmarks.pdf")
حاشیهنویسیها و مهرها
AnnotationCollection تمام حاشیهنویسیهای یک صفحه را نگه میدارد. TextAnnotation یک نظر چسبان اضافه میکند. StampAnnotation با استفاده از یکی از مقادیر پیشتعریفشدهٔ StampName، یک مهر تأیید یا اطلاعاتی قرار میدهد. HighlightAnnotation نواحی متن را علامتگذاری میکند. RedactAnnotation محتوی حساس را بهصورت دائمی حذف میکند. LinkAnnotation اقدامات URI یا مقصد-صفحه را به نواحی قابل کلیک وصل میکند.
doc, _ := pdf.Open("draft.pdf")
page, _ := doc.Page(1)
stamp := pdf.NewStampAnnotation(page, pdf.Rectangle{LLX: 100, LLY: 700, URX: 250, URY: 750}, pdf.StampNameApproved)
page.Annotations().Add(stamp)
doc.Save("draft_approved.pdf")
شروع سریع
ماژول را نصب کنید:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goیک جریان کاری حداقل — یک PDF را باز کنید، آن را با رمز عبور رمزگذاری کنید، و ذخیره کنید:
package main
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)
func main() {
doc, err := pdf.Open("input.pdf")
if err != nil {
panic(err)
}
doc.SetEncryption(pdf.EncryptionOptions{
UserPassword: "secret",
OwnerPassword: "ownerSecret",
Permissions: &pdf.Permissions{AllowPrint: true},
})
if err := doc.Save("output_encrypted.pdf"); err != nil {
panic(err)
}
fmt.Println("Saved output_encrypted.pdf")
}
منبع باز و مجوزدهی
Aspose.PDF FOSS برای Go تحت مجوز MIT منتشر شده است. هیچ محدودیت استفادهای وجود ندارد، هیچ هزینه زمان اجرای ندارد و نیازی به ثبتنام نیست. کد منبع در github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.
استفاده تجاری تحت شرایط مجوز MIT مجاز است. اگر پروژه شما به پشتیبانی سطح سازمانی، پوشش فرمتهای گسترده یا ادغام ابری نیاز دارد، Aspose.PDF — Enterprise Product Family یک ارائه تجاری جداگانه است.