Quản lý các đối tượng mực trong bài thuyết trình bằng JavaScript
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, thể hiện 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 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 xác định 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 chi tiết, xem Shape Layout Format.
Tuy nhiên, khi PowerPoint xử lý một đối tượng mực, nó sẽ bỏ qua mọi 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 khu vực container được xác định bằng các phương thức tiêu chuẩn Shape.getWidth và Shape.getHeight :

Dấu vết mực
Một dấu vết mực là thành phần 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 vết lưu trữ một dãy các điểm liên tiếp.
Dạng mã hoá đơn giản nhất xác định tọa độ X và Y của mỗi điểm mẫu. Khi tất cả các điểm liên tiếp được vẽ, chúng tạo ra một hình ảnh như sau:

Thuộc tính Brush để Vẽ
Brush được 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.getColor và InkBrush.getSize .
Đặt màu Brush cho mực
Đoạn mã JavaScript sau cho thấy cách đặt màu cho brush mực:
const aspose = {
slides: require("aspose.slides.via.java")
};
const java = require("java");
const presentation = new aspose.slides.Presentation("pres.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const ink = slide.getShapes().get_Item(0);
const brush = ink.getTraces()[0].getBrush();
const red = java.getStaticFieldValue("java.awt.Color", "RED");
brush.setColor(red);
} finally {
presentation.dispose();
}
Đặt kích thước Brush cho mực
Đoạn mã JavaScript sau cho thấy cách đặt kích thước cho brush mực:
const aspose = {
slides: require("aspose.slides.via.java")
};
const java = require("java");
const presentation = new aspose.slides.Presentation("pres.pptx");
try {
const slide = presentation.getSlides().get_Item(0);
const ink = slide.getShapes().get_Item(0);
const brush = ink.getTraces()[0].getBrush();
const brushSize = java.newInstanceSync("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 bằng 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 bằng nhau, PowerPoint hiển thị kích thước 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 brush — nó luôn giả định rằng độ dày đường vẽ là 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 co giãn tới kích thước của container (khung). Khi kích thước container thay đổi, kích thước brush vẫn cố định, và ngược lại.

PowerPoint áp 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 khi Xuất và Khi Render
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 kết quả xuất khẩu hoặc render. 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 của 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 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 |
| Ảnh slide | RenderingOptions.getInkOptions |
Các phương thức InkOptions sau khai thác cùng hai cài đặt:
- InkOptions.getHideInk xác định liệu các đối tượng mực có được đưa vào đầu ra hay không. Giá trị mặc định là
false. - InkOptions.getInterpretMaskOpAsOpacity xác định liệu một thao tác mask có được diễn giải là độ trong suốt khi render brush mực hay không. Giá trị mặc định là
true; gọi InkOptions.setInterpretMaskOpAsOpacity vớifalseđể sử dụng thao tác ROP thay thế.
Ẩn các Đố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 bất kỳ nội dung mực nào, gọi InkOptions.setHideInk với true.
Đoạn JavaScript sau xuất bản trình chiếu ra PDF đồng thời ẩn tất cả các đối tượng mực:
const aspose = {
slides: require("aspose.slides.via.java")
};
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const pdfOptions = new aspose.slides.PdfOptions();
pdfOptions.getInkOptions().setHideInk(true);
presentation.save("presentation_without_ink.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
} finally {
presentation.dispose();
}
Ẩn các Đối tượng mực Khi Render Slide dưới dạng Ảnh
Để ẩn các đối tượng mực khi render các slide dưới dạng ảnh bitmap, cấu hình RenderingOptions.getInkOptions và truyền các tùy chọn render vào Slide.getImage.
Đoạn JavaScript sau render slide đầu tiên dưới dạng ảnh PNG mà không có đối tượng mực:
const aspose = {
slides: require("aspose.slides.via.java")
};
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const renderingOptions = new aspose.slides.RenderingOptions();
renderingOptions.getInkOptions().setHideInk(true);
const slide = presentation.getSlides().get_Item(0);
const image = slide.getImage(renderingOptions);
try {
image.save("slide_without_ink.png", aspose.slides.ImageFormat.Png);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Kiểm soát Render Mask cho Mực
Cài đặt InkOptions.getInterpretMaskOpAsOpacity kiểm soát cách các thao tác mask được diễn giải khi render brush 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 InkOptions.setInterpretMaskOpAsOpacity với false.
Đoạn JavaScript sau xuất một slide ra SVG và sử dụng render dựa trên ROP cho các thao tác mask của mực:
const aspose = {
slides: require("aspose.slides.via.java")
};
const java = require("java");
const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
const svgOptions = new aspose.slides.SVGOptions();
svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);
const outputStream = java.newInstanceSync("java.io.FileOutputStream", "slide.svg");
try {
const slide = presentation.getSlides().get_Item(0);
slide.writeAsSvg(outputStream, svgOptions);
} finally {
outputStream.close();
}
} finally {
presentation.dispose();
}
Cài đặt tương tự cũng có thể á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 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 duyệt, gọi InkOptions.setHideInk với true trong quá trình xuất.
Để giữ lại mực, để InkOptions.getHideInk ở giá trị mặc định false khi các chú thích mực là một phần nội dung mong muốn, chẳng hạn bình luận duyệt, ghi chú viết tay, gạch chân 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 duyệt và cuối cùng riêng biệt từ cùng một bản trình chiếu mà không sửa đổ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 đã tồn tại không?
Có. Lấy dấu vết từ Ink.getTraces và sau đó thay đổi InkTrace.getBrush. Gọi InkBrush.setColor hoặc InkBrush.setSize để thay đổi brush.
Việc ẩn mực có thay đổi bản trình chiếu nguồn không?
Không. Gọi InkOptions.setHideInk chỉ ảnh hưởng tới kết quả render hoặc xuất; nó không xóa hay 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
- Để tìm hiểu về shape nói chung, xem phần PowerPoint Shapes.
- Để biết thêm về 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.