วิธีทำงานกับ Core PDF API ใน TypeScript
คู่มือนี้แสดงวิธีการเปิด, สร้าง, แก้ไข, แบ่ง, และบันทึกเอกสาร PDF ด้วย Aspose.PDF FOSS สำหรับ TypeScript. คลาส Document และ Page เป็นจุดเริ่มต้นสำหรับทุกการดำเนินการในไลบรารี — การเปิดและสร้างไฟล์, การแก้ไขหน้าตรงที่, การแบ่งและรวมเอกสาร, และการบันทึกผลลัพธ์. ต้องการเพียง Node.js 22 หรือใหม่กว่า.
คู่มือขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildตรวจสอบการติดตั้งโดยการนำเข้า class Document ในไฟล์ TypeScript ใหม่ — บรรทัดนี้ควรทำงานโดยไม่มีข้อผิดพลาดเมื่อแพ็กเกจถูกติดตั้งแล้ว:
import { Document } from '@asposefoss/pdf';ขั้นตอนที่ 2: นำเข้าคลาสที่จำเป็น
นำเข้า Document เพื่อโหลดหรือสร้าง PDF, และ PageFormat หากคุณวางแผนเริ่มเอกสารจากศูนย์:
import { Document, PageFormat } from '@asposefoss/pdf';ขั้นตอนที่ 3: เปิด PDF ที่มีอยู่และแก้ไขหน้า
Document.OpenFile() เปิด PDF จากเส้นทางไฟล์; Document.Open() รับ Uint8Array ในหน่วยความจำ. สามารถตรวจสอบและแก้ไขหน้าได้โดยตรง, และ Document.WriteTo() เขียนผลลัพธ์ออกมาใหม่.
import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
ขั้นตอนที่ 4: สร้าง PDF ใหม่จากศูนย์
Document.New() เริ่มต้นเอกสารเปล่าที่ PageFormat ที่กำหนด. Page.AddText() วางข้อความที่กำหนดตำแหน่ง, และ Document.AddPage() เพิ่มหน้าต่อไป.
import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4); // one blank A4 page
doc.Pages[0].AddText('Hello', 72, 720, { fontSize: 14 });
doc.AddPage(PageFormat.A4.landscape()); // append more as you go
doc.WriteTo('scratch.pdf');ขั้นตอนที่ 5: แยก, ดึงออก, และรวมหน้า
Document.Split() คืนค่า Document หนึ่งรายการต่อหน้า. Document.ExtractPages() รับรายการหน้าที่เริ่มจาก 1 และอนุญาตให้ซ้ำได้ แล้วคืนค่า Document ใหม่ที่มีเฉพาะหน้านั้น. Document.Append() และ Document.InsertPage() คัดลอกหน้าข้ามเอกสาร, และ Document.Merge() รวมเอกสารหลายไฟล์เป็นหนึ่งไฟล์.
const parts = doc.Split(); // one Document per page
const chapter = doc.ExtractPages([3, 4, 5]); // subset (1-based, repeats allowed) as a new Document
docA.Append(docB); // copy all of docB's pages onto docA
docA.InsertPage(1, docB.Pages[0]); // copy a single page across documents
ปัญหาทั่วไปและวิธีแก้ไข
Document.OpenFile() throws InvalidPasswordError. ไฟล์ PDF มีการป้องกันด้วยรหัสผ่านและไม่ได้ระบุรหัสผ่าน (หรือระบุรหัสผ่านผิด) Pass { password: '...' } to Document.OpenFile() / Document.Open().
RemovePage() or ExtractPages() ลบหรือดึงหน้าที่ไม่ถูกต้องออก. วิธีเหล่านี้รับหมายเลขหน้าแบบเริ่มจาก 1, ในขณะที่ doc.Pages เป็นอาเรย์ที่เริ่มจาก 0 ธรรมดา — สองรูปแบบการระบุตำแหน่งนี้ง่ายต่อการสับสน.
WriteTo() ผลลัพธ์ใหญ่กว่าที่คาดไว้. การบันทึกค่าเริ่มต้นไม่ได้ใช้การบีบอัด xref/object-stream Pass { compressed: true } to Document.WriteTo() เพื่อเปิดใช้งาน.
การแก้ไขที่ทำกับ doc.Pages[i] จะไม่ปรากฏในไฟล์ที่บันทึกไว้. การแก้ไขหน้าต้องทำก่อนการเรียก Document.WriteTo() / Document.Save() — ไม่มีขั้นตอน “commit” แยกต่างหาก, แต่การแก้ไขที่ทำหลังจากบันทึกจะไม่แสดงในไฟล์ที่ได้เขียนลงดิสก์แล้ว.
คำถามที่พบบ่อย
ฉันจะโหลด PDF จากบัฟเฟอร์ในหน่วยความจำแทนการใช้เส้นทางไฟล์ได้อย่างไร?
ส่ง Uint8Array ไปยัง Document.Open() แทนเส้นทางไปยัง Document.OpenFile().
ฉันจะหมุนหน้าอย่างไร?
ตั้งค่า page.Rotate เป็น 90, 180 หรือ 270, จากนั้นบันทึกเอกสารด้วย Document.WriteTo().
ฉันสามารถคัดลอกหน้าเดียวจากเอกสารหนึ่งไปยังอีกเอกสารได้หรือไม่?
ใช่ — Document.InsertPage(at, sourcePage) คัดลอกหนึ่งหน้าจากเอกสารอื่นตามตำแหน่งที่ระบุโดยเริ่มนับจาก 1, โดยไม่ต้องคัดลอกทั้งเอกสาร.
Document.ExtractPages() อนุญาตให้หน้าเดียวกันปรากฏสองครั้งหรือไม่?
ใช่. รายชื่อหมายเลขหน้าที่ส่งให้ Document.ExtractPages() อนุญาตให้ซ้ำได้, ดังนั้นหน้าต้นฉบับเดียวกันสามารถปรากฏมากกว่าหนึ่งครั้งในผลลัพธ์.