TypeScript'te PDF Belgelerini Nasıl Dönüştürürsünüz
Bu kılavuz, TypeScript için Aspose.PDF FOSS kullanarak PDF içeriğini diğer formatlara nasıl dönüştüreceğinizi gösterir. Page tek bir sayfayı SVG veya raster görüntü olarak dışa aktarır; Document tüm dosyayı HTML, Markdown veya DOCX olarak dışa aktarır ve bir belgeyi PDF/A’e doğrulayabilir ve dönüştürebilir. Node.js 22 veya daha yeni bir sürüm gerektirir.
Adım Adım Kılavuz
Adım 1: Paketi Yükleyin
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildKurulumu, yeni bir TypeScript dosyasında Document sınıfını içe aktararak doğrulayın — paket yüklendikten sonra bu satır hatasız çözülmelidir:
import { Document } from '@asposefoss/pdf';Adım 2: Gerekli Sınıfları İçe Aktarın
Dosyayı açmak için Document içe aktarın; aşağıda kullanılan dönüşüm yöntemleri, döndürülen Document ve Page örnekleri üzerinde doğrudan çağrılır, bu yüzden başka bir içe aktarmaya gerek yoktur:
import { Document } from '@asposefoss/pdf';Adım 3: Bir Sayfayı SVG’ye veya Raster Görüntüye Dönüştür
Page.ToSvg(), bağımsız bir <svg> dizesi döndürür. Page.ToImage(), sayfayı raster baytlara işler; scale, PDF’nin yerel 72 DPI değerine görecelidir, bu yüzden scale: 2, 144 DPI’de işler:
import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('input.pdf');
const svg = doc.Pages[0].ToSvg(); // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
Adım 4: Bir Belgeyi HTML ya da Markdown’a Dönüştür
Document.ToHtml(), varsayılan (semantik) modunda içerği yapı ağacından başlıklara ve paragraflara yeniden akışa sokar; bunun yerine her sayfayı konumlandırılmış SVG ve mutlak konumlu metin olarak yeniden üretmek için { mode: 'fixed' } iletiniz. Document.ToMarkdown(), tüm belge için GFM Markdown üretir:
const semanticHtml = doc.ToHtml(); // reflowable markup, all pages
const fixedHtml = doc.ToHtml({ mode: 'fixed', fonts: 'embed' }); // positioned, fonts embedded
const markdown = doc.ToMarkdown(); // GFM Markdown, all pages
Semantik mod, Document.GetStructTree() / Document.CreateStructTree() tarafından oluşturulan yapı ağacını okur — etiketlenmemiş bir belgede, bir sezgisel gövdeye geri döner ve dışa aktarma başlık yapısını kaybeder.
Adım 5: Bir Belgeyi DOCX’e Dönüştür
Document.ToDocx(), içeriği yeniden akışa sokulmuş ve görüntüler içinde paketlenmiş .docx bayt döndürür; yeniden akışa sokmak yerine her sayfanın kendi sabit geometrisini korumak için { mode: 'textbox' } iletiniz:
const docx = doc.ToDocx(); // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' }); // .docx keeping each page's own geometry
Adım 6: Doğrula ve PDF/A’a Dönüştür
Document.ValidatePdfA(level), Document.ValidatePdfX(level) ve Document.ValidatePdfUa() belgenin belirtilen standardı geçip geçmediğini açıklayan bir ValidationReport döndürür. Document.ConvertToPdfA(level, opts) uyguladığı düzeltmeleri ve hâlâ çözülmemiş sorunları listeleyen bir ConversionReport döndürür. Canlı belge hâlâ dönüştürülmemiş olarak kaydedilmesi gerektiğinde dönüşümü bir Document.ExtractPages() kopyasında çalıştır:
const report = doc.ValidatePdfA('2b');
console.log(report.Passed);
const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');
console.log(conversion.applied.length, conversion.unresolved.length, conversion.passed);
copy.Save();Yaygın Sorunlar ve Çözümler
Document.ToHtml() başlık yapısını kaybeder. Semantik mod, yapı ağacında dolaşır, bu yüzden bir etiketleme geçişinden sonra çalıştırılmalıdır — ya da Document.AutoTag() veya elle yazılmış etiketleme aracılığıyla StructTreeRoot.Append(). ToHtml() bir sezgisel gövdeye geri döner, … olduğunda GetStructTree() returns null.
ConvertToPdfA() dönüştürülmemesi gereken dosyayı değiştirir. Dönüştürmeyi şuradan bir kopya üzerinde çalıştırın Document.ExtractPages(), ardından kopyayı ayrı olarak kaydedin — ConvertToPdfA() üzerinde çağrıldığı belgeyi değiştirir.
ValidatePdfA() çalıştırıldığında ilk kez hatalar rapor eder. Yaygın bir neden gömülmemiş standart yazı tipleri ve eksik bir /OutputIntent — kontrol et report.Passed ve hangi koşulların karşılanmadığını görmek için bireysel kural bulgularına bakın.
Page.ToImage() çıktı düşük çözünürlüklü görünüyor. scale 72 DPI’ye görerelidir; artırın (örneğin { scale: 2 } 144 DPI için) baskı kalitesinde çıktı elde etmek amacıyla.
Sık Sorulan Sorular
Semantik ve sabit HTML dışa aktarımı arasındaki fark nedir?
Semantik mod, belgeyi yapı ağacından tarayıcıda herhangi bir genişlikte iyi okunabilen işaretlemeye yeniden akışa sokar. Sabit mod ise her sayfayı konumlandırılmış SVG ve mutlak konumlandırılmış metin olarak yeniden üretir ve orijinal düzeni tam olarak eşleştirir.
Document.ToDocx() orijinal sayfa düzenini korur mu?
Varsayılan olarak ToDocx() içeriği yeniden akışa sokar. Bunun yerine her sayfanın kendi sabit geometrisini korumak için { mode: 'textbox' } parametresini geçirin.
Bir belgeyi dönüştürmeden önce PDF/A koşullarını karşılayıp karşılamadığını nasıl kontrol ederim?
Document.ValidatePdfA(level)‘ı (örneğin '2b') çağırın ve döndürülen ValidationReport‘yi inceleyin — bu, belgeyi değiştirmeden mevcut durumu raporlar.
Sadece sayfaların bir alt kümesini dönüştürebilir miyim?
Evet — önce Document alt kümesini Document.ExtractPages() ile oluştur, ardından o alt küme üzerinde dönüşüm metodunu (ToHtml(), ToDocx(), ConvertToPdfA() ve benzeri) çağır.