กรณีการใช้งานทั่วไปสําหรับ Aspose.PDF FOSS สําหรับ Go

กรณีการใช้งานทั่วไปสําหรับ Aspose.PDF FOSS สําหรับ 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) หรือสวิตช์ชนิดเพื่อตรวจสอบชนีสนามก่อน การประกาศ A *pdf.TextBoxField การประกาศเกี่ยวกับการ CheckboxField จะตกใจแน่ๆ.

go get ไม่สําเร็จกับ “โน้ตไม่พบ” Ensure GOPROXY ได้ตั้งค่าเป็น proxy ที่สามารถเข้าถึงได้ (เช่น. GOPROXY=direct) และว่า เครือข่ายของคุณสามารถเข้าถึง github.com.ในสภาพแวดล้อมที่มีช่องอากาศ, ใช้ GONOSUMCHECK หรือกระจกโหมดท้องถิ่น.

SaveTo ไม่สําเร็จหลังจากการ OpenWithPassword ถ้าเธอโทรมา Save หลังจากนั้น OpenWithPassword ไม่โทรหา RemoveEncryption, การออกจะถูกเข้ารหัสใหม่ด้วยคําแปลเดิม นี่คือการคาดหวัง การเรียก RemoveEncryption โดยชัดเจนที่จะสร้างสําเนาที่เรียบง่าย.

การนับหน้าเอกสารรวมผิดพลาด Append ย่อมแปลงตัวรับในสถานที่. การันตีคุณไม่ได้เรียก Append ในวันที่ เอกสารที่ถูกบันทึกไว้แล้ว; เปิดเอกชนฐานอีกครั้งถ้าต้องการ เพื่อสร้างผลิตรวมหลายตัว.


คําถามที่พบบ่อย

ผมสามารถประมวลผล PDF ได้โดยไม่ต้องเขียนในดิสก์?

Document.WriteTo ยอมรับการ io.Writer, คุณสามารถเขียนไปยังพัฟเฟอร์, เครือข่าย ธารสารสตรีม หรือการเขียนตอบโดยไม่สร้างไฟล์ชั่วคราว.

มันปลอดภัยหรือไม่ที่จะใช้ Aspose.PDF FOSS for Go ในขณะเดียวกัน?

Each *Document ตัวอย่างไม่ได้ goroutine-safe ใช้ 1 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, เบฟเฟอร์หรือกระแสทรัมไพป์ไลน์.


See Also

 ภาษาไทย