GroupDocs.Conversion cho .NET v26.6 hiện đã có sẵn. Bản phát hành này bổ sung hỗ trợ sự kiện chuyển đổi phong phú hơn, xử lý ảnh tùy chỉnh cho PDF‑to‑Markdown, tự động phát hiện RTL cho DOCX và nhiều cải thiện ổn định.
Có gì mới trong bản phát hành này
| Khóa | Thể loại | Tóm tắt |
|---|---|---|
| CONVERSIONNET-7934 | Feature | PDF to Markdown: cho phép trích xuất ảnh tùy chỉnh và chèn trình giữ chỗ |
| CONVERSIONNET-8286 | Feature | Giới thiệu bộ tổng hợp ConversionEvents với ưu tiên trình xử lý per‑call/global |
| CONVERSIONNET-8314 | Feature | Thêm sự kiện chuyển đổi OnFontSubstituted |
| CONVERSIONNET-8263 | Improvement | Tách gói NuGet |
| CONVERSIONNET-8280 | Improvement | Tự động phát hiện hướng RTL cho DOCX khi thiếu/đánh dấu bidi không đúng |
| CONVERSIONNET-8325 | Improvement | Chuyển đổi Spreadsheet sang PDF với SkipEmptyRowsAndColumns gây chồng chồng văn bản khi sheet có điều khiển biểu mẫu |
| CONVERSIONNET-7912 | Bug | Ký tự bị hỏng trong đầu ra JPEG/TIFF |
| CONVERSIONNET-8281 | Bug | Chuyển đổi một XFA PDF cụ thể sang ảnh bị treo và không tạo ra kết quả nào |
| CONVERSIONNET-8321 | Bug | Vấn đề chuyển đổi publisher - Không thể tải Aspose.PDF |
Thay đổi API công khai
⚠️ Thay đổi gây phá vỡ
- Tên sự kiện đã được đổi tên và mô hình tổng hợp sự kiện đã thay đổi. Các thuộc tính sự kiện per‑result hiện có và các phương thức chuỗi fluent đã lỗi thời và sẽ bị loại bỏ trong v26.9.
ConverterSettings.Listenervà giao diệnIConverterListenerđã đã lỗi thời; chúng được thay thế bằng các sự kiện vòng đời trênConversionEvents.- Sự kiện
OnConversionCompletedper‑document cũ đã được đổi tên thànhOnDocumentConverted. Tên này hiện được sử dụng cho sự kiện vòng đời pipeline, được kích hoạt một lần vào cuối quá trình chuyển đổi.
1. Sự kiện thay thế phông chữ mới
| API | Mô tả |
|---|---|
ConversionEvents.OnFontSubstituted |
Được kích hoạt khi một phông chữ cần thiết cho tài liệu nguồn bị thiếu và một phông chữ thay thế được sử dụng (có thể tự động hoặc qua quy tắc do người dùng định nghĩa). |
FontSubstitutionContext |
Cung cấp chi tiết về việc thay thế: SourceFileName, OriginalFontName, SubstituteFontName, Reason. |
FontSubstitute |
Đại diện cho một quy tắc thay thế do người dùng cung cấp (ví dụ, FontSubstitute.Create("MissingFont", "Arial")). |
Tham khảo:
Ví dụ API cổ điển
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());
Ví dụ 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();
Ví dụ quy tắc thay thế (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());