Giriş

introductory post temel dönüşüm şekli gösterir: Document.ToHtml(), Document.ToMarkdown() ve Document.ToDocx(), her biri argümansız çağrıldığında makul bir varsayılan elde eder. Bu yöntemlerin her biri, aslında ne çıktığına etki eden bir seçenekler nesnesi alır — anlamsal işaretleme vs piksel-doğru kopya, akışa uygun Word belgesi vs her sayfanın tam düzenini yeniden üreten bir belge.

Bu gönderi bu seçenekleri kapsar, ayrıca girişin hiç değinmediği bir dönüşüm yönünü de ele alır: bir belgeyi PDF/A, PDF/X ve PDF/UA standartlarına karşı doğrulama ve Document.ConvertToPdfA() ile kardeş standartlarla uyumlu hâle getirme.


Neler Dahil

HTML Dışa Aktarım: Anlamsal vs Sabit

Document.ToHtml() seçenek olmadan çağrıldığında belgenin yapı ağacını dolaşır ve akışa uygun işaretleme üretir — başlıklar ve paragrafar, tarayıcıda herhangi bir genişlikte doğal okunur. Bu mod, belgenin önce etiketlenmiş olmasına (Document.CreateStructTree() veya eşdeğer bir etiketleme geçişi) bağlıdır; bir yapı ağacı yoksa, dışa aktarma gerçek anlamsal işaretleme yerine düz bir sezgisel gövdeye geri döner. { mode: 'fixed', fonts: 'embed' } geçirilmesi tamamen farklı bir render stratejisine geçiş yapar: her sayfa konumlandırılmış SVG ve mutlak konumlu metin haline gelir, gömülebilir tüm yazı tipi programları base64 WOFF @font-face olarak satıriçi eklenir, böylece okuyucunun yazı tiplerini kurulu olmadan sayfa aynı görünür.

// Semantic mode reflows from the structure tree, so this must run after the
// tagging pass: ToHtml falls back to a heuristic body when GetStructTree() is
// null, and the export loses its heading structure silently.
const semantic = doc.ToHtml();
const fixed = doc.ToHtml({ mode: 'fixed', fonts: 'embed' });

İki çıktı farklı amaçlara hizmet eder: anlamsal HTML, web üzerinde içerik okumak veya yeniden yayınlamak istediğiniz şeydir, sabit HTML ise sayfanın tam görsel düzeninin tarayıcıda değişmeden kalması gerektiğinde istediğiniz şeydir.

Word ve Vektör Dışa Aktarımları

Document.ToDocx() hiçbir seçenek olmadan çağrıldığında, yeniden akışlı bir .docx üretir: kelime işlemci tarafından normal bir belge gibi yeniden satırlandırılıp düzenlenebilen paragraflar ve görseller. Bunun yerine { mode: 'textbox' } geçmek, her sayfanın kendi geometrisini korur, içeriği sabit metin kutularına yerleştirir ve akışa izin vermez — düzenlenebilir bir belge yerine daha sadık bir görsel kopyaya yakındır. Page.ToSvg() tek bir sayfayı bağımsız bir <svg> dizesine render eder; bu, bir sayfanın vektör, çözünürlük bağımsız kopyasının raster görüntü yerine gerektiği durumlarda faydalıdır.

import { Document } from '@asposefoss/pdf';

const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg();               // standalone <svg> string
const docx = doc.ToDocx();                       // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' });   // .docx keeping each page's own geometry

Doğrulama ve PDF/A, PDF/X ve PDF/UA’e Dönüştürme

Document.ValidatePdfA(), Document.ValidatePdfX() ve Document.ValidatePdfUa() her biri belgeyi ilgili standardın özenle seçilmiş, makine tarafından kontrol edilebilir bir alt kümesiyle karşılaştırır — uzun vadeli arşivleme için PDF/A (ISO 19005), baskı üretimi için PDF/X (ISO 15930) ve erişilebilirlik için PDF/UA (ISO 14289-1) — ve sonucu özetleyen bir Passed bayrağı içeren bir ValidationReport döndürür. Document.ConvertToPdfA() (ve eşdeğer ConvertToPdfX()/ConvertToPdfUa()) belgeyi o seviyeye uyarlamaya çalışır, ardından yeniden doğrular ve hangi eylemlerin gerçekten uygulandığını ve hangi sorunların hâlâ çözülmediğini listeleyen bir ConversionReport döndürür.

import { Document } from '@asposefoss/pdf';

const doc = Document.OpenFile('in.pdf');
const pdfa = doc.ValidatePdfA('2b');
console.log(`validate: PDF/A-2b ${pdfa.Passed ? 'passes' : 'fails'}`);

// Conversion runs against a copy: the live document is still saved
// unconverted, so ConvertToPdfA must never touch it directly.
const pages = doc.Pages;
const allPages: number[] = [];
for (let i = 1; i <= pages.length; i++) allPages.push(i);
const copy = doc.ExtractPages(allPages);
const conversion = copy.ConvertToPdfA('2b');

console.log(`pdf/a convert: ${conversion.applied.length} action(s) applied, `
  + `${conversion.unresolved.length} unresolved`);
console.log(`result: ${conversion.passed ? 'passes' : 'still fails'} PDF/A-2b`);

Dönüştürme, tek bir geçişte tam uyumluluğa ulaşacağının garantisi yoktur — kalan hataların yaygın nedenleri gömülmemiş yazı tipleri ve eksik bir çıktı amacıdır; her ikisi de conversion.unresolved‘da ortaya çıkar.


Hızlı Başlangıç

Paketi kurun, ardından tek bir sayfayı SVG olarak ve tüm belgeyi yeniden akışlı HTML ve DOCX olarak render edin:

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';

const doc = Document.OpenFile('in.pdf');

const svg = doc.Pages[0].ToSvg();   // standalone <svg> string
const html = doc.ToHtml();          // reflowable HTML (falls back without a structure tree)
const docx = doc.ToDocx();          // .docx bytes, reflowed, images in the package

// fs.writeFileSync('page1.svg', svg);
// fs.writeFileSync('out.html', html);
// fs.writeFileSync('out.docx', docx);

Desteklenen Formatlar

BiçimUzantıOkumaYazma
PDFpdf✓✓
Markdownmd✓✓
SVGsvg✓✓
TIFFtiff✓✓
DOCXdocx—✓
HTMLhtml—✓
PNGpng—✓
EPUBepub—✓

Açık Kaynak & Lisanslama

Aspose.PDF FOSS for TypeScript MIT lisansı altında yayımlanmıştır, kaynak kodu GitHub üzerinde yayınlanmıştır. Değerlendirme filigranı, kullanım sınırlaması veya yönetilecek ayrı bir lisans dosyası yoktur ve kütüphane telif hakkı ödemesi olmadan ticari ürünlerde kullanılabilir.

Paket şu anda 0.1.0 sürümündedir ve aktif erken aşama geliştirmeyi yansıtmaktadır. Node.js (>=22) tek çalışma zamanı gereksinimidir ve paket başka üçüncü taraf bağımlılığa sahip değildir.


Başlarken

İlgili Kaynaklar