Quản lý các đối tượng mực trong PowerPoint bằng Java
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ị 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ụ, giao diện IInk đạ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 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. Ở dạng đơn giản nhấ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. Kích thước khu vực container được xác định bởi các phương thức tiêu chuẩn IShape.getWidth và IShape.getHeight:

Dấu mực
Dấu mực là một yếu tố cơ bản được 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 lưu trữ một chuỗi các điểm nối nhau.
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 nối nhau được render, chúng tạo thành một hình ảnh như sau:

Thuộc tính bàn chải để vẽ
Bàn chải được dùng để vẽ các đường nối các điểm của một dấu mực. Bàn chải có màu và kích thước riêng, được đại diện bởi các phương thức IInkBrush.getColor và IInkBrush.getSize.
Đặt màu bàn chải mực
Đoạn mã Java này cho thấy cách đặt màu cho bàn chải mực:
import com.aspose.slides.*;
import java.awt.Color;
Presentation presentation = new Presentation("pres.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IInk ink = (IInk) slide.getShapes().get_Item(0);
IInkBrush brush = ink.getTraces()[0].getBrush();
brush.setColor(Color.RED);
} finally {
presentation.dispose();
}
Đặt kích thước bàn chải mực
Đoạn mã Java này cho thấy cách đặt kích thước cho bàn chải mực:
import com.aspose.slides.*;
import java.awt.Dimension;
Presentation presentation = new Presentation("pres.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IInk ink = (IInk) slide.getShapes().get_Item(0);
IInkBrush brush = ink.getTraces()[0].getBrush();
Dimension brushSize = new Dimension(5, 10);
brush.setSize(brushSize);
} finally {
presentation.dispose();
}
Thông thường, chiều rộng và chiều cao của bàn chải không khớp nhau, vì vậy PowerPoint không hiển thị kích thước bàn chải (phần dữ liệu tương ứng sẽ bị làm mờ). Khi chiều rộng và chiều cao của bàn chải khớp, PowerPoint hiển thị kích thước của nó như sau:

Để làm rõ, 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:

Container (khung) không tính đến kích thước của các bàn chải — nó luôn giả định độ dày đường nét 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 bàn chải của các dấu. Ở đây, đối tượng mục tiêu (dấu văn bản viết tay) đã được thu phóng tới kích thước của container (khung). Khi kích thước container thay đổi, kích thước bàn chải vẫn không thay đổi, và ngược lại.

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

Kiểm soát hiển thị mực trong quá trình xuất và render
Aspose.Slides cung cấp giao diện IInkOptions để kiểm soát cách các đối tượng mực xuất hiện trong đầu ra được xuất hoặc render. Bạn có thể 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 mặt nạ bàn chải 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 render cho một số loại đầu ra:
| Đầu ra | Thuộc tính tùy chọn mực |
|---|---|
PdfOptions.getInkOptions |
|
| HTML | HtmlOptions.getInkOptions |
| SVG | SVGOptions.getInkOptions |
| TIFF | TiffOptions.getInkOptions |
| Slide image | RenderingOptions.getInkOptions |
Các phương thức sau của IInkOptions cung cấp cùng hai cài đặt:
- IInkOptions.getHideInk xác định liệu các đối tượng mực có được bao gồm trong đầu ra hay không. Giá trị mặc định là
false. - IInkOptions.getInterpretMaskOpAsOpacity xác định liệu một thao tác mặt nạ có được diễn giải như độ trong suốt khi render bàn chải mực hay không. Giá trị mặc định là
true; gọi IInkOptions.setInterpretMaskOpAsOpacity vớifalseđể sử dụng thao tác ROP thay thế.
Ẩ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 đầ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 IInkOptions.setHideInk với true.
Đoạn mã Java sau xuất bản trình chiếu sang PDF trong khi ẩn tất cả các đối tượng mực:
import com.aspose.slides.*;
Presentation presentation = new Presentation("presentation.pptx");
try {
PdfOptions 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 render slide dưới dạng hình ảnh
Để ẩn các đối tượng mực khi render slide dưới dạng ảnh bitmap, cấu hình RenderingOptions.getInkOptions và truyền các tùy chọn render cho ISlide.getImage.
Đoạn mã Java sau render slide đầu tiên thành ảnh PNG mà không có đối tượng mực:
import com.aspose.slides.*;
Presentation presentation = new Presentation("presentation.pptx");
try {
RenderingOptions renderingOptions = new RenderingOptions();
renderingOptions.getInkOptions().setHideInk(true);
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(renderingOptions);
try {
image.save("slide_without_ink.png", ImageFormat.Png);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Kiểm soát việc render mặt nạ mực
Cài đặt IInkOptions.getInterpretMaskOpAsOpacity kiểm soát cách các thao tác mặt nạ được diễn giải khi render bàn chải mực. Giá trị mặc định là true, sử dụng độ trong suốt. Để dùng thao tác ROP thay thế, gọi IInkOptions.setInterpretMaskOpAsOpacity với false.
Đoạn mã Java sau xuất một slide sang SVG và sử dụng render dựa trên ROP cho các thao tác mặt nạ mực:
import com.aspose.slides.*;
import java.io.FileOutputStream;
import java.io.IOException;
Presentation presentation = new Presentation("presentation.pptx");
try {
SVGOptions svgOptions = new SVGOptions();
svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);
FileOutputStream stream = new FileOutputStream("slide.svg");
ISlide slide = presentation.getSlides().get_Item(0);
slide.writeAsSvg(stream, svgOptions);
} finally {
presentation.dispose();
}
Cài đặt tương tự có thể được áp dụng qua TiffOptions.getInkOptions khi xuất bản trình chiếu hoặc render slide sang TIFF.
Chọn ẩn hay bảo tồn 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 đánh dấu xem xét, gọi IInkOptions.setHideInk với true trong quá trình xuất.
Giữ IInkOptions.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 đánh giá, ghi chú viết tay, đánh dấu hoặc bản vẽ cần hiển thị trong kết quả xuất. Điều này cho phép các ứng dụng tạo ra các đầu ra đánh giá và cuối cùng riêng biệt từ cùng một bản trình chiếu mà không cần thay đổi các đối tượng mực nguồn.
Câu hỏi thường gặp
Tôi có thể thay đổi màu hoặc kích thước của một nét mực hiện có không?
Có. Lấy dấu từ IInk.getTraces, sau đó thay đổi IInkTrace.getBrush. Gọi IInkBrush.setColor hoặc IInkBrush.setSize để thay đổi bàn chải.
Việc ẩn mực có thay đổi bản trình chiếu nguồn không?
Không. Gọi IInkOptions.setHideInk chỉ ảnh hưởng đến kết quả render hoặc xuất; nó không loại bỏ hoặc sửa đổi các đối tượng mực trong bản trình chiếu nguồn.
Các đị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 render tương ứng được liệt kê ở trên.
Đọc thêm
- Để đọc về các hình dạng nói chung, xem phần PowerPoint Shapes.
- Để biết thêm về các giá trị hiệu quả, xem Shape Effective Properties.
- Để biết chi tiết về xuất PDF, xem Convert PPT and PPTX to PDF.
- Để biết chi tiết về xuất HTML, xem Convert PowerPoint Presentations to HTML.
- Để biết chi tiết về xuất SVG, xem Render Presentation Slides as SVG Images.
- Để biết chi tiết về xuất TIFF, xem Convert PowerPoint Presentations to TIFF.
- Để biết chi tiết về render slide thành ảnh, xem Convert Presentation Slides to Images.