บทนำ

Aspose.PDF FOSS สำหรับ TypeScript เป็นไลบรารีโอเพ่นซอร์สใหม่สำหรับทำงานกับเอกสาร PDF จากโค้ด Node.js มันถูกเผยแพร่ภายใต้สัญญาอนุญาต MIT และจัดจำหน่ายเป็นแพ็กเกจ @asposefoss/pdf โดยต้องการเพียง Node.js (>=22) ในเวลารันไทม์ — ไม่มีการพึ่งพาอื่นใดในรันไทม์.

ไลบรารีนี้จัดระเบียบโดยอิงคลาส Document และ Page Document.OpenFile() และ Document.Open() โหลด PDF จากดิสก์หรือไบต์ในหน่วยความจำ, และ Document.New() เริ่มต้นเอกสารเปล่า; แต่ละหน้าภายใน doc.Pages เปิดเผยเมธอดสำหรับเพิ่มข้อความ, รูปภาพ, คำอธิบาย, และฟิลด์ AcroForm, รวมถึงการแปลงตัวเองเป็นรูปแบบอื่น จากนั้น API ครอบคลุมการแยก, การรวม, และการจัดลำดับหน้าใหม่, การแปลงเอกสารเป็น HTML, Markdown, DOCX, SVG, และภาพราสเตอร์, การเพิ่มและทำให้คำอธิบายเป็นแบบแบน, การสร้างฟอร์มแบบโต้ตอบ, และการเข้ารหัส, การลงลายมือชื่อ, หรือการทำให้ข้อมูลลับหายไปของผลลัพธ์.

การปล่อยนี้มุ่งเน้นสำหรับนักพัฒนาที่ต้องการการประมวลผล PDF ภายในโค้ดเบส Node.js หรือ TypeScript โดยไม่มีใบอนุญาตเชิงพาณิชย์: สายการประกอบเอกสาร, เครื่องมือการเผยแพร่ที่แปลง PDF เป็นรูปแบบที่พร้อมใช้งานบนเว็บ, ระบบอัตโนมัติการกรอกฟอร์ม, และบริการที่ต้องการทำให้ข้อมูลลับหรือเข้ารหัส PDF ที่เป็นความลับก่อนการแจกจ่าย โครงการอยู่ในรุ่น 0.1.0 และกำลังพัฒนาในขั้นตอนแรกอย่างต่อเนื่อง, ดังนั้น API และความครอบคลุมของฟีเจอร์อาจเปลี่ยนแปลงก่อนการปล่อยที่เสถียร.


สิ่งที่รวมอยู่

การจัดการเอกสารและหน้า

Document.OpenFile() / Document.Open() โหลด PDF จากดิสก์หรือ Uint8Array ในหน่วยความจำ; Document.New() เริ่มต้นเอกสารเปล่า หน้าต่างสามารถแยกเป็นเอกสารแยกต่างหากด้วย Document.Split(), ดึงออกด้วย Document.ExtractPages(), รวมด้วย Document.Merge(), หรือผนวกต่อเอกสารที่มีอยู่ด้วย Document.Append(). 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();

การแปลงรูปแบบ

เอกสารทั้งหมดแสดงผลเป็น HTML ด้วย Document.ToHtml() และเป็น Markdown สไตล์ GitHub ด้วย Document.ToMarkdown(). หน้าแต่ละหน้าจะแสดงผลเป็น SVG แยกส่วนด้วย Page.ToSvg() หรือไบต์ PNG แบบแรสเตอร์ด้วย Page.ToImage(). Document.ToDocx() / Page.ToDocx() สร้างผลลัพธ์ .docx แบบรีฟโลว์หรือเลเอาต์คงที่.

import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
const html = doc.ToHtml();                 // standalone semantic HTML, all pages
const md = doc.ToMarkdown();               // GFM Markdown, all pages
const docx = doc.ToDocx();                 // .docx bytes, reflowed, images in the package

คำอธิบายประกอบ

แต่ละ Page เปิดเผยเมธอดคำอธิบายโดยตรง: Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() และ Page.AddStrikeOut() เพิ่มการทำเครื่องหมายข้อความ; Page.AddTextNote(), Page.AddFreeText() และ Page.AddStamp() เพิ่มโน้ตติดกาว, ข้อความอิสระ, และคำอธิบายแบบแสตมป์ยาง. ชนิดย่อยที่ระบุประเภทเช่น MarkupAnnotation และ StampAnnotation เปิดเผยเมธอด Flatten() เพื่อฝังคำอธิบายลงในเนื้อหาหน้า.

AcroForms

คลาส Form สร้างฟิลด์เชิงโต้ตอบโดยตรง: AddTextField(), AddCheckbox(), AddRadioGroup(), AddComboBox(), AddListBox() และ AddPushButton() แต่ละตัวจะคืนค่าชนิด Field ย่อย. การเรียก SetStyle() หรือ GenerateAppearance() บนฟิลด์จะรีเฟรชลักษณะที่แสดงผล, และ Document.FlattenForm() จะฝังค่าปัจจุบันของทุกฟิลด์ลงในเนื้อหาหน้าคงที่.

function addFormFields(doc: Document, page: Page): void {
  const form = doc.Form;
  const pageNum = page.Number;

  // Text field
  form.AddTextField({
    page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
  });

  // Checkbox
  form.AddCheckbox({
    page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
    checked: true,
  });
}

ความปลอดภัยและการลบข้อมูล

Document.WriteTo() ยอมรับตัวเลือก encrypt ที่รองรับ AES-128, AES-256 หรือ RC4, พร้อมรหัสผ่านผู้ใช้และเจ้าของแยกกันและ Permissions รายละเอียดระดับละเอียด. พื้นที่ที่ละเอียดอ่อนหรือข้อความที่ตรงกันสามารถลบอย่างถาวรด้วย Document.Redact(), Document.RedactText() และ Page.ApplyRedactions(), ซึ่งกำหนดค่าผ่าน RedactOptions.

import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
doc.WriteTo('locked.pdf', {
  encrypt: {
    userPassword: 'open-me',       // required to open (default '')
    ownerPassword: 'full-rights',  // default: same as userPassword
    algorithm: 'aes256',           // 'aes256' (default) | 'aes128' | 'rc4'
    permissions: { copying: false, modifying: false },
    encryptMetadata: true,
  },
});

เริ่มต้นอย่างเร็ว

ติดตั้งแพ็กเกจ, จากนั้นเปิดไฟล์ PDF ที่มีอยู่, แก้ไขหน้าต่าง ๆ และเมตาดาต้า, แล้วบันทึกผลลัพธ์:

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
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]);

// Metadata
doc.SetMetadata({ title: 'Report', author: 'Jane', custom: { Dept: 'R&D' } });

// Save
doc.WriteTo('output.pdf');         // or: const bytes = doc.Save();
doc.WriteTo('small.pdf', { compressed: true }); // xref stream + object streams

รูปแบบที่รองรับ

รูปแบบส่วนขยายอ่านเขียน
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

โอเพ่นซอร์สและใบอนุญาต

Aspose.PDF FOSS สำหรับ TypeScript ถูกเผยแพร่ภายใต้ใบอนุญาต MIT, โดยซอร์สโค้ดถูกเปิดเผยบน GitHub. ไม่มีลายน้ำการประเมิน, ขีดจำกัดการใช้งาน, หรือไฟล์ใบอนุญาตแยกที่ต้องจัดการ, และไลบรารีนี้สามารถใช้ในผลิตภัณฑ์เชิงพาณิชย์ได้โดยไม่มีค่าลิขสิทธิ์.

แพ็กเกจนี้อยู่ในเวอร์ชัน 0.1.0 ในขณะนี้, แสดงถึงการพัฒนาขั้นต้นที่กำลังดำเนินอยู่. Node.js (>=22) เป็นความต้องการรันไทม์เดียว, และแพ็กเกจไม่มีการพึ่งพาจากบุคคลที่สามอื่นใด.


เริ่มต้นใช้งาน

ทรัพยากรที่เกี่ยวข้อง