Gestire gli oggetti inchiostro della presentazione in PHP
Introduzione
PowerPoint fornisce una funzionalità di inchiostro che consente di disegnare tratti liberi. L’inchiostro può essere usato per evidenziare altri oggetti, mostrare connessioni e processi e attirare l’attenzione su elementi specifici di una diapositiva.
Aspose.Slides fornisce i tipi necessari per lavorare con gli oggetti inchiostro. Ad esempio, la classe Ink rappresenta un oggetto inchiostro su una diapositiva.
Differenze tra oggetti normali e oggetti inchiostro
Gli oggetti su una diapositiva PowerPoint sono tipicamente rappresentati da oggetti Shape. Nella forma più semplice, una forma è un contenitore che definisce l’area dell’oggetto stesso (il suo frame) insieme a proprietà come le dimensioni del contenitore, la forma e lo sfondo. Per ulteriori informazioni, vedere Shape Layout Format.
Tuttavia, quando PowerPoint gestisce un oggetto inchiostro, ignora tutte le proprietà del frame dell’oggetto (contenitore) tranne la sua dimensione. Le dimensioni dell’area del contenitore sono determinate dai metodi standard Shape.getWidth e Shape.getHeight:

Tracce d’inchiostro
Una traccia d’inchiostro è un elemento base utilizzato per registrare la traiettoria di una penna mentre l’utente scrive in inchiostro digitale. Una traccia memorizza una sequenza di punti collegati.
La forma più semplice di codifica specifica le coordinate X e Y di ogni punto di campionamento. Quando tutti i punti collegati vengono renderizzati, producono un’immagine come questa:

Proprietà del pennello per il disegno
Un pennello è usato per disegnare linee che collegano i punti di una traccia d’inchiostro. Il pennello ha il proprio colore e dimensione, rappresentati dai metodi InkBrush.getColor e InkBrush.getSize.
Impostare il colore del pennello d’inchiostro
Questo codice PHP mostra come impostare il colore di un pennello d’inchiostro:
$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();
}
Impostare la dimensione del pennello d’inchiostro
Questo codice PHP mostra come impostare la dimensione di un pennello d’inchiostro:
$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();
}
In generale, la larghezza e l’altezza di un pennello non coincidono, quindi PowerPoint non visualizza la dimensione del pennello (la sezione dati corrispondente è grigia). Quando larghezza e altezza coincidono, PowerPoint visualizza la dimensione in questo modo:

Per maggiore chiarezza, aumentiamo l’altezza dell’oggetto inchiostro e rivediamo le dimensioni importanti:

Il contenitore (frame) non tiene conto della dimensione dei pennelli — assume sempre che lo spessore della linea sia zero (vedi l’immagine precedente).
Pertanto, per determinare l’area visibile dell’intero oggetto inchiostro, deve essere considerata la dimensione del pennello delle sue tracce. Qui, l’oggetto di destinazione (la traccia di testo scritto a mano) è stato scalato alle dimensioni del contenitore (frame). Quando le dimensioni del contenitore cambiano, la dimensione del pennello rimane costante e viceversa.

PowerPoint utilizza un comportamento simile per gli oggetti di testo:

Controllare l’aspetto dell’inchiostro durante l’esportazione e il rendering
Aspose.Slides fornisce la classe InkOptions per controllare come gli oggetti inchiostro appaiono nell’output esportato o renderizzato. È possibile utilizzare le sue proprietà per nascondere completamente l’inchiostro o modificare il modo in cui le operazioni di maschera del pennello d’inchiostro vengono interpretate.
Le opzioni inchiostro sono disponibili attraverso le opzioni di esportazione o rendering per diversi tipi di output:
| Output | Proprietà delle opzioni inchiostro |
|---|---|
| PdfOptions.getInkOptions | |
| HTML | HtmlOptions.getInkOptions |
| SVG | SVGOptions.getInkOptions |
| TIFF | TiffOptions.getInkOptions |
| Immagine della diapositiva | RenderingOptions.getInkOptions |
I seguenti metodi di InkOptions espongono le stesse due impostazioni:
- InkOptions.getHideInk determina se gli oggetti inchiostro sono inclusi nell’output. Il valore predefinito è
false. - InkOptions.getInterpretMaskOpAsOpacity determina se un’operazione di maschera è interpretata come opacità durante il rendering di un pennello d’inchiostro. Il valore predefinito è
true; chiamare InkOptions.setInterpretMaskOpAsOpacity confalseper utilizzare invece l’operazione ROP.
Nascondere gli oggetti inchiostro nell’output PDF
Per impostazione predefinita, gli oggetti inchiostro rimangono visibili durante l’esportazione. Per creare un output pulito senza annotazioni scritte a mano o altri contenuti inchiostro, chiamare InkOptions.setHideInk con true.
Il seguente esempio PHP esporta una presentazione in PDF nascondendo tutti gli oggetti inchiostro:
$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();
}
Nascondere gli oggetti inchiostro durante il rendering di una diapositiva come immagine
Per nascondere gli oggetti inchiostro durante il rendering delle diapositive come immagini bitmap, configurare RenderingOptions.getInkOptions e passare le opzioni di rendering a Slide.getImage.
Il seguente esempio PHP rende la prima diapositiva come immagine PNG senza oggetti inchiostro:
$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();
}
Controllare il rendering della maschera dell’inchiostro
L’impostazione InkOptions.getInterpretMaskOpAsOpacity controlla come le operazioni di maschera sono interpretate durante il rendering dei pennelli d’inchiostro. Il valore predefinito è true, che utilizza l’opacità. Per utilizzare invece l’operazione ROP, chiamare InkOptions.setInterpretMaskOpAsOpacity con false.
Il seguente esempio PHP esporta una diapositiva in SVG e utilizza il rendering basato su ROP per le operazioni di maschera dell’inchiostro:
$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();
}
La stessa impostazione può essere applicata tramite TiffOptions.getInkOptions quando si esporta una presentazione o si rende una diapositiva in TIFF.
Scegliere se nascondere o preservare l’inchiostro
Quando è necessario una versione pulita di una presentazione annotata per la distribuzione senza segni di revisione, chiamare InkOptions.setHideInk con true durante l’esportazione.
Lasciare InkOptions.getHideInk al valore predefinito false quando le annotazioni inchiostro fanno parte del contenuto desiderato, ad esempio commenti di revisione, note scritte a mano, evidenziazioni o disegni che devono rimanere visibili nel risultato esportato. Questo consente alle applicazioni di generare output di revisione e finali separati dalla stessa presentazione senza modificare gli oggetti inchiostro originali.
FAQ
Posso cambiare colore o dimensione di un tratto d’inchiostro esistente?
Sì. Ottieni la traccia da Ink.getTraces, quindi modifica il suo InkTrace.getBrush. Chiama InkBrush.setColor o InkBrush.setSize per cambiare il pennello.
Nascondere l’inchiostro modifica la presentazione sorgente?
No. Chiamare InkOptions.setHideInk influisce solo sul risultato renderizzato o esportato; non rimuove né modifica gli oggetti inchiostro nella presentazione sorgente.
Quali formati di esportazione supportano le opzioni inchiostro?
È possibile configurare le opzioni inchiostro per PDF, HTML, SVG, TIFF e immagini bitmap delle diapositive attraverso le relative opzioni di esportazione o rendering mostrate sopra.
Ulteriori letture
- Per informazioni generali sulle forme, vedere la sezione PowerPoint Shapes.
- Per maggiori dettagli sui valori effettivi, vedere Shape Effective Properties.
- Per dettagli sull’esportazione PDF, vedere Convert PPT and PPTX to PDF.
- Per dettagli sull’esportazione HTML, vedere Convert PowerPoint Presentations to HTML.
- Per dettagli sull’esportazione SVG, vedere Render Presentation Slides as SVG Images.
- Per dettagli sull’esportazione TIFF, vedere Convert PowerPoint Presentations to TIFF.
- Per dettagli sul rendering di diapositive in immagini, vedere Convert Presentation Slides to Images.