วิธีโหลดเอกสารใน Go
Aspose.PDF FOSS สำหรับ Go โหลด PDF จากเส้นทางไฟล์, io.Reader, หรือแหล่งใดแหล่งหนึ่งที่ได้รับการป้องกันด้วยรหัสผ่าน, เสมอคืนค่า *Document เพื่อดำเนินการต่อ. ไลบรารีเป็นโมดูล Go ที่ติดตั้งด้วย go get.
คู่มือขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพคเกจ
เพิ่มโมดูลลงในโปรเจกต์ของคุณ:
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-goตรวจสอบว่าโมดูล resolve แล้ว:
import asposepdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"ขั้นตอนที่ 2: นำเข้าคลาสที่จำเป็น
import (
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)ขั้นตอนที่ 3: โหลด PDF จากเส้นทางไฟล์
pdf.Open โหลดไฟล์ PDF และส่งคืน *Document พร้อมกับข้อผิดพลาด:
doc, err := pdf.Open("testdata/4pages.pdf")
if err != nil {
panic(err)
}
fmt.Println(doc.PageCount(), "pages")ขั้นตอนที่ 4: โหลด PDF ที่มีการป้องกันด้วยรหัสผ่าน
pdf.OpenWithPassword เปิดไฟล์ที่ถูกเข้ารหัสด้วยรหัสผ่านของผู้ใช้:
doc, err := pdf.OpenWithPassword("locked.pdf", "secret")
if err != nil {
panic(err)
}
fmt.Println("opened:", doc.PageCount(), "pages")ขั้นตอนที่ 5: โหลด 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)")ขั้นตอนที่ 6: ตรวจสอบเอกสารที่โหลดแล้ว
เมื่อลโหลดแล้ว Document.PageCount จะรายงานจำนวนหน้าทั้งหมดและ Document.Page(n) จะดึงหน้าตัวเดียวโดยใช้ดัชนีที่เริ่มจาก 1:
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 จะทำให้เกิดข้อผิดพลาดที่ไม่เป็นค่า nil รหัสผ่านเป็นตัวพิมพ์ใหญ่-เล็กแตกต่างกัน — ตรวจสอบรหัสผ่านของผู้ใช้ที่ตั้งไว้บน PDF ต้นฉบับให้ตรงกัน.
OpenStream คืนข้อผิดพลาดบนไฟล์ PDF ที่เข้ารหัส
OpenStream ไม่สามารถเปิด PDF ที่ถูกเข้ารหัสได้ ใช้ OpenStreamWithPassword สำหรับสตรีมที่มีการป้องกันด้วยรหัสผ่านแทน.
ฉันต้องการหรือไม่ OpenWithPassword สำหรับไฟล์ PDF ที่พบว่าไม่ได้เข้ารหัส?
ไม่ — การเปิดไฟล์ที่ไม่ได้เข้ารหัสผ่าน OpenWithPassword ได้รับอนุญาตและทำงานเช่นเดียวกับการเรียก Open ธรรมดา ดังนั้นจึงปลอดภัยที่จะใช้ OpenWithPassword เมื่อคุณไม่แน่ใจว่าไฟล์ถูกเข้ารหัสหรือไม่.
Document.Page(n) คืนข้อผิดพลาดหลังจากสำเร็จ Open
หมายเลขหน้านั้นอยู่นอกช่วง. Page ใช้ดัชนีเริ่มจาก 1 ระหว่าง 1 ถึง 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.PageCount() บน *Document ที่ส่งคืน.