چگونه یک سند را در Go بارگذاری کنیم
Aspose.PDF FOSS برای Go یک PDF را از مسیر فایل، یک io.Reader، یا هر یک از منابع محافظتشده با رمز عبور بارگذاری میکند و همیشه یک مقدار *Document را برای کار بر روی آن برمیگرداند. این کتابخانه یک ماژول Go است که با go get نصب میشود.
راهنمای گامبهگام
گام ۱: نصب بسته
ماژول را به پروژه خود اضافه کنید:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goبررسی کنید که ماژول حل میشود:
import asposepdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"مرحله ۲: وارد کردن کلاسهای مورد نیاز
import (
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)مرحله ۳: بارگذاری یک PDF از مسیر فایل
pdf.Open یک فایل PDF را بارگذاری میکند و یک *Document و یک خطا برمیگرداند:
doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount(), "pages")مرحله ۴: بارگذاری یک PDF محافظتشده با رمز عبور
pdf.OpenWithPassword فایلی که با رمز عبور کاربر رمزگذاری شده است را باز میکند:
doc, err := pdf.OpenWithPassword("locked.pdf", "secret")
if err != nil {
panic(err)
}
fmt.Println("opened:", doc.PageCount(), "pages")مرحله ۵: بارگذاری یک PDF از یک جریان
pdf.OpenStream یک PDF را از هر io.Reader میخواند — پاسخ شبکه، یک بافر در حافظه، یا فایلی که بهصورت جداگانه باز شده است. pdf.OpenStreamWithPassword معادل محافظتشده با رمز عبور برای جریانها است:
f, err := os.Open("input.pdf")
if err != nil {
panic(err)
}
defer f.Close()
doc, err := pdf.OpenStream(f)
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount(), "pages")
// For an encrypted stream, open a separate reader and pass a password:
f2, _ := os.Open("locked.pdf")
defer f2.Close()
doc2, err := pdf.OpenStreamWithPassword(f2, "secret")
if err != nil {
panic(err)
}
fmt.Println(doc2.PageCount(), "pages (encrypted)")مرحله ۶: بررسی سند بارگذاریشده
پس از بارگذاری، Document.PageCount تعداد کل صفحات را گزارش میدهد و Document.Page(n) یک صفحه را بر اساس شاخص ۱-پایه آن بازیابی میکند:
doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
panic(err)
}
fmt.Printf("Page count: %d\n", doc.PageCount())
page, err := doc.Page(1)
if err != nil {
panic(err)
}
size, err := page.Size()
if err != nil {
panic(err)
}
fmt.Printf("Page 1 size: %.0f x %.0f pt\n", size.Width, size.Height)مسائل رایج و راهحلها
OpenWithPassword هنوز پس از وارد کردن آنچه که فکر میکنم رمز عبور صحیح است، شکست میخورد
ارائهٔ رمز عبور نادرست به OpenWithPassword منجر به خطای غیر تهی میشود. رمزهای عبور به حروف بزرگ و کوچک حساس هستند — رمز عبور دقیق کاربری که بر روی PDF منبع تنظیم شده است را تأیید کنید.
OpenStream خطایی را در یک PDF رمزگذاریشده برمیگرداند
OpenStream نمیتواند PDFهای رمزگذاریشده را باز کند. بهجای آن از OpenStreamWithPassword برای جریانهای محافظتشده با رمز عبور استفاده کنید.
آیا نیاز دارم OpenWithPassword برای یک PDF که در نهایت رمزگذاری نشده باشد؟
نه — باز کردن یک فایل غیر رمزگذاریشده از طریق OpenWithPassword مجاز است و همانند یک فراخوانی ساده Open رفتار میکند، بنابراین استفاده از OpenWithPassword ایمن است وقتی مطمئن نیستید فایلی رمزگذاری شده است.
Document.Page(n) پس از یک موفقیت، خطایی برمیگرداند Open
شماره صفحه خارج از محدوده است. Page از یک ایندکس ۱-محور بین ۱ و Document.PageCount() استفاده میکند؛ ابتدا PageCount() را فراخوانی کنید تا محدوده را اعتبارسنجی کنید.
سوالات متداول
کدام فرمتهای فایل را میتوانم با Open بارگذاری کنم؟
Open، OpenWithPassword، OpenStream و OpenStreamWithPassword بهطور انحصاری ورودی PDF را میپذیرند.
چگونه میتوانم یک PDF که قبلاً در حافظه است را بهجای ذخیرهسازی روی دیسک بارگذاری کنم؟
قطعه بایت را در یک bytes.Reader بپیچید (که io.Reader را برآورده میکند) و آن را به pdf.OpenStream بدهید، یا pdf.OpenStreamWithPassword اگر بایتها نمایانگر یک PDF رمزگذاری شده باشند.
چگونه یک PDF محافظتشده با رمز عبور را بارگذاری کنم؟
برای مسیر فایل، pdf.OpenWithPassword(path, password) را فراخوانی کنید، یا برای یک جریان، pdf.OpenStreamWithPassword(r, password) را فراخوانی کنید.
چگونه تعداد صفحاتی که بارگذاری شدهاند را بررسی کنم؟
روی *Document بازگردانده شده، Document.PageCount() را فراخوانی کنید.