GroupDocs.Conversion untuk .NET v26.6 kini tersedia. Rilis ini menambahkan dukungan peristiwa konversi yang lebih kaya, penanganan gambar khusus untuk PDF‑ke‑Markdown, deteksi otomatis RTL untuk DOCX, dan beberapa perbaikan stabilitas.
Apa yang baru di rilis ini
| Kunci | Kategori | Ringkasan |
|---|---|---|
| CONVERSIONNET-7934 | Fitur | PDF ke Markdown: izinkan ekstraksi gambar khusus dan penyisipan placeholder |
| CONVERSIONNET-8286 | Fitur | Perkenalkan agregator ConversionEvents dengan prioritas handler per‑panggilan/global |
| CONVERSIONNET-8314 | Fitur | Tambahkan peristiwa konversi OnFontSubstituted |
| CONVERSIONNET-8263 | Peningkatan | Pemisahan Paket NuGet |
| CONVERSIONNET-8280 | Peningkatan | Deteksi otomatis arah RTL untuk DOCX dengan markup bidi yang hilang/keliru |
| CONVERSIONNET-8325 | Peningkatan | Konversi Spreadsheet ke PDF dengan SkipEmptyRowsAndColumns menimpa teks ketika lembar memiliki kontrol formulir |
| CONVERSIONNET-7912 | Bug | Karakter rusak pada output JPEG/TIFF |
| CONVERSIONNET-8281 | Bug | Mengonversi XFA PDF tertentu ke gambar terhenti dan tidak menghasilkan hasil apa pun |
| CONVERSIONNET-8321 | Bug | Masalah mengonversi publisher - Tidak dapat memuat Aspose.PDF |
Perubahan API Publik
⚠️ Perubahan yang memecah kompatibilitas
- Nama peristiwa telah diubah dan model agregasi peristiwa berubah. Properti per‑hasil peristiwa yang ada dan metode rantai fluent usang dan akan dihapus pada v26.9.
ConverterSettings.Listenerdan antarmukaIConverterListenerusang; keduanya digantikan oleh peristiwa siklus hidup padaConversionEvents.- Peristiwa lama
OnConversionCompletedper‑dokumen telah diubah namanya menjadiOnDocumentConverted. Nama yang sama kini digunakan untuk peristiwa siklus‑hidup pipeline yang dipicu sekali di akhir proses konversi.
1. Peristiwa substitusi font baru
| API | Deskripsi |
|---|---|
ConversionEvents.OnFontSubstituted |
Dipicu ketika font yang dibutuhkan oleh dokumen sumber tidak ada dan digantikan dengan font substitusi (baik secara otomatis maupun melalui aturan yang ditentukan pengguna). |
FontSubstitutionContext |
Menyediakan detail tentang substitusi: SourceFileName, OriginalFontName, SubstituteFontName, Reason. |
FontSubstitute |
Mewakili aturan substitusi yang disediakan pengguna (misalnya, FontSubstitute.Create("MissingFont", "Arial")). |
Referensi:
Contoh API klasik
using GroupDocs.Conversion;
using GroupDocs.Conversion.Contracts;
using GroupDocs.Conversion.Options.Convert;
var events = new ConversionEvents
{
OnFontSubstituted = ctx =>
{
var detail = ctx.OriginalFontName != null
? $"{ctx.OriginalFontName} -> {ctx.SubstituteFontName}"
: ctx.Reason;
Console.WriteLine($"Font substituted in '{ctx.SourceFileName}': {detail}");
}
};
using var converter = new Converter(
"source.docx",
() => new ConverterSettings(),
() => events);
converter.Convert("output.pdf", new PdfConvertOptions());
Contoh API fluent
FluentConverter
.WithEvents(e => e.OnFontSubstituted = ctx =>
Console.WriteLine($"Font substituted: {ctx.Reason ?? ctx.OriginalFontName}"))
.Load("source.docx")
.ConvertTo("output.pdf")
.WithOptions(new PdfConvertOptions())
.Convert();
Contoh aturan substitusi (Word‑processing / Spreadsheet / PDF)
using GroupDocs.Conversion.Options.Load;
using var converter = new Converter(
"source.docx",
_ => new WordProcessingLoadOptions
{
FontSubstitutes = new List<FontSubstitute>
{
FontSubstitute.Create("MissingFont", "Arial")
}
},
() => new ConverterSettings(),
() => events);
converter.Convert("output.pdf", new PdfConvertOptions());