Gerenciar objetos de tinta de apresentação em JavaScript
Introdução
O PowerPoint oferece um recurso de tinta que permite desenhar traços livres. A tinta pode ser usada para destacar outros objetos, mostrar conexões e processos e chamar a atenção para itens específicos em um slide.
O Aspose.Slides fornece os tipos necessários para trabalhar com objetos de tinta. Por exemplo, a classe Ink representa um objeto de tinta em um slide.
Diferenças entre Objetos Regulares e Objetos de Tinta
Os objetos em um slide do PowerPoint geralmente são representados por objetos de forma. Na sua forma mais simples, uma forma é um contêiner que define a área do próprio objeto (sua moldura) junto com propriedades como o tamanho do contêiner, o formato e o plano de fundo. Para mais informações, consulte Shape Layout Format.
Entretanto, quando o PowerPoint trata um objeto de tinta, ele ignora todas as propriedades da moldura do objeto (contêiner) exceto seu tamanho. O tamanho da área do contêiner é determinado pelos métodos padrão Shape.getWidth e Shape.getHeight :

Traços de Tinta
Um traço de tinta é um elemento básico usado para registrar a trajetória de uma caneta enquanto o usuário escreve tinta digital. Um traço armazena uma sequência de pontos conectados.
A forma mais simples de codificação especifica as coordenadas X e Y de cada ponto de amostra. Quando todos os pontos conectados são renderizados, eles produzem uma imagem como esta:

Propriedades de Pincel para Desenho
Um pincel é usado para desenhar linhas que conectam os pontos de um traço de tinta. O pincel tem sua própria cor e tamanho, representados pelos métodos InkBrush.getColor e InkBrush.getSize .
Definir Cor do Pincel de Tinta
Este código JavaScript mostra como definir a cor de um pincel de tinta:
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();
}
Definir Tamanho do Pincel de Tinta
Este código JavaScript mostra como definir o tamanho de um pincel de tinta:
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();
}
Em geral, a largura e a altura de um pincel não correspondem, portanto o PowerPoint não exibe o tamanho do pincel (a seção de dados correspondente está esmaecida). Quando a largura e a altura do pincel correspondem, o PowerPoint exibe seu tamanho da seguinte forma:

Para clareza, vamos aumentar a altura do objeto de tinta e revisar as dimensões importantes:

O contêiner (moldura) não leva em conta o tamanho dos pincéis - ele sempre assume que a espessura da linha é zero (veja a imagem anterior).
Portanto, para determinar a área visível de todo o objeto de tinta, o tamanho do pincel de seus traços deve ser considerado. Aqui, o objeto alvo (o traço de texto manuscrito) foi dimensionado ao tamanho do contêiner (moldura). Quando o tamanho do contêiner muda, o tamanho do pincel permanece constante, e vice-versa.

O PowerPoint usa comportamento semelhante para objetos de texto:

Controlar a Aparência da Tinta Durante Exportação e Renderização
O Aspose.Slides fornece a classe InkOptions para controlar como os objetos de tinta aparecem na saída exportada ou renderizada. Você pode usar suas propriedades para ocultar completamente a tinta ou alterar como as operações de máscara de pincel de tinta são interpretadas.
As opções de tinta estão disponíveis através das opções de exportação ou renderização para vários tipos de saída:
| Saída | Propriedade de opções de tinta |
|---|---|
PdfOptions.getInkOptions |
|
| HTML | HtmlOptions.getInkOptions |
| SVG | SVGOptions.getInkOptions |
| TIFF | TiffOptions.getInkOptions |
| Imagem do slide | RenderingOptions.getInkOptions |
Os seguintes métodos de InkOptions expõem as mesmas duas configurações:
- InkOptions.getHideInk determina se os objetos de tinta são incluídos na saída. Seu valor padrão é
false. - InkOptions.getInterpretMaskOpAsOpacity determina se uma operação de máscara é interpretada como opacidade ao renderizar um pincel de tinta. Seu valor padrão é
true; chame InkOptions.setInterpretMaskOpAsOpacity comfalsepara usar a operação ROP em vez disso.
Ocultar Objetos de Tinta na Saída PDF
Por padrão, os objetos de tinta permanecem visíveis durante a exportação. Para criar uma saída limpa sem anotações manuscritas ou outro conteúdo de tinta, chame InkOptions.setHideInk com true.
O exemplo JavaScript a seguir exporta uma apresentação para PDF enquanto oculta todos os objetos de tinta:
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();
}
Ocultar Objetos de Tinta ao Renderizar um Slide como Imagem
Para ocultar objetos de tinta ao renderizar slides como imagens bitmap, configure RenderingOptions.getInkOptions e passe as opções de renderização para Slide.getImage.
O exemplo JavaScript a seguir renderiza o primeiro slide como uma imagem PNG sem objetos de tinta:
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();
}
Controlar Renderização da Máscara de Tinta
A configuração InkOptions.getInterpretMaskOpAsOpacity controla como as operações de máscara são interpretadas ao renderizar pincéis de tinta. O valor padrão é true, que utiliza opacidade. Para usar a operação ROP em vez disso, chame InkOptions.setInterpretMaskOpAsOpacity com false.
O exemplo JavaScript a seguir exporta um slide para SVG e usa renderização baseada em ROP para operações de máscara de tinta:
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();
}
A mesma configuração pode ser aplicada através de TiffOptions.getInkOptions ao exportar uma apresentação ou renderizar um slide para TIFF.
Escolher se Ocultar ou Manter a Tinta
Quando você precisa de uma versão limpa de uma apresentação anotada para distribuição sem marcas de revisão, chame InkOptions.setHideInk com true durante a exportação.
Deixe InkOptions.getHideInk com seu valor padrão false quando as anotações de tinta fizerem parte do conteúdo desejado, como comentários de revisão, notas manuscritas, realces ou desenhos que devem permanecer visíveis no resultado exportado. Isso permite que os aplicativos gerem saídas de revisão e final separadas a partir da mesma apresentação sem modificar os objetos de tinta de origem.
Perguntas Frequentes
Posso alterar a cor ou o tamanho de um traço de tinta existente?
Sim. Obtenha o traço através de Ink.getTraces e então altere seu InkTrace.getBrush. Chame InkBrush.setColor ou InkBrush.setSize para mudar o pincel.
Ocultar a tinta altera a apresentação original?
Não. Chamar InkOptions.setHideInk afeta apenas o resultado renderizado ou exportado; não remove nem modifica os objetos de tinta na apresentação original.
Quais formatos de exportação suportam opções de tinta?
Você pode configurar opções de tinta para PDF, HTML, SVG, TIFF e imagens bitmap de slides através das opções de exportação ou renderização correspondentes mostradas acima.
Leitura adicional
- Para ler sobre formas em geral, veja a seção Formas do PowerPoint.
- Para mais informações sobre valores eficazes, veja Propriedades Eficazes da Forma.
- Para detalhes sobre exportação PDF, veja Converter PPT e PPTX para PDF.
- Para detalhes sobre exportação HTML, veja Converter Apresentações PowerPoint para HTML.
- Para detalhes sobre exportação SVG, veja Renderizar Slides de Apresentação como Imagens SVG.
- Para detalhes sobre exportação TIFF, veja Converter Apresentações PowerPoint para TIFF.
- Para detalhes sobre renderização de slide para imagem, veja Converter Slides de Apresentação em Imagens.