<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>pdf shape manipulation on Conholdate Blog</title>
    <link>https://blog-qa.conholdate.com/pt/tag/pdf-shape-manipulation/</link>
    <description>Recent content in pdf shape manipulation on Conholdate Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>pt</language>
    <lastBuildDate>Fri, 05 Jun 2026 18:38:01 +0000</lastBuildDate><atom:link href="https://blog-qa.conholdate.com/pt/tag/pdf-shape-manipulation/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Adicionar formas ao PDF em Java</title>
      <link>https://blog-qa.conholdate.com/pt/total/add-shapes-to-pdf-in-java/</link>
      <pubDate>Fri, 05 Jun 2026 18:38:01 +0000</pubDate>
      
      <guid>https://blog-qa.conholdate.com/pt/total/add-shapes-to-pdf-in-java/</guid>
      <description>Aprenda como adicionar formas a PDFs em Java usando Conholdate.Total for Java. Siga este guia passo a passo com código, configuração e boas práticas para gráficos vetoriais.</description>
      <content:encoded><![CDATA[<p>Adicionar gráficos vetoriais a arquivos <a href="https://docs.fileformat.com/pdf">PDF</a> é uma necessidade comum para gerar relatórios, faturas e documentos interativos. <a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> é um SDK poderoso que simplifica a manipulação de PDF no lado do servidor. Neste guia, você aprenderá como inserir retângulos, elipses e linhas em um PDF, configurar sua aparência e lidar com considerações de desempenho, tudo com exemplos claros de código Java.</p>
<h2 id="etapas-para-adicionar-formas-ao-pdf-em-java">Etapas para Adicionar Formas ao PDF em Java</h2>
<ol>
<li><strong>Adicionar Repositório Maven e Dependência</strong> - Inclua o repositório Maven da Conholdate e a dependência <code>conholdate-total</code> no seu <code>pom.xml</code>. Isso torna as classes do SDK, como <code>PdfDocument</code> e <code>ShapeFactory</code>, disponíveis.
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;repositories&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;repository&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;id&gt;</span>conholdate-repo<span style="color:#f92672">&lt;/id&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;name&gt;</span>Conholdate Maven Repository<span style="color:#f92672">&lt;/name&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;url&gt;</span>https://repository.conholdate.com/repo/<span style="color:#f92672">&lt;/url&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/repository&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/repositories&gt;</span>
</span></span></code></pre></div></li>
</ol>
<!-- raw HTML omitted -->
<ol start="2">
<li>
<p><strong>Carregar o Documento PDF</strong> - Crie uma instância de <code>PdfDocument</code> e abra o arquivo PDF de destino. A classe está documentada na <a href="https://reference.conholdate.com/java/">referência da API</a>.</p>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>PdfDocument pdf <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> PdfDocument<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>pdf<span style="color:#f92672">.</span><span style="color:#a6e22e">open</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;input.pdf&#34;</span><span style="color:#f92672">);</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Criar Objetos de Forma</strong> - Use <code>ShapeFactory</code> para instanciar retângulos, elipses ou linhas. Defina a posição, o tamanho e os atributos visuais.</p>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#75715e">// Rectangle
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>Shape rect <span style="color:#f92672">=</span> ShapeFactory<span style="color:#f92672">.</span><span style="color:#a6e22e">createRectangle</span><span style="color:#f92672">(</span>100<span style="color:#f92672">,</span> 150<span style="color:#f92672">,</span> 200<span style="color:#f92672">,</span> 100<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>rect<span style="color:#f92672">.</span><span style="color:#a6e22e">setFillColor</span><span style="color:#f92672">(</span>Color<span style="color:#f92672">.</span><span style="color:#a6e22e">BLUE</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>rect<span style="color:#f92672">.</span><span style="color:#a6e22e">setStrokeColor</span><span style="color:#f92672">(</span>Color<span style="color:#f92672">.</span><span style="color:#a6e22e">BLACK</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>rect<span style="color:#f92672">.</span><span style="color:#a6e22e">setLineWidth</span><span style="color:#f92672">(</span>2<span style="color:#f92672">);</span>
</span></span></code></pre></div></li>
</ol>
<p>// Ellipse
Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100);
ellipse.setFillColor(Color.GREEN);
ellipse.setStrokeColor(Color.DARK_GRAY);
ellipse.setLineWidth(1.5f);</p>
<pre tabindex="0"><code>// Line
   Shape line = ShapeFactory.createLine(100, 300, 500, 300);
   line.setStrokeColor(Color.RED);
   line.setLineWidth(3);
</code></pre><ol start="4">
<li>
<p><strong>Adicionar Formas a uma Página</strong> - Recupere a página desejada do documento e adicione cada forma à sua coleção de gráficos.</p>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>Page page <span style="color:#f92672">=</span> pdf<span style="color:#f92672">.</span><span style="color:#a6e22e">getPages</span><span style="color:#f92672">().</span><span style="color:#a6e22e">get_Item</span><span style="color:#f92672">(</span>0<span style="color:#f92672">);</span> <span style="color:#75715e">// first page
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>page<span style="color:#f92672">.</span><span style="color:#a6e22e">getGraphics</span><span style="color:#f92672">().</span><span style="color:#a6e22e">addShape</span><span style="color:#f92672">(</span>rect<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>page<span style="color:#f92672">.</span><span style="color:#a6e22e">getGraphics</span><span style="color:#f92672">().</span><span style="color:#a6e22e">addShape</span><span style="color:#f92672">(</span>ellipse<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>page<span style="color:#f92672">.</span><span style="color:#a6e22e">getGraphics</span><span style="color:#f92672">().</span><span style="color:#a6e22e">addShape</span><span style="color:#f92672">(</span>line<span style="color:#f92672">);</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Salvar o PDF Atualizado</strong> - Depois que todas as formas forem adicionadas, salve o documento em um novo arquivo.</p>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>pdf<span style="color:#f92672">.</span><span style="color:#a6e22e">save</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;output.pdf&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>pdf<span style="color:#f92672">.</span><span style="color:#a6e22e">close</span><span style="color:#f92672">();</span>
</span></span></code></pre></div></li>
</ol>
<h2 id="adicionando-formas-ao-pdf-em-java---exemplo-de-código-completo">Adicionando Formas ao PDF em Java - Exemplo de Código Completo</h2>
<p>O exemplo a seguir reúne todas as etapas em um único programa pronto‑para‑executar.</p>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#f92672">import</span> com.conholdate.total.pdf.*<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.conholdate.total.pdf.shapes.*<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.awt.Color<span style="color:#f92672">;</span>
</span></span></code></pre></div><p>public class AddShapesDemo {
public static void main(String[] args) throws Exception {
// Initialize PDF document
PdfDocument pdf = new PdfDocument();
pdf.open(&ldquo;input.pdf&rdquo;);</p>
<p>// Create rectangle
Shape rectangle = ShapeFactory.createRectangle(100, 150, 200, 100);
rectangle.setFillColor(Color.BLUE);
rectangle.setStrokeColor(Color.BLACK);
rectangle.setLineWidth(2);</p>
<p>// Criar elipse
Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100);
ellipse.setFillColor(Color.GREEN);
ellipse.setStrokeColor(Color.DARK_GRAY);
ellipse.setLineWidth(1.5f);</p>
<p>// Create line
Shape line = ShapeFactory.createLine(100, 300, 500, 300);
line.setStrokeColor(Color.RED);
line.setLineWidth(3);</p>
<p>// Adicionar formas à primeira página
Page page = pdf.getPages().get_Item(0);
page.getGraphics().addShape(rectangle);
page.getGraphics().addShape(ellipse);
page.getGraphics().addShape(line);</p>
<pre tabindex="0"><code>// Salvar o resultado
pdf.save(&#34;output.pdf&#34;);
pdf.close();
}
}
</code></pre><!-- raw HTML omitted -->
<blockquote>
<p><strong>Nota:</strong> Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar os caminhos dos arquivos (<code>input.pdf</code>, <code>output.pdf</code>) para corresponderem às suas localizações reais, verifique se todas as dependências necessárias estão corretamente instaladas e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a <a href="https://docs.conholdate.com/java/">documentação oficial</a> ou entre em contato com a <a href="https://forum.conholdate.com/c/total/5">equipe de suporte</a> para obter assistência.</p>
</blockquote>
<h2 id="instalação-e-configuração-em-java">Instalação e Configuração em Java</h2>
<p>Para começar a usar Conholdate.Total for Java, baixe a versão mais recente no site oficial e adicione a dependência Maven mostrada anteriormente. O SDK funciona em qualquer runtime Java 8+ e não requer bibliotecas nativas adicionais.</p>
<ul>
<li><strong>URL de Download:</strong> <a href="https://releases.conholdate.com/total/java/">Conholdate.Total for Java Release</a></li>
<li><strong>Documentação:</strong> Instruções detalhadas de uso estão disponíveis na <a href="https://docs.conholdate.com/java/">documentação oficial</a>.</li>
<li><strong>Licença:</strong> Obtenha uma licença temporária na <a href="https://purchase.conholdate.com/temporary-license/">página de licença temporária</a> ou veja a precificação completa na <a href="https://purchase.conholdate.com/pricing/total/family/">página de preços</a>.</li>
</ul>
<h2 id="principais-recursos-e-visão-geral">Principais Recursos e Visão Geral</h2>
<h3 id="adicionar-formas-a-pdf-em-java-com-conholdatetotal">Adicionar Formas a PDF em Java com Conholdate.Total</h3>
<p>Conholdate.Total for Java fornece uma API unificada para criar e editar conteúdo PDF. A funcionalidade de desenho de formas trabalha com gráficos vetoriais, garantindo que os elementos adicionados permaneçam nítidos em qualquer nível de zoom. Você pode desenhar primitivas básicas (retângulo, elipse, linha) bem como caminhos complexos.</p>
<h3 id="recursos-do-conholdatetotal-que-importam-para-esta-tarefa">Recursos do Conholdate.Total que Importam para Esta Tarefa</h3>
<ul>
<li><strong>Compatibilidade multiplataforma:</strong> Funciona em servidores Windows, Linux e macOS.</li>
<li><strong>Renderização de alto desempenho:</strong> As formas são renderizadas usando o mesmo mecanismo que gera conteúdo PDF nativo, evitando a rasterização.</li>
<li><strong>Controle total sobre a aparência:</strong> Defina cores de preenchimento, cores de contorno, larguras de linha, opacidade e modos de <a href="https://docs.fileformat.com/3d/blend/">blend</a>.</li>
<li><strong>Gráficos em camadas:</strong> Adicione formas a camadas ou grupos específicos para facilitar a manipulação posterior.</li>
</ul>
<h2 id="configurando-propriedades-de-forma-para-renderização-ótima">Configurando Propriedades de Forma para Renderização Ótima</h2>
<p>Ao adicionar formas, considere as seguintes propriedades para alcançar o resultado visual desejado:</p>
<ul>
<li><strong>Posição e Tamanho:</strong> Use coordenadas absolutas (pontos) ou porcentagens relativas ao tamanho da página.</li>
<li><strong>Cores:</strong> O SDK aceita objetos <code>java.awt.Color</code>. Para transparência, use <code>new Color(r, g, b, alpha)</code>.</li>
<li><strong>Largura da Linha:</strong> Medida em pontos; um valor de <code>1</code> equivale a 1/72 polegada.</li>
<li><strong>Opacidade e Modo de Mesclagem:</strong> Ajuste com <code>setOpacity(float)</code> e <code>setBlendMode(BlendMode)</code>.</li>
<li><strong>Rotação e Inclinação:</strong> Aplique transformações via <code>setRotation(double)</code> ou <code>setSkew(double, double)</code> para layouts avançados.</li>
</ul>
<p>Exemplo de definição de propriedades avançadas:</p>
<!-- raw HTML omitted -->
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>ellipse<span style="color:#f92672">.</span><span style="color:#a6e22e">setOpacity</span><span style="color:#f92672">(</span>0<span style="color:#f92672">.</span><span style="color:#a6e22e">7f</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>ellipse<span style="color:#f92672">.</span><span style="color:#a6e22e">setBlendMode</span><span style="color:#f92672">(</span>BlendMode<span style="color:#f92672">.</span><span style="color:#a6e22e">MULTIPLY</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>ellipse<span style="color:#f92672">.</span><span style="color:#a6e22e">setRotation</span><span style="color:#f92672">(</span>45<span style="color:#f92672">);</span>
</span></span></code></pre></div><!-- raw HTML omitted -->
<h2 id="considerações-de-desempenho-ao-adicionar-formas-a-pdfs">Considerações de desempenho ao adicionar formas a PDFs</h2>
<p>Adicionar muitos objetos vetoriais pode aumentar o tempo de processamento e o uso de memória. Siga estas diretrizes:</p>
<ul>
<li><strong>Batch Drawing:</strong> Agrupe formas relacionadas em um único contêiner gráfico antes de adicioná‑las à página.</li>
<li><strong>Reuse Objects:</strong> Se precisar de formas idênticas em várias páginas, clone uma forma existente em vez de criar novas instâncias.</li>
<li><strong>Avoid Over‑Scaling:</strong> Defina as formas no tamanho final de exibição para evitar conversões raster caras.</li>
<li><strong>Dispose Resources:</strong> Feche o <code>PdfDocument</code> rapidamente para liberar recursos nativos.</li>
</ul>
<h2 id="conclusão">Conclusão</h2>
<p><a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> oferece aos desenvolvedores Java uma maneira simples de adicionar formas a documentos PDF, permitindo a criação de relatórios e faturas ricos e interativos. Ao seguir as etapas, dicas de configuração e diretrizes de desempenho deste guia, você pode integrar gráficos vetoriais ao seu fluxo de trabalho PDF com confiança. Lembre‑se de adquirir uma licença adequada para uso em produção; uma licença temporária está disponível para avaliação, e os detalhes completos de preços estão listados na <a href="https://purchase.conholdate.com/pricing/total/family/">página de preços</a>.</p>
<h2 id="perguntas-frequentes">Perguntas Frequentes</h2>
<p><strong>Como posso adicionar uma fonte personalizada a formas em um PDF?</strong><br>
Você pode incorporar uma fonte TrueType usando <code>pdf.getFonts().addFont(&quot;MyFont.ttf&quot;)</code> e então atribuí‑la a uma forma via <code>setFont(myFont)</code>. O SDK garante que a fonte seja incorporada no PDF final.</p>
<p><strong>É possível inserir formas em um PDF existente sem perder o conteúdo existente?</strong><br>
Sim. Abrir o PDF com <code>PdfDocument.open()</code> preserva todas as páginas e objetos existentes. Adicionar formas à coleção de gráficos de uma página apenas aumenta a página; não sobrescreve o conteúdo existente.</p>
<p><strong>Em quais formatos de arquivo posso exportar após adicionar formas?</strong><br>
Conholdate.Total for Java oferece suporte à gravação em PDF, PDF/A, PDF/X e também em formatos de imagem como <a href="https://docs.fileformat.com/image/png/">PNG</a>, <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a> e BMP. Use <code>pdf.save(&quot;output.pdf&quot;)</code> ou <code>pdf.save(&quot;output.png&quot;, ImageSaveOptions.Png)</code> conforme necessário.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
