v25.10

Plugin mới PDF Extractor

  • Class PdfExtractor: chứa tất cả các chức năng của các plugin: TextExtractor, ImageExtractor, FormExporter.
  • Class TextExtractor: sẽ bị xóa sớm, sử dụng PdfExtractor.
  • Class ImageExtractor: sẽ bị xóa sớm, sử dụng PdfExtractor.
  • Class FormExporter: sẽ bị xóa sớm, sử dụng PdfExtractor.
  • Class TextExtractorOptions: được đổi tên thành Class ExtractTextOptions.
  • Class ImageExtractorOptions: được đổi tên thành Class ExtractImagesOptions.
  • Class FormExportToDsvOptions: được đổi tên thành Class ExtractFormDataToDsvOptions.

Ví dụ Sử Dụng:

Ví dụ này minh họa cách trích xuất nội dung văn bản của tài liệu PDF.

// Tạo đối tượng ExtractTextOptions để thiết lập hướng dẫn
var options = new ExtractTextOptions();
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thực hiện quy trình
var results = PdfExtractor.ExtractText(options);
// Lấy văn bản đã trích xuất từ đối tượng ResultContainer
var textExtracted = results.ResultCollection[0].ToString();

Ví dụ Sử Dụng:

Ví dụ này minh họa cách trích xuất nội dung văn bản của tài liệu PDF với TextFormattingMode.

// Tạo đối tượng ExtractTextOptions để thiết lập TextFormattingMode
var options = new ExtractTextOptions(TextFormattingMode.Pure);
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thực hiện quy trình
var results = PdfExtractor.ExtractText(options);
// Lấy văn bản đã trích xuất từ đối tượng ResultContainer
var textExtracted = results.ResultCollection[0].ToString();

Ví dụ Sử Dụng:

Ví dụ này minh họa cách trích xuất hình ảnh từ tài liệu PDF.

// Tạo ExtractImagesOptions để thiết lập hướng dẫn
var options = new ExtractImagesOptions();
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn thư mục đầu ra
options.AddOutput(new DirectoryDataSource("path_to_results_directory"));
// Thực hiện quy trình
var results = PdfExtractor.ExtractImages(options);
// Lấy đường dẫn đến hình ảnh kết quả
var imageExtracted = results.ResultCollection[0].ToFile();

Ví dụ Sử Dụng:

Ví dụ này minh họa cách xuất giá trị biểu mẫu vào tệp CSV.

// Tạo đối tượng ExtractFormDataToDsvOptions để thiết lập hướng dẫn
var options = new ExtractFormDataToDsvOptions(',', true);
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_csv_file.csv"));
// Thực hiện quy trình
PdfExtractor.ExtractFormData(options);

Plugin mới PDF Manager

  • Class PdfManager: chứa tất cả các chức năng của các plugin: Merger, Optimizer, Splitter, TableGenerator,TocGenerator.
  • Class Merger: sẽ bị xóa sớm.
  • Class Optimizer: sẽ bị xóa sớm, sử dụng PdfManager.
  • Class Splitter: sẽ bị xóa sớm, sử dụng PdfManager.
  • Class TableGenerator: sẽ bị xóa sớm, sử dụng PdfManager.
  • Class TocGenerator: sẽ bị xóa sớm, sử dụng PdfManager.

Ví dụ Sử Dụng:

Ví dụ này minh họa cách hợp nhất hai tài liệu PDF.

// Tạo đối tượng MergeOptions để thiết lập hướng dẫn
var options = new MergeOptions();
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file_1.pdf"));
options.AddInput(new FileDataSource("path_to_your_pdf_file_2.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_pdf_file.pdf"));
// Thực hiện quy trình
PdfManager.Merge(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách chia tách tài liệu PDF.

// Tạo đối tượng SplitOptions để thiết lập hướng dẫn
var options = new SplitOptions();
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_pdf_file_1.pdf"));
options.AddOutput(new FileDataSource("path_to_result_pdf_file_2.pdf"));
// Thực hiện quy trình
PdfManager.Split(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách tối ưu hóa tài liệu PDF.

// Tạo đối tượng OptimizeOptions để thiết lập hướng dẫn
var options = new OptimizeOptions();
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_pdf_file.pdf"));
// Thực hiện quy trình
PdfManager.Optimize(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách xoay tài liệu PDF.

// Tạo đối tượng RotateOptions để thiết lập hướng dẫn
var options = new RotateOptions();
// Thiết lập xoay mới
options.Rotation = Rotation.On90;
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_pdf_file.pdf"));
// Thực hiện quy trình
PdfManager.Rotate(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách thay đổi kích thước tài liệu PDF.

// Tạo đối tượng ResizeOptions để thiết lập hướng dẫn
var options = new ResizeOptions();
// Thiết lập kích thước trang mới
options.PageSize = PageSize.A3;
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_pdf_file.pdf"));
// Thực hiện quy trình
PdfManager.Resize(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách nén tài liệu PDF.

// Tạo đối tượng CompressOptions để thiết lập hướng dẫn
var options = new CompressOptions();
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_pdf_file.pdf"));
// Thực hiện quy trình
PdfManager.Compress(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách thêm Bảng vào tệp PDF.

// Cấu hình tùy chọn bảng
var options = new TableOptions();
options.InsertPageBefore(1)
   .AddTable()
        .AddRow()
            .AddCell().AddParagraph("Name")
            .AddCell().AddParagraph("Age")
        .AddRow()
            .AddCell().AddParagraph("Bob")
            .AddCell().AddParagraph("12")
        .AddRow()
            .AddCell().AddParagraph("Sam")
            .AddCell().AddParagraph("20")
        .AddRow()
            .AddCell().AddParagraph("Sandy")
            .AddCell().AddParagraph("26")
        .AddRow()
            .AddCell().AddParagraph("Tom")
            .AddCell().AddParagraph("12")
        .AddRow()
            .AddCell().AddParagraph("Jim")
            .AddCell().AddParagraph("27");
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_input.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_output.pdf"));
// Thực hiện quy trình
PdfManager.AddTable(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách thêm Mục lục vào tệp PDF.

// Tạo đối tượng TocOptions để thiết lập hướng dẫn
var options = new TocOptions();
// Thiết lập Tiêu đề
options.Title = "Mục lục của tôi";
// Thiết kế các Đầu mục
options.Headings.Add(new TocHeading("Giới thiệu", 2));
options.Headings.Add(new TocHeading("Chương I", 3));
options.Headings.Add(new TocHeading("Chương II", 4));
options.Headings.Add(new TocHeading("Chương III", 5));
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_pdf_file.pdf"));
// Thực hiện quy trình
PdfManager.AddTableOfContents(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách thêm Mục lục vào tệp PDF với việc tạo bookmark.

// Tạo đối tượng TocOptions để thiết lập hướng dẫn
var options = new TocOptions();
// Thiết lập Tiêu đề
options.Title = "Mục lục của tôi";
// Tạo liên kết trong bookmark
options.GenerateBookmarks = true;
// Thiết kế các Đầu mục
options.Headings.Add(new TocHeading("Giới thiệu", 2, false, 1));
options.Headings.Add(new TocHeading("Chương I", 3, true, 1));
options.Headings.Add(new TocHeading("Chương II", 4, true, 1));
options.Headings.Add(new TocHeading("Ví dụ A", 4, true, 2));
options.Headings.Add(new TocHeading("Ví dụ B", 4, true, 2));
options.Headings.Add(new TocHeading("Ví dụ C", 4, true, 2));
options.Headings.Add(new TocHeading("Ví dụ D", 4, true, 2));
options.Headings.Add(new TocHeading("Chương III", 5, true, 1));
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập đường dẫn tệp đầu ra
options.AddOutput(new FileDataSource("path_to_result_pdf_file.pdf"));
// Thực hiện quy trình
PdfManager.AddTableOfContents(options);

Ví dụ Sử Dụng:

Ví dụ này minh họa cách thêm Mục lục vào tệp PDF và lưu dưới dạng stream.

// Tạo đối tượng TocOptions để thiết lập hướng dẫn
var options = new TocOptions();
// Thiết lập Tiêu đề
options.Title = "Mục lục của tôi";
// Thiết kế các Đầu mục
options.Headings.Add(new TocHeading("Giới thiệu", 2, false, 1));
// Thêm đường dẫn tệp đầu vào
options.AddInput(new FileDataSource("path_to_your_pdf_file.pdf"));
// Thiết lập stream đầu ra 
var outputStream = new MemoryStream();
options.AddOutput(new StreamDataSource(outputStream));
options.CloseOutputStreams = false;
// Thực hiện quy trình
PdfManager.AddTableOfContents(options);

Cải thiện khả năng sử dụng của TableGenerator

  • Class TableGenerator: là tĩnh và không yêu cầu sử dụng bộ khởi tạo.
  • Class TableGenerator: được đánh dấu là Obsolete. Sử dụng PdfManager thay vì.

Cải thiện khả năng sử dụng của PdfChatGpt

  • Class PdfChatGpt: là tĩnh và không yêu cầu sử dụng bộ khởi tạo.
  • Class PdfChatGptRequestOptions: đã thêm thuộc tính CancellationToken (Di chuyển từ PdfChatGpt).

Ví dụ Sử Dụng:

Ví dụ này minh họa cách sử dụng plugin PdfChatGpt bằng cách thêm tin nhắn vào yêu cầu.

var options = new PdfChatGptRequestOptions();
options.AddOutput(new FileDataSource("PdfChatGPT_output.pdf")); // Thêm đường dẫn tệp đầu ra.
options.ApiKey = "Khóa API của bạn."; // Bạn cần cung cấp khóa để truy cập API.
options.MaxTokens = 1000; // Số lượng tối đa token để tạo trong quá trình hoàn thành trò chuyện.
// cho hủy
// var cancelTokenSource = new CancellationTokenSource();
// var cToken = cancelTokenSource.Token;
// options.CancellationToken = cToken;

// Thêm các tin nhắn yêu cầu.
options.Messages.Add(new Message
{
    Content = "Bạn là một trợ lý hữu ích.",
    Role = Role.System
});
options.Messages.Add(new Message
{
    Content = "Đường kính pizza lớn nhất từng được làm là bao nhiêu?",
    Role = Role.User
});

// Xử lý yêu cầu.
var result = await PdfChatGpt.ProcessAsync(options);

Sửa lỗi

  • Đã sửa lỗi chuyển đổi html sang pdf metadata
  • Đã sửa lỗi PDF sang PDF/A_3b - Vấn đề định dạng văn bản và hình ảnh bị phóng lớn
  • Đã sửa lỗi PDF sang PDFA: báo cáo PDFA kết quả gây ra lỗi khi in
  • Đã sửa lỗi PDF sang HTML: hình ảnh kết quả chứa nền
  • Đã sửa lỗi HTML sang PDF: Một số ký tự Trung Quốc xuất hiện dưới dạng hộp
  • Đã sửa lỗi HTML sang PDF: Phông chữ tùy chỉnh Base64 không được tôn trọng
  • Đã sửa lỗi HTML sang PDF: css trường biểu mẫu không được áp dụng
  • Đã sửa lỗi HTML sang PDF: biểu đồ không được hiển thị đúng
  • Đã sửa lỗi HTML sang PDF: Ký tự đặc biệt không được hiển thị
6 thg 10, 2025
 Tiếng Việt