Çekirdek API
Temel API
Bu rehber, Document ve Page sınıflarıyla PDF belgelerini açma, düzenleme, birleştirme ve kaydetme yöntemlerini gösterir — TypeScript için Aspose.PDF FOSS’taki her işlem için giriş noktaları. Document tüm PDF dosyalarını yükler, oluşturur, birleştirir ve kaydeder; Page, doc.Pages aracılığıyla erişilen, sayfa başına metin, görüntü, açıklama ve içerik akışı işlemlerini ortaya çıkarır.
Belge Yaşam Döngüsü
Document.OpenFile(), bir dosya yolundan PDF açar; Document.Open(), bellekteki bir Uint8Array kabul eder. Sayfalar yerinde incelenebilir ve düzenlenebilir, ve Document.WriteTo(), sonucu geri yazar — isteğe bağlı olarak xref-stream ve object-stream sıkıştırması ile.
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
Sayfaları Bölme, Birleştirme ve Çıkarma
Document.Split(), sayfa başına bir Document döndürür. Document.ExtractPages(), 1 tabanlı, tekrarına izin verilen bir sayfa listesi alır ve yalnızca o sayfalarla yeni bir Document döndürür. Document.Append() ve Document.InsertPage(), sayfaları belgeler arasında kopyalar, ve Document.Merge(), birkaç belgeyi birleştirerek tek bir belge oluşturur.
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
Yeni Bir Belge Oluşturma
Document.New(), belirli bir PageFormat üzerinde boş bir belge başlatır. Page.AddText(), konumlandırılmış metin yerleştirir, ve Document.AddPage(), PageFormat.A4.landscape() gibi döndürülmüş bir format dahil olmak üzere ek sayfalar ekler.
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');Filigranlar ve Sayfa Numaraları
Page.AddText() ayrıca döndürme, renk ve opaklık desteği sunar; bu, ek sınıflar olmadan bir sayfa numarası ve çapraz bir filigran oluşturmak için yeterlidir.
const doc = Document.OpenFile('in.pdf');
const page = doc.Pages[0];
// Page number, right-aligned near the bottom-right corner.
const w = page.Rect[2] - page.Rect[0];
page.AddText(`Page ${page.Number}`, w - 40, 20, { fontSize: 10, align: 'right' });
// Semi-transparent diagonal watermark, centered on the page.
page.AddText('DRAFT', page.Rect[2] / 2, page.Rect[3] / 2, {
font: 'Times-Bold', fontSize: 64, color: [0.7, 0.7, 0.7], opacity: 0.4, rotate: 45, align: 'center',
});
doc.WriteTo('out.pdf');İçerik Akışı İncelemesi
parseContentStream() bir sayfanın ham /Contents akışını operatör/operand çiftleri listesine çözer ve serializeContentStream() düzenlenmiş operatör listesini tekrar baytlara dönüştürür.
import { parseContentStream, serializeContentStream } from '@asposefoss/pdf';
const ops = parseContentStream(doc.Pages[0].Contents);
// ops: { operator: string, operands: PdfObject[], inlineImage?: {...} }[]
for (const op of ops) {
if (op.operator === 'Tj') console.log('text op:', op.operands);
}
const bytes = serializeContentStream(ops); // round-trips operators + operands
Çok Sütunlu Metin Akışı
Page.AddTextBlock() uzun bir metin dizisini dikdörtgen bir bölgeye akıtarak sığmayan metni döndürür; bu metin ikinci bir çağrıya beslenerek akışın başka bir sütuna devam etmesini sağlar.
const rest = page.AddTextBlock(longText, [72, 600, 200, 150], {
font: 'Times-Roman', fontSize: 11, align: 'justify', valign: 'top', leading: 14,
});
if (rest) page.AddTextBlock(rest, [300, 600, 200, 150]); // continue into a 2nd column
İpuçları ve En İyi Uygulamalar
- Dosya yolları için
Document.OpenFile()ve bellek içiUint8Arrayverileri içinDocument.Open()kullanın. - Metodlara
RemovePage()veExtractPages()gibi gönderilen sayfa numaraları 1-tabanlıdır,doc.Pagesise 0-tabanlı bir dizidir. { compressed: true }‘ıDocument.WriteTo()‘e geçirerek çıktıdaki xref-stream ve object-stream sıkıştırmasını etkinleştirin.Document.ExtractPages()tekrarlanan sayfa numaralarını kabul eder, böylece aynı kaynak sayfa sonuçta birden fazla kez görünebilir.- Koordinatları sabit kodlamak yerine sayfanın gerçek genişliği ve yüksekliğiyle ilgili konumları hesaplamak için
page.Rect‘ı okuyun.
Yaygın Sorunlar
| Sorun | Sebep | Düzeltme |
|---|---|---|
Document.Open() / OpenFile(), InvalidPasswordError hatasını fırlatır | PDF şifre korumalı ve şifre sağlanmadı (veya yanlış şifre girildi) | { password: '...' } öğesini Document.OpenFile() / Document.Open()‘e aktar |
RemovePage() yanlış sayfayı kaldırır | RemovePage()‘a iletilen sayfa numaraları 1 tabanlıdır, 0 tabanlı değildir | 1 tabanlı bir sayfa numarası geçin, doc.Pages dizi indekslemesinden farklı |
WriteTo() çıktısı beklenenden daha büyük | Varsayılan kaydetme, xref/object-stream sıkıştırmasını kullanmaz | { compressed: true }‘ı Document.WriteTo()‘e geçirin |
FAQ
Document.Open() hem dosya yollarını hem de bellek içi verileri kabul eder mi?
Document.OpenFile() bir dosya yolundan açar; Document.Open() bellek içi baytların bir Uint8Array‘ını kabul eder.
Sayfa numaralandırması 0 tabanlı mı yoksa 1 tabanlı mı?
Her ikisi de, API’a bağlı olarak: doc.Pages basit bir 0 tabanlı dizi, ancak RemovePage() ve ExtractPages() gibi yöntemler 1 tabanlı sayfa numaraları alır.
Bir belgeyi kaydederken şifreleyebilir miyim?
Evet — encrypt seçeneğini WriteTo() / Save()‘ye algorithm: 'aes256' | 'aes128' | 'rc4' ve isteğe bağlı kullanıcı/sahip şifreleriyle iletin.
Çıktı dosya boyutunu nasıl azaltırım?
{ compressed: true }‘ı Document.WriteTo()‘e göndererek xref-stream ve object-stream sıkıştırmasını etkinleştirin.
Bir sayfanın ham içerik akışı operatörlerini inceleyebilir miyim?
Evet — parseContentStream(doc.Pages[0].Contents) operatör listesini döndürür ve serializeContentStream() düzenlenmiş listeyi tekrar baytlara dönüştürür.
API Reference Özet
| Sınıf / Metod | Açıklama |
|---|---|
Document | PDF belgelerini oluşturma, yükleme ve kaydetme için merkezi giriş noktası |
Document.OpenFile() / Document.Open() | Bir PDF’yi dosya yolundan veya bellek içi baytlardan yükle |
Document.New() | Verilen PageFormat ile boş bir belge başlat |
Document.WriteTo() / Document.Save() | Belgeyi bir dosya yoluna yaz veya baytları döndür |
Document.Split() / Document.Merge() / Document.ExtractPages() | Belgeler arasında sayfaları böl, birleştir ve çıkar |
Document.Append() / Document.InsertPage() | Bir belgedeki sayfaları başka bir belgeye kopyala |
Page | Tek bir PDF sayfası; metin, resim, açıklama ve içerik akışı yöntemlerini ortaya çıkarır |
Page.AddText() / Page.AddTextBlock() | Sayfaya konumlandırılmış veya akışkan metin ekle |
parseContentStream() / serializeContentStream() | Bir sayfanın ham içerik akışı operatörlerini ayrıştır ve yeniden serileştir |