הכניסה

בפוסט זה, תלמד כיצד לבצע פעולות ניהול מסמכים PDF הליבה ב- Go באמצעות Aspose.PDF FOSS: פתיחת וחסכון במסמך, יצירת PDFים חדשים, חלוקת מסכם לתוך קבצים לפי דף, שילוב של PDFs מרובים, הוצאת שורות עמודים וכתבת נתונים מטא-דאו של המסמכה.

הספרייה היא מודול של 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 מהדיסק ולהחזיר את ה- *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 לדף אחד *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))

להדביק PDFs מרובים

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")

קריאה וכתבה של מסמכים Metadata

Document.Info חוזר א 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,לאחר מכן, בצע את הדוגמה המלאה למטה.דוגמא פותחת מסמך מקור, מוציא את שלושת הדפים הראשונים שלו לתוך מסכם חדש, מתעדכן את המסמכים. DocumentInfo שדות metadata, ומאוחסן את התוצאה לדיסק.

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

דוגמה מלאה שמפתחת מסמך, מוציאה עמודים 1–3, ומאוחרת את התוצאה עם נתונים מתעדכנים:

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/asspose - pdf-for-go.


להתחיל

משאבים קשורים