Aspose.PDF FOSS for Go के सामान्य उपयोग केस

Aspose.PDF FOSS for Go के सामान्य उपयोग केस

Aspose.PDF FOSS for Go एक शुद्ध-Go मॉड्यूल है PDF दस्तावेज़ प्रबंधन के लिए। यह लेख 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: कई PDFs को एक में मिलाएँ

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: एक AcroForm भरें

नाम द्वारा फ़ील्ड्स को इटरैट या टार्गेट करें। ठोस प्रकार (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: एक टेबल लेआउट बनाएं

इनवॉइस या रिपोर्ट निर्माण के लिए पृष्ठ पर 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 “module not found” के साथ विफल हो जाता है Ensure GOPROXY को एक पहुंच योग्य प्रॉक्सी पर सेट किया गया है (उदा. GOPROXY=direct) और आपका नेटवर्क पहुँच सकता है github.com. एयर-गैप्ड वातावरण में, उपयोग करें GONOSUMCHECK या एक स्थानीय मॉड्यूल मिरर।

SaveTo विफल हो जाता है बाद में OpenWithPassword यदि आप कॉल करते हैं Save after OpenWithPassword बिना कॉल किए RemoveEncryption, आउटपुट मूल पासवर्ड के साथ फिर से एन्क्रिप्ट किया जाता है। यह अपेक्षित व्यवहार है — कॉल RemoveEncryption स्पष्ट रूप से एक प्लेनटेक्स्ट कॉपी बनाने के लिए।

मर्ज किया गया दस्तावेज़ पृष्ठ गिनती गलत है Append रिसीवर को इन-स्थान पर बदलता है। सुनिश्चित करें कि आप कॉल नहीं कर रहे हैं Append ऐसे दस्तावेज़ पर जो पहले ही सहेजा जा चुका है; यदि आपको कई मर्ज किए गए आउटपुट बनाना है तो बेस दस्तावेज़ को फिर से खोलें।


अक्सर पूछे जाने वाले प्रश्न

क्या मैं PDFs को डिस्क पर लिखे बिना प्रोसेस कर सकता हूँ?

Document.WriteTo एक io.Writer स्वीकार करता है, इसलिए आप बफ़र, नेटवर्क स्ट्रीम, या रिस्पॉन्स राइटर में लिख सकते हैं बिना अस्थायी फ़ाइल बनाए।

क्या Aspose.PDF FOSS को Go के साथ एक साथ उपयोग करना सुरक्षित है?

प्रत्येक *Document इंस्टेंस goroutine-सेफ नहीं है। प्रत्येक goroutine के लिए एक 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 प्रतिक्रियाओं, बफ़र्स, या स्ट्रीम पाइपलाइनों के लिए उपयोगी।


यह भी देखें

 हिन्दी