Ç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çi Uint8Array verileri için Document.Open() kullanın.
  • Metodlara RemovePage() ve ExtractPages() gibi gönderilen sayfa numaraları 1-tabanlıdır, doc.Pages ise 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

SorunSebepDüzeltme
Document.Open() / OpenFile(), InvalidPasswordError hatasını fırlatırPDF şifre korumalı ve şifre sağlanmadı (veya yanlış şifre girildi){ password: '...' } öğesini Document.OpenFile() / Document.Open()‘e aktar
RemovePage() yanlış sayfayı kaldırırRemovePage()‘a iletilen sayfa numaraları 1 tabanlıdır, 0 tabanlı değildir1 tabanlı bir sayfa numarası geçin, doc.Pages dizi indekslemesinden farklı
WriteTo() çıktısı beklenenden daha büyükVarsayı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 / MetodAçıklama
DocumentPDF 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
PageTek 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

Ayrıca Bakınız

 Türkçe