Introduction
ในบทความนี้คุณจะเรียนรู้วิธีการทําปฏิบัติการจัดการเอกสาร PDF หลักใน Go โดยใช้ Aspose.PDF FOSS: การเปิดและบันทึกเภท, การสร้าง PDFs ใหม่, แบ่งเภาษีเป็นไฟล์ต่อหน้า, รวมหลาย 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.
บทความนี้ครอบคลุมการจัดหา Document, Page, PageRange,และ DocumentInfo ประเภทที่สร้าง ผิวที่จัดการเอกสารหลัก.
การดําเนินงานหลัก
การเปิดและบันทึกเอกสาร
pdf.Open อัตราการอัพโหลด PDF จากแผ่น และคืน a *Document. OpenWithPassword ทําได้ เช่นเดียวกับไฟล์ที่คุ้มครองด้วยคําลับ. Document.Save เขียนผลกลับไปที่ a เส้นทางไฟล์. Document.WriteTo เขียนไปยัง io.Writer สําหรับในความจําหรือเครือข่าย สถานการณ์.
// Open a standard PDF
doc, err := pdf.Open("input.pdf")
if err != nil {
panic(err)
}
// Open an encrypted PDF
protected, err := pdf.OpenWithPassword("locked.pdf", "userpassword")
if err != nil {
panic(err)
}
// Save to a new path
err = doc.Save("output.pdf")
fmt.Println(protected.PageCount())
การสร้างเอกสารใหม่
pdf.NewDocument สร้างช่องว่าง *Document.ใช้ AddBlankPageFromFormat เพื่อเพิ่มหน้าว่างที่มีขนาดกระดาษมาตรฐาน. PageFormat ให้ค่าคงที่รูปแบบที่มีชื่อ (PageFormatA4, PageFormatLetter, ฯลฯ).
doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)
doc.Save("new_document.pdf")
การแบ่งเอกสาร
Document.Split แบ่ง PDF เป็นส่วนละ 1 หน้า *Document ค่าของแต่ละตัว เอกสารที่กลับมีแค่หน้าเดียว และสามารถบันทึกได้อย่างอิสระ เป็นที่ใช้สําหรับการแบ่งรายงานผลิตแบบชุด หรือแยกหน้าคอมพิวเตอร์ออกใบคิดเลข.
doc, _ := pdf.Open("multi_page.pdf")
pages, err := doc.Split()
if err != nil {
panic(err)
}
for i, p := range pages {
filename := fmt.Sprintf("page_%03d.pdf", i+1)
if err := p.Save(filename); err != nil {
fmt.Printf("Failed to save page %d: %v\n", i+1, err)
}
}
fmt.Printf("Split into %d pages\n", len(pages))
การรวม PDF หลายแบบ
Document.Append ผสมกันเป็นครั้งที่สอง *Document ในตัวรับในที่, ปิด ทุกหน้าจากแหล่งโทรหา Append การต่อเนื่องในการผูกเชือกเอกสารหลายครั้ง ก่อนการ หน่วยเดียว Save.เอกสารแหล่งไม่ได้ถูกปรับเปลี่ยน.
base, _ := pdf.Open("report_intro.pdf")
section1, _ := pdf.Open("section1.pdf")
section2, _ := pdf.Open("section2.pdf")
appendix, _ := pdf.Open("appendix.pdf")
base.Append(section1)
base.Append(section2)
base.Append(appendix)
base.Save("complete_report.pdf")
การสกัดระดับหน้า
PageRange เป็นระดับรวม (เนื่องจาก 1 โดยใช้ From/To สายการส่งไปยัง Document.Extract เพื่อผลิตใหม่ *Document มีเพียงตัวเลือกเท่านั้น นี้เป็นประโยชน์สําหรับการสร้างรายการส่งออกต่อหัวข้อหรือสําเนาที่ถูกแก้ไข ที่ เลิกหน้าบางส่วน.
doc, _ := pdf.Open("long_report.pdf")
// Extract pages 3 through 7
subset, err := doc.Extract(pdf.PageRange{From: 3, To: 7})
if err != nil {
panic(err)
}
subset.Save("pages_3_to_7.pdf")
การอ่านและเขียนเมตาเดทของเอกสาร
Document.Info กลับ a DocumentInfo การเปิดเผยโครงสร้าง สายการใช้งานในวัสดุคําศัพท์: Title, Author, Subject, Keywords, Creator, Producer, CreationDate,และ ModDate. ปรับแปลงสนามโดยตรง, จากนั้นเรียก Document.SetInfo เพื่อเขียนโครงสร้างที่อัพเดทกลับ ก่อนการเรียก Save.
doc, _ := pdf.Open("report.pdf")
info, _ := doc.Info()
// Read current values
fmt.Printf("Title: %s\nAuthor: %s\n", info.Title, info.Author)
// Update fields
info.Title = "Annual Report 2026"
info.Author = "Finance Team"
info.Keywords = "annual, report, finance, 2026"
doc.SetInfo(info)
doc.Save("report_updated.pdf")
การ เข้า ไป ใน หน้า แต่ ละ หน้า
Document.Page(n) ได้รับการค้นหา a *Page โดยอัตราฐาน 1. Document.PageCount การคืนสินค้า จํานวนหน้าทั้งหมด หน้าเปิดเผยคุณสมบัติทางภูมิศาสตร์สําหรับการอ่านกล่องหน้าและ ขนาด.
doc, _ := pdf.Open("document.pdf")
fmt.Printf("Page count: %d\n", doc.PageCount())
page, _ := doc.Page(1)
size, err := page.Size()
if err != nil {
panic(err)
}
fmt.Printf("Page 1 size: %.0f x %.0f pt\n", size.Width, size.Height)
เริ่มต้นอย่างรวดเร็ว
ติดตั้งโหมดด้วย go get, แล้วทําตัวอย่างที่เต็มไปข้างล่าง ตัวอย่างเปิด เอกสารแหล่ง, ถอดหน้าแรก 3 หน้าเป็นเอกลักษณ์ใหม่ ปรับปรุงข้อมูลที่อยู่ในตัวเลข DocumentInfo แผนที่ metadata และบันทึกผลการทํางานในแผ่นดิสก์.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go
ตัวอย่างที่ครบ ซึ่งเปิดเอกสาร, สกัดหน้า 13 และบันทึกผลด้วยเมตาเดทที่อัพเดต:
package main
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)
func main() {
// Open source document
src, err := pdf.Open("source.pdf")
if err != nil {
panic(err)
}
// Extract pages 1-3
subset, err := src.Extract(pdf.PageRange{From: 1, To: 3})
if err != nil {
panic(err)
}
// Update metadata
info, _ := subset.Info()
info.Title = "Pages 1-3 Extract"
info.Author = "Document Pipeline"
subset.SetInfo(info)
if err := subset.Save("extract_pages_1_3.pdf"); err != nil {
panic(err)
}
fmt.Printf("Saved %d pages\n", subset.PageCount())
}
หลักสูตรและใบอนุญาต
Aspose.PDF FOSS for Go is released under the MIT license. There are no usage restrictions, ไม่มีค่าใช้จ่ายในการทํางาน และไม่มีความจําเป็นของการลงทะเบียน โค้ดแหล่งสามารถหาได้ที่ github.com/aspose-pdf-foss/assume- pdf-Foss-for-go.