Quản lý các đối tượng mực trong PowerPoint bằng PHP

Giới thiệu

PowerPoint cung cấp tính năng mực cho phép bạn vẽ các nét tự do. Mực có thể được sử dụng để làm nổi bật các đối tượng khác, hiển thị các kết nối và quy trình, và thu hút sự chú ý đến các mục cụ thể trên một slide.

Aspose.Slides cung cấp các kiểu cần thiết để làm việc với các đối tượng mực. Ví dụ, lớp Ink đại diện cho một đối tượng mực trên slide.

Sự khác biệt giữa Đối tượng Thông thường và Đối tượng Mực

Các đối tượng trên một slide PowerPoint thường được biểu diễn bằng các đối tượng Shape . Trong dạng đơn giản nhất, một shape là một container định nghĩa khu vực của chính đối tượng (khung của nó) cùng với các thuộc tính như kích thước container, hình dạng và nền. Để biết thêm thông tin, xem Shape Layout Format.

Tuy nhiên, khi PowerPoint xử lý một đối tượng mực, nó bỏ qua tất cả các thuộc tính của khung đối tượng (container) ngoại trừ kích thước của nó. Kích thước của khu vực container được xác định bằng các phương thức tiêu chuẩn Shape.getWidthShape.getHeight:

ink_powerpoint1

Dấu vết Mực

Một dấu vết mực là yếu tố cơ bản được sử dụng để ghi lại quỹ đạo của bút khi người dùng viết mực kỹ thuật số. Một dấu vết lưu trữ một chuỗi các điểm kết nối.

Dạng mã hoá đơn giản nhất chỉ định tọa độ X và Y của mỗi điểm mẫu. Khi tất cả các điểm kết nối được vẽ, chúng tạo ra một hình ảnh như sau:

ink_powerpoint2

Thuộc tính Brush để Vẽ

Brush được sử dụng để vẽ các đường nối các điểm của một dấu vết mực. Brush có màu và kích thước riêng, được biểu diễn bằng các phương thức InkBrush.getColorInkBrush.getSize.

Đặt Màu Brush Mực

Đoạn mã PHP sau cho thấy cách đặt màu cho brush mực:

$presentation = new Presentation("pres.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $ink = $slide->getShapes()->get_Item(0);
    $brush = $ink->getTraces()[0]->getBrush();
    $brush->setColor(java("java.awt.Color")->RED);
} finally {
    $presentation->dispose();
}

Đặt Kích thước Brush Mực

Đoạn mã PHP sau cho thấy cách đặt kích thước cho brush mực:

$presentation = new Presentation("pres.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $ink = $slide->getShapes()->get_Item(0);
    $brush = $ink->getTraces()[0]->getBrush();
    $brushSize = new Java("java.awt.Dimension", 5, 10);
    $brush->setSize($brushSize);
} finally {
    $presentation->dispose();
}

Thông thường, chiều rộng và chiều cao của brush không khớp nhau, vì vậy PowerPoint không hiển thị kích thước brush (phần dữ liệu tương ứng bị xám). Khi chiều rộng và chiều cao của brush khớp nhau, PowerPoint hiển thị kích thước của nó như sau:

ink_powerpoint3

Để rõ hơn, hãy tăng chiều cao của đối tượng mực và xem lại các kích thước quan trọng:

ink_powerpoint4

Container (khung) không tính đến kích thước của brush — nó luôn giả định độ dày đường bằng 0 (xem hình ảnh trước).

Do đó, để xác định khu vực hiển thị của toàn bộ đối tượng mực, phải tính đến kích thước brush của các dấu vết. Ở đây, đối tượng mục tiêu (dấu vết văn bản viết tay) đã được phóng to tới kích thước của container (khung). Khi kích thước của container thay đổi, kích thước brush vẫn không đổi, và ngược lại.

ink_powerpoint5

PowerPoint sử dụng hành vi tương tự cho các đối tượng văn bản:

ink_powerpoint6

Kiểm soát Hiển thị Mực khi Xuất và Kết xuất

Aspose.Slides cung cấp lớp InkOptions để kiểm soát cách các đối tượng mực xuất hiện trong đầu ra đã xuất hoặc kết xuất. Bạn có thể sử dụng các thuộc tính của nó để ẩn hoàn toàn mực hoặc thay đổi cách các thao tác mask brush mực được diễn giải.

Các tùy chọn mực có sẵn thông qua các tùy chọn xuất hoặc kết xuất cho một số loại đầu ra:

Output Ink options property
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
Slide image RenderingOptions.getInkOptions

Các phương thức InkOptions sau đây cung cấp cùng hai cài đặt:

Ẩn Đối tượng Mực trong Đầu ra PDF

Mặc định, các đối tượng mực vẫn hiển thị khi xuất. Để tạo ra đầu ra sạch sẽ không có chú thích viết tay hoặc nội dung mực khác, gọi InkOptions.setHideInk với true.

Ví dụ PHP sau xuất bản trình chiếu sang PDF trong khi ẩn tất cả các đối tượng mực:

$presentation = new Presentation("presentation.pptx");
try {
    $pdfOptions = new PdfOptions();
    $pdfOptions->getInkOptions()->setHideInk(true);

    $presentation->save("presentation_without_ink.pdf", SaveFormat::Pdf, $pdfOptions);
} finally {
    $presentation->dispose();
}

Ẩn Đối tượng Mực Khi Kết xuất Slide thành Ảnh

Để ẩn các đối tượng mực khi kết xuất slide thành ảnh bitmap, cấu hình RenderingOptions.getInkOptions và truyền các tùy chọn kết xuất cho Slide.getImage.

Ví dụ PHP sau kết xuất slide đầu tiên thành ảnh PNG mà không có đối tượng mực:

$presentation = new Presentation("presentation.pptx");
try {
    $renderingOptions = new RenderingOptions();
    $renderingOptions->getInkOptions()->setHideInk(true);

    $slide = $presentation->getSlides()->get_Item(0);
    $image = $slide->getImage($renderingOptions);
    try {
        $image->save("slide_without_ink.png", ImageFormat::Png);
    } finally {
        $image->dispose();
    }
} finally {
    $presentation->dispose();
}

Kiểm soát Kết xuất Mask Mực

Cài đặt InkOptions.getInterpretMaskOpAsOpacity điều khiển cách các thao tác mask được diễn giải khi kết xuất brush mực. Giá trị mặc định là true, sử dụng độ trong suốt. Để sử dụng thao tác ROP thay thế, gọi InkOptions.setInterpretMaskOpAsOpacity với false.

Ví dụ PHP dưới đây xuất một slide sang SVG và sử dụng kết xuất dựa trên ROP cho các thao tác mask mực:

$presentation = new Presentation("presentation.pptx");
try {
    $svgOptions = new SVGOptions();
    $svgOptions->getInkOptions()->setInterpretMaskOpAsOpacity(false);

    $outputStream = new Java("java.io.FileOutputStream", "slide.svg");
    try {
        $slide = $presentation->getSlides()->get_Item(0);
        $slide->writeAsSvg($outputStream, $svgOptions);
    } finally {
        $outputStream->close();
    }
} finally {
    $presentation->dispose();
}

Cùng cài đặt này có thể được áp dụng thông qua TiffOptions.getInkOptions khi xuất bản trình chiếu hoặc kết xuất slide thành TIFF.

Chọn Ẩn hay Giữ lại Mực

Khi bạn cần một phiên bản sạch sẽ của bản trình chiếu có chú thích để phân phối mà không có dấu hiệu đánh giá, gọi InkOptions.setHideInk với true trong quá trình xuất.

Giữ InkOptions.getHideInk ở giá trị mặc định false khi các chú thích mực là một phần của nội dung dự định, chẳng hạn như bình luận xem xét, ghi chú viết tay, phần nổi bật hoặc bản vẽ cần hiển thị trong kết quả xuất. Điều này cho phép ứng dụng tạo ra các bản xuất đánh giá và bản cuối cùng riêng biệt từ cùng một trình chiếu mà không cần sửa đổi các đối tượng mực gốc.

FAQ

Tôi có thể thay đổi màu hoặc kích thước của nét mực đã tồn tại không?

Có. Lấy dấu vết từ Ink.getTraces, sau đó thay đổi InkTrace.getBrush. Gọi InkBrush.setColor hoặc InkBrush.setSize để thay đổi brush.

Việc ẩn mực có thay đổi trình chiếu nguồn không?

Không. Gọi InkOptions.setHideInk chỉ ảnh hưởng đến kết quả đã kết xuất hoặc xuất; nó không xóa hoặc sửa đổi các đối tượng mực trong trình chiếu nguồn.

Định dạng xuất nào hỗ trợ tùy chọn mực?

Bạn có thể cấu hình tùy chọn mực cho PDF, HTML, SVG, TIFF và ảnh slide bitmap thông qua các tùy chọn xuất hoặc kết xuất tương ứng được hiển thị ở trên.

Đọc thêm