حالات الاستخدام الشائعة ل 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 صالحة تحقق من أن طريق الملف صحيح وأن المستند غير مفتوح في موقع آخر. في ويندوز، يمكن أن يمنع قفل الملفات من القراءة.

إعلان النوع عند الوصول إلى حقول الاستمارة استخدام pdf.FieldType(f) أو مفتاح النوع للتفتيش على نوع الحقل قبل تأكيد. *pdf.TextBoxField تصريح عن CheckboxField سوف يذعر.

go get فشل مع “وحدة غير موجودة” تأمين GOPROXY يتم تعيينها على وكيل قابل للوصول (مثل:. GOPROXY=direct) وذلك يمكن لشبكتك أن تصل إلى github.com.في البيئات التي تفتقر إلى الهواء، استخدم GONOSUMCHECK أو مرآة الوحدة المحلية.

فشل SaveTo بعد OpenWithPassword إذا اتصلتِ Save بعد ذلك OpenWithPassword بدون أن تتصل به RemoveEncryption, يتم إعادة تشفير المخرجات بالكلمة السرية الأصلية. هذا هو المتوقع السلوك الإتصال RemoveEncryption صراحة لإنتاج نسخة نصيّاً.

عدد صفحات المستندات المنضمة خطأ Append يتغير المستقبل في المكان. تأكد من أنك لا تتصل Append في وثيقة تم حفظها بالفعل، إعادة فتح المستند الأساسي إذا كنت بحاجة إلى ذلك. لبناء مخرجات متعددة.


الأسئلة المتكررة

هل يمكنني معالجة ملفات PDF دون الكتابة إلى القرص؟?

Document.WriteTo يقبل بـ io.Writer,، حتى تتمكن من الكتابة إلى عازل، الشبكة أو كاتب استجابة دون إنشاء ملف مؤقت.

هل من الآمن استخدام Aspose.PDF FOSS for Go في نفس الوقت؟?

كل واحد منهم *Document مثال ليس آمن للعملية. استخدم واحد Document لكل دوروتين،, أو حماية الحالات المشتركة مع mutex.

كيف أقرأ قيم الحقل من نموذج مملوء؟?

استخدام 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، أو المضخات، وخطوط التدفق.


انظر أيضا

 العربية