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.getWidth và Shape.getHeight:

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:

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.getColor và InkBrush.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:

Để 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:

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.

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 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 |
|---|---|
| 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:
- InkOptions.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. - InkOptions.getInterpretMaskOpAsOpacity xác định liệu một thao tác mask có được diễn giải là độ trong suốt khi kết xuất 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 Đố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
- Để 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ề kết xuất slide thành ảnh, xem Convert Presentation Slides to Images.