Sao chép macro Word trong Java bằng Aspose.Words

Một tháng nữa, một bản phát hành giàu tính năng khác! Aspose.Words for Java 19.12 đã được triển khai với một loạt các tính năng, cải tiến và sửa lỗi hữu ích. Sử dụng bản phát hành mới nhất, bạn sẽ có thể sao chép macro Word từ tài liệu này sang tài liệu khác bằng cách sao chép mô-đun VBA hoặc dự án VBA trong Java. Hơn nữa, chúng tôi đã thêm hỗ trợ PDF 1.7 Standard cho chuyển đổi Word sang PDF. Ngoài ra, bản phát hành mới nhất của Aspose.Words for Java có khả năng quét các phông chữ do người dùng cài đặt trong Windows 10 để tìm nguồn phông chữ. Vì vậy, hãy xem xét các tính năng hữu ích này một cách chi tiết hơn.

Sao chép Macro VBA từ Tài liệu Word này sang Tài liệu Word khác trong Java

Macro trong tài liệu Word được viết bằng VBA (Visual Basic for Applications) để tự động hóa các tác vụ thường dùng. Macro MS Word chứa một tập hợp các câu lệnh mã được thực thi khi bấm vào một nút cụ thể trên thanh công cụ hoặc nhấn tổ hợp phím.

Trong bản phát hành trước của Aspose.Words for Java, chúng tôi đã giới thiệu tính năng thêm macro vào dự án VBA hoặc mô-đun VBA trong tài liệu Word. Tuy nhiên, có thể xảy ra trường hợp khi bạn cần sao chép mô-đun VBA hoặc toàn bộ dự án VBA để sao chép macro Word từ tài liệu này sang tài liệu khác theo chương trình. Để có thể thực hiện được, chúng tôi đã thêm phương thức deepClone() vào các lớp VABModuleVBAProject để sao chép macro Word từ một mô-đun hoặc dự án VBA cụ thể.

Bây giờ chúng ta hãy xem cách sao chép macro Word từ tài liệu này sang tài liệu khác trong Java bằng cách sử dụng Aspose.Words for Java.

Nhân bản mô-đun VBA

Mẫu mã Java sau đây cho biết cách sao chép macro bằng cách sao chép một mô-đun VBA cụ thể trong tài liệu Word.

Document doc = new Document(dataDir + "test.docm");
      VbaProject project = doc.getVbaProject();

      Document destDoc = new Document();

      destDoc.setVbaProject(new VbaProject());

      // Sao chép một mô-đun duy nhất.
      VbaModule copyModule = doc.getVbaProject().getModules().get("Module1").deepClone();
      destDoc.getVbaProject().getModules().add(copyModule);

      destDoc.save(dataDir + "output.docm");

Nhân bản dự án VBA

Mẫu mã Java sau đây cho thấy cách sao chép macro bằng cách sao chép một dự án VBA hoàn chỉnh trong tài liệu Word.

Document doc = new Document(dataDir + "test.docm");
VbaProject project = doc.getVbaProject();

Document destDoc = new Document();

// Nhân bản toàn bộ dự án.
destDoc.setVbaProject(doc.getVbaProject().deepClone());

destDoc.save(dataDir + "output.docm");

Chuyển Word sang PDF 1.7 Standard trong Java

Tài liệu PDF có thể tuân thủ các tiêu chuẩn hoặc phiên bản khác nhau của thông số kỹ thuật PDF. PDF 1.7 là phiên bản thứ sáu của đặc tả PDF và nó bao gồm một số công nghệ độc quyền chỉ được xác định bởi Adobe. Aspose.Words for Java đã hỗ trợ Chuyển đổi từ Word sang PDF, tuy nhiên, chúng tôi đã mở rộng hỗ trợ này và giờ đây bạn có thể chuyển đổi tài liệu Word sang PDF 1.7. Đối với điều này, chúng tôi đã thêm tùy chọn PDF17 vào PdfCompliance enum.

Mẫu mã Java sau đây cho biết cách chuyển đổi Word sang PDF bằng cách chỉ định PdfCompliance.

// Để biết các ví dụ đầy đủ và tệp dữ liệu, vui lòng truy cập // https://github.com/aspose-words/Aspose.Words-for-Java
// Đường dẫn đến thư mục tài liệu.
Document originalDoc = new Document(dataDir + "Document.docx");

// Cung cấp sự tuân thủ PDFSaveOption cho PDF17
// hoặc chỉ chuyển đổi mà không có SaveOptions
PdfSaveOptions pso = new PdfSaveOptions();
pso.setCompliance(PdfCompliance.PDF_17);

originalDoc.save(dataDir + "Output.pdf", pso);

Sử dụng phông chữ do người dùng cài đặt cho SystemFontSource trên Windows 10

Trong các phiên bản trước của Aspose.Words for Java, API được sử dụng để chỉ quét các phông chữ do hệ thống cài đặt cho SystemFontSource. Cách tiếp cận này không phù hợp với Windows 10, nơi các phông chữ có thể được cài đặt vào thư mục hệ thống “%windir%\fonts” cho tất cả người dùng hoặc vào thư mục người dùng “%userprofile%\AppData\Local\Microsoft \Windows\Fonts” cho người dùng hiện tại. Chúng tôi đã nâng cao tính năng này và giờ đây Aspose.Words for Java cũng có khả năng quét các phông chữ do người dùng cài đặt.

Tùy chọn Tìm và Thay thế Mới {#Aspose.Words for Java19.12ReleaseNotes-AddedanewFindReplaceOptions.UseLegacyOrderoption}

Aspose.Words for Java cung cấp tùy chọn Tìm và thay thế để thay thế các từ hoặc cụm từ mong muốn trong tài liệu Word. Trong các phiên bản trước của API, tính năng tìm/thay thế được sử dụng để phân tích các hộp văn bản riêng biệt với nội dung của tài liệu. Hành vi này được thiết kế phù hợp với hành vi của MS Word, tuy nhiên, có thể xảy ra trường hợp bạn cần tìm và thay thế nội dung theo trình tự bao gồm cả văn bản trong hộp văn bản. Đối với trường hợp như vậy, chúng tôi đã giới thiệu một tùy chọn mới trong lớp FindReplaceOptions là UseLegacyOrder. Mẫu mã Java sau đây cho biết cách sử dụng tùy chọn này khi tìm và thay thế văn bản trong tài liệu Word.

public static void FineReplaceUsingLegacyOrder(String dataDir) throws Exception
{
    // Mở tài liệu.
    Document doc = new Document(dataDir + "source.docx");
    FindReplaceOptions options = new FindReplaceOptions();
    options.setReplacingCallback(new ReplacingCallback());
    options.setUseLegacyOrder(true);

    doc.getRange().replace(Pattern.compile("\\[(.*?)\\]"), "", options);

    dataDir = dataDir + "usingLegacyOrder_out.doc";
    doc.save(dataDir);
}

private static class ReplacingCallback implements IReplacingCallback
{
    public int replacing(ReplacingArgs args) {
    	System.out.print(args.getMatch().group());
        return ReplaceAction.REPLACE;
    }
}

Chà, đây là tổng quan ngắn gọn về một số tính năng quan trọng mà chúng tôi đã thêm vào bản phát hành mới nhất. Bạn có thể xem danh sách đầy đủ các tính năng và bản sửa lỗi trong ghi chú phát hành. Bạn có thể tải xuống bản phát hành mới nhất và tự mình đánh giá các tính năng mới. Để biết thêm chi tiết về bất kỳ tính năng nào, bạn có thể tham khảo tài liệu của API cũng như liên hệ với chúng tôi qua diễn đàn của chúng tôi.