GroupDocs.Comparison cho Python 26.5.0 hiện đã có sẵn. Đây là bản phát hành công khai đầu tiên trên PyPI của thư viện kể từ 25.12 và giới thiệu một wrapper thuần Python, kèm theo AGENTS.md để khám phá trợ lý AI, một script console mới, và việc tái cấu trúc tài liệu rộng rãi.
Có gì mới trong bản phát hành này
| Khóa | Thể loại | Tóm tắt |
|---|---|---|
| COMPARISONPYTHON-34 | Tính năng | Xây dựng lại wrapper thuần Python — API công khai hiện đã có thể được khám phá hoàn toàn từ Python |
| COMPARISONPYTHON-35 | Tính năng | Bao gồm AGENTS.md trong gói wheel để khám phá AI-agent |
| COMPARISONPYTHON-36 | Tính năng | Trang tài liệu mới: Tích hợp Agents và LLM (máy chủ MCP, kèm AGENTS.md, tài liệu tối ưu cho LLM) |
| COMPARISONPYTHON-39 | Tính năng | Script console groupdocs-comparison được cài đặt cùng wheel — các lệnh phụ compare, info, list-formats |
| COMPARISONPYTHON-38 | Cải tiến | Tái cấu trúc tài liệu — developer-guide/comparing-documents/ hợp nhất comparison-basic/ và advanced-usage/comparison/; việc tải và lưu được làm phẳng |
Thay đổi API công khai
Wrapper 26.x đã được xây dựng lại bằng một trình tạo mới, cung cấp API công khai rộng hơn và làm sạch một vài tên thành viên. Hầu hết các script hiện có viết cho 25.12 vẫn chạy nguyên trạng trên 26.5; các thay đổi dưới đây được nhóm theo mức độ ảnh hưởng tới khả năng tương thích.
Các lớp cấp cao mới có thể nhìn thấy
Các lớp này đã tồn tại trong nội bộ 25.12 nhưng bị ẩn khỏi việc introspection của Python bởi wrapper được biên dịch bằng Nuitka. Bây giờ chúng có thể được import trực tiếp:
from groupdocs.comparison.license import License, Metered
from groupdocs.comparison.options import (
Color, PdfCompareOptions, WordCompareOptions, CalculateCoordinatesModeEnumeration,
ChangeType, ComparisonDisplayMode, DetalisationLevel, FolderComparisonExtension,
ImagesInheritance, MetadataType, PagesSetup, PaperSize, PasswordSaveOption,
PreviewFormats, PreviewResolution,
)
from groupdocs.comparison.result import ComparisonAction, FileType, Rectangle
Lớp Color mới
StyleSettings.font_color, .highlight_color, .shape_color, và .boarder_color hiện chấp nhận bất kỳ giá trị nào sau:
from groupdocs.comparison.options import Color
# Named‑color factory
style.font_color = Color.from_name("firebrick")
# RGB / RGBA tuple
style.font_color = (255, 0, 0)
style.font_color = (255, 0, 0, 128)
# Hex string
style.font_color = "#FF8800"
style.font_color = "#80FF8800" # AARRGGBB
# Packed ARGB int
style.font_color = 0xFF0000
# Hoặc một thể hiện Color trực tiếp
style.font_color = Color(178, 34, 34, 255)
Color có thể được import từ groupdocs.comparison, groupdocs.comparison.options, và groupdocs.pydrawing — ba đường dẫn này đều trỏ tới cùng một lớp.
PreviewOptions dựa trên callable
Constructor của PreviewOptions chấp nhận một callable của Python cho delegate CreatePageStream. Chữ ký callback là (page_number) -> writable_stream:
from groupdocs.comparison.options import PreviewOptions, PreviewFormats
def create_page_stream(page_number):
return open(f"page-{page_number}.png", "wb")
def release_page_stream(page_number):
pass # the bridge has already flushed/closed the stream
with Comparer("source.docx") as comparer:
preview = PreviewOptions(create_page_stream, release_page_stream)
preview.preview_format = PreviewFormats.PNG
preview.page_numbers = [1, 2, 3]
comparer.source.generate_preview(preview)
PreviewOptions(create_page_stream) (đối số duy nhất, không có callback giải phóng) cũng hợp lệ.
Rectangle có kiểu từ các thuộc tính tọa độ
options = CompareOptions(calculate_coordinates=True)
with Comparer("source.docx") as comparer:
comparer.add("target.docx")
comparer.compare(options)
for change in comparer.get_changes():
b = change.box
print(f"({b.x:.1f}, {b.y:.1f}) {b.width:.1f}x{b.height:.1f}")
# (488.96, 223.86) 71.09x36.80 — '…'
Sự sửa đổi này áp dụng cho toàn bộ sản phẩm — ảnh hưởng tới mọi thuộc tính có kiểu giá trị trong mọi sản phẩm (Point, Size, v.v., không chỉ Rectangle).
Tham số kwargs theo tên thuộc tính trên các hàm khởi tạo tùy chọn
opts = ApplyChangeOptions(changes=changes, save_original_state=True)
save = SaveOptions(password="secret")
load = LoadOptions(password="open-sesame")
comp = CompareOptions(detect_style_changes=True, sensitivity_of_comparison=85)
Mẫu setter vẫn hoạt động (opts = ApplyChangeOptions(); opts.changes = changes). Các kwargs không xác định sẽ gây ra TypeError.
Các phương thức mới có hậu tố overload
Một tập hợp các phương thức có hậu tố overload đã được thêm vào bề mặt công khai để mỗi overload của .NET có thể được gọi từ Python bằng một tên rõ ràng, không gây mơ hồ. Ví dụ:
Comparer.add_file(path),add_stream(stream),add_streams(streams),add_string(text)Comparer.apply_changes_file(path, options),apply_changes_stream(stream, options), …Comparer.compare_file(...),compare_stream(...),compare_streams(...),compare_string(...),compare_compare_options(...),compare_save_options(...)Comparer.compare_directory_file(...),compare_directory_string(...)Comparer.get_changes_change_type(...),get_changes_get_change_options(...)License.set_license_file(...),set_license_stream(...),set_license_streams(...),set_license_string(...)Metered.set_metered_key_file(...),set_metered_key_string(...)Document.generate_preview_preview_options(...)localization.SupportedLocales.is_locale_supported_culture_info(...),is_locale_supported_file(...),is_locale_supported_string(...)
Comparer.dispose() rõ ràng
Có sẵn cho những người gọi không muốn sử dụng idiom with context‑manager. Mẫu khuyến nghị vẫn là:
with Comparer("source.docx") as comparer:
comparer.add("target.docx")
comparer.compare("result.docx")
Kiểu viết hoa cho Enum
Tất cả các enum sử dụng quy ước viết hoa UPPERCASE của Python. Các enum phổ biến:
from groupdocs.comparison.result import ComparisonAction, FileType
from groupdocs.comparison.options import (
ChangeType, ComparisonDisplayMode, DetalisationLevel,
FolderComparisonExtension, ImagesInheritance, MetadataType,
PaperSize, PasswordSaveOption, PreviewFormats, PreviewResolution,
)
from groupdocs.comparison.words.revision import RevisionAction
ComparisonAction.ACCEPT, ComparisonAction.REJECT, ComparisonAction.NONE
RevisionAction.ACCEPT, RevisionAction.REJECT, RevisionAction.NONE
PreviewFormats.PNG, PreviewFormats.JPG
MetadataType.SOURCE, MetadataType.TARGET, MetadataType.FILE_AUTHOR
PasswordSaveOption.USER, PasswordSaveOption.SOURCE, PasswordSaveOption.TARGET
Nếu bạn đang tham khảo tài liệu 25.12 mà hiển thị các giá trị dạng .Accept/.Reject, hãy cập nhật chúng sang dạng viết hoa.
Ví dụ mã
Dưới đây là một ví dụ tối thiểu minh họa cách import các lớp cấp cao mới có thể nhìn thấy và thực hiện một so sánh đơn giản:
from groupdocs.comparison import Comparer
from groupdocs.comparison.options import CompareOptions
options = CompareOptions(detect_style_changes=True)
with Comparer("source.docx") as comparer:
comparer.add("target.docx")
comparer.compare(options)
for change in comparer.get_changes():
print(f"Change type: {change.change_type}, Box: {change.box}")
Cách nhận bản cập nhật
PyPI
pip install groupdocs-comparison-net==26.5.0
Bánh xe (wheel) được công bố trên PyPI công cộng: https://pypi.org/project/groupdocs-comparison-net/
Tải trực tiếp
Không có liên kết tải trực tiếp nào được cung cấp; hãy lấy gói qua PyPI hoặc trang web GroupDocs.
Tài nguyên
- Trang dự án PyPI: https://pypi.org/project/groupdocs-comparison-net/
- Tài liệu Tích hợp Agents và LLM: https://docs.groupdocs.com/comparison/python-net/agents-and-llm-integration/
- Kho ví dụ: https://github.com/groupdocs-comparison/GroupDocs.Comparison-for-Python-via-.NET
- Diễn đàn báo cáo lỗi: https://forum.groupdocs.com/c/comparison/
- Hỗ trợ trả phí Helpdesk: https://helpdesk.groupdocs.com/