<?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/es/tag/pdf-shape-manipulation/</link>
    <description>Recent content in pdf shape manipulation on Conholdate Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>es</language>
    <lastBuildDate>Fri, 05 Jun 2026 18:38:01 +0000</lastBuildDate><atom:link href="https://blog-qa.conholdate.com/es/tag/pdf-shape-manipulation/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Agregar formas a PDF en Java</title>
      <link>https://blog-qa.conholdate.com/es/total/add-shapes-to-pdf-in-java/</link>
      <pubDate>Fri, 05 Jun 2026 18:38:01 +0000</pubDate>
      
      <guid>https://blog-qa.conholdate.com/es/total/add-shapes-to-pdf-in-java/</guid>
      <description>Aprende cómo agregar formas a PDF en Java usando Conholdate.Total for Java. Sigue esta guía paso a paso con código, configuración y mejores prácticas para gráficos vectoriales.</description>
      <content:encoded><![CDATA[<p>Agregar gráficos vectoriales a los archivos <a href="https://docs.fileformat.com/pdf">PDF</a> es un requisito común para generar informes, facturas y documentos interactivos. <a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> es un SDK potente que simplifica la manipulación de PDF en el lado del servidor. En esta guía aprenderá cómo insertar rectángulos, elipses y líneas en un PDF, configurar su apariencia y manejar consideraciones de rendimiento, todo con claros ejemplos de código Java.</p>
<h2 id="pasos-para-agregar-formas-a-pdf-en-java">Pasos para agregar formas a PDF en Java</h2>
<ol>
<li><strong>Agregar repositorio Maven y dependencia</strong> - Incluya el repositorio Maven de Conholdate y la dependencia <code>conholdate-total</code> en su <code>pom.xml</code>. Esto hace que las clases del SDK como <code>PdfDocument</code> y <code>ShapeFactory</code> estén disponibles.
<!-- 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><strong>Cargar el documento PDF</strong> - Crear una instancia de <code>PdfDocument</code> y abrir el archivo PDF de destino. La clase está documentada en la <a href="https://reference.conholdate.com/java/">referencia de API</a>.</li>
</ol>
<!-- 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><ol start="3">
<li><strong>Crear objetos de forma</strong> - Utilice <code>ShapeFactory</code> para instanciar rectángulos, elipses o líneas. Establezca la posición, el tamaño y los atributos visuales.
<!-- 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>// Elipse
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>Agregar formas a una página</strong> - Recupere la página deseada del documento y agregue cada forma a su colección 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>Guardar el PDF actualizado</strong> - Después de que se añadan todas las formas, guarde el documento en un nuevo archivo.</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="añadiendo-formas-a-pdf-en-java---ejemplo-de-código-completo">Añadiendo formas a PDF en Java - Ejemplo de código completo</h2>
<p>El siguiente ejemplo reúne todos los pasos en un único programa listo‑para‑ejecutar.</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>// Crear rectángulo
Shape rectangle = ShapeFactory.createRectangle(100, 150, 200, 100);
rectangle.setFillColor(Color.BLUE);
rectangle.setStrokeColor(Color.BLACK);
rectangle.setLineWidth(2);</p>
<pre tabindex="0"><code>// Crear elipse
Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100);
ellipse.setFillColor(Color.GREEN);
ellipse.setStrokeColor(Color.DARK_GRAY);
ellipse.setLineWidth(1.5f);
</code></pre><p>// Crear línea
Shape line = ShapeFactory.createLine(100, 300, 500, 300);
line.setStrokeColor(Color.RED);
line.setLineWidth(3);</p>
<p>// Añadir formas a la primera 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>// Guardar el resultado
pdf.save(&#34;output.pdf&#34;);
pdf.close();
}
}
</code></pre><!-- raw HTML omitted -->
<blockquote>
<p><strong>Nota:</strong> Este ejemplo de código muestra la funcionalidad principal. Antes de usarlo en su proyecto, asegúrese de actualizar las rutas de los archivos (<code>input.pdf</code>, <code>output.pdf</code>) para que coincidan con sus ubicaciones reales, verifique que todas las dependencias requeridas estén correctamente instaladas y pruebe exhaustivamente en su entorno de desarrollo. Si encuentra algún problema, consulte la <a href="https://docs.conholdate.com/java/">documentación oficial</a> o póngase en contacto con el <a href="https://forum.conholdate.com/c/total/5">equipo de soporte</a> para obtener ayuda.</p>
</blockquote>
<h2 id="instalación-y-configuración-en-java">Instalación y configuración en Java</h2>
<p>Para comenzar a usar Conholdate.Total for Java, descargue la última versión del sitio oficial y agregue la dependencia de Maven mostrada anteriormente. El SDK funciona en cualquier tiempo de ejecución Java 8+ y no requiere bibliotecas nativas adicionales.</p>
<ul>
<li><strong>URL de descarga:</strong> <a href="https://releases.conholdate.com/total/java/">Conholdate.Total for Java Release</a></li>
<li><strong>Documentación:</strong> Las instrucciones detalladas de uso están disponibles en la <a href="https://docs.conholdate.com/java/">documentación oficial</a>.</li>
<li><strong>Licencia:</strong> Obtenga una licencia temporal en la <a href="https://purchase.conholdate.com/temporary-license/">página de licencia temporal</a> o consulte los precios completos en la <a href="https://purchase.conholdate.com/pricing/total/family/">página de precios</a>.</li>
</ul>
<h2 id="características-clave-y-descripción-general">Características clave y descripción general</h2>
<h3 id="añadir-formas-a-pdf-en-java-con-conholdatetotal">Añadir formas a PDF en Java con Conholdate.Total</h3>
<p>Conholdate.Total for Java ofrece una API unificada para crear y editar contenido PDF. La funcionalidad de dibujo de formas trabaja con gráficos vectoriales, garantizando que los elementos añadidos se mantengan nítidos a cualquier nivel de zoom. Puedes dibujar primitivas básicas (rectángulo, elipse, línea) así como rutas complejas.</p>
<h3 id="características-de-conholdatetotal-que-importan-para-esta-tarea">Características de Conholdate.Total que importan para esta tarea</h3>
<ul>
<li><strong>Compatibilidad multiplataforma:</strong> Funciona en servidores Windows, Linux y macOS.</li>
<li><strong>Renderizado de alto rendimiento:</strong> Las formas se renderizan usando el mismo motor que genera contenido PDF nativo, evitando la rasterización.</li>
<li><strong>Control total sobre la apariencia:</strong> Establezca colores de relleno, colores de trazo, anchuras de línea, opacidad y modos de <a href="https://docs.fileformat.com/3d/blend/">mezcla</a>.</li>
<li><strong>Gráficos en capas:</strong> Añada formas a capas o grupos específicos para una manipulación posterior más sencilla.</li>
</ul>
<h2 id="configuración-de-propiedades-de-forma-para-una-renderización-óptima">Configuración de propiedades de forma para una renderización óptima</h2>
<p>Al agregar formas, considere las siguientes propiedades para lograr el resultado visual deseado:</p>
<ul>
<li><strong>Posición y Tamaño:</strong> Use coordenadas absolutas (puntos) o porcentajes relativos al tamaño de la página.</li>
<li><strong>Colores:</strong> El SDK acepta objetos <code>java.awt.Color</code>. Para transparencia, use <code>new Color(r, g, b, alpha)</code>.</li>
<li><strong>Ancho de Línea:</strong> Medido en puntos; un valor de <code>1</code> equivale a 1/72 de pulgada.</li>
<li><strong>Opacidad y Modo de Fusión:</strong> Ajuste con <code>setOpacity(float)</code> y <code>setBlendMode(BlendMode)</code>.</li>
<li><strong>Rotación y Sesgo:</strong> Aplique transformaciones mediante <code>setRotation(double)</code> o <code>setSkew(double, double)</code> para diseños avanzados.</li>
</ul>
<p>Ejemplo de configuración de propiedades avanzadas:</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="consideraciones-de-rendimiento-al-agregar-formas-a-pdfs">Consideraciones de rendimiento al agregar formas a PDFs</h2>
<p>Agregar muchos objetos vectoriales puede aumentar el tiempo de procesamiento y el uso de memoria. Siga estas directrices:</p>
<ul>
<li><strong>Batch Drawing:</strong> Agrupe formas relacionadas en un único contenedor gráfico antes de añadirlas a la página.</li>
<li><strong>Reuse Objects:</strong> Si necesita formas idénticas en varias páginas, clone una forma existente en lugar de crear nuevas instancias.</li>
<li><strong>Avoid Over‑Scaling:</strong> Defina las formas con el tamaño final de visualización para evitar costosas conversiones a raster.</li>
<li><strong>Dispose Resources:</strong> Cierre el <code>PdfDocument</code> rápidamente para liberar los recursos nativos.</li>
</ul>
<h2 id="conclusión">Conclusión</h2>
<p><a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> ofrece a los desarrolladores Java una forma sencilla de agregar formas a documentos PDF, lo que permite crear informes y facturas ricos e interactivos. Al seguir los pasos, consejos de configuración y pautas de rendimiento en esta guía, puedes integrar gráficos vectoriales en tu flujo de trabajo PDF con confianza. Recuerda obtener una licencia adecuada para uso en producción; una licencia temporal está disponible para evaluación, y los detalles completos de precios se enumeran en la <a href="https://purchase.conholdate.com/pricing/total/family/">página de precios</a>.</p>
<h2 id="preguntas-frecuentes">Preguntas frecuentes</h2>
<p><strong>¿Cómo puedo agregar una fuente personalizada a las formas en un PDF?</strong><br>
Puede incrustar una fuente TrueType usando <code>pdf.getFonts().addFont(&quot;MyFont.ttf&quot;)</code> y luego asignarla a una forma mediante <code>setFont(myFont)</code>. El SDK garantiza que la fuente se incruste en el PDF final.</p>
<p><strong>¿Es posible insertar formas en un PDF existente sin perder el contenido existente?</strong><br>
Sí. Abrir el PDF con <code>PdfDocument.open()</code> conserva todas las páginas y objetos existentes. Añadir formas a la colección de gráficos de una página solo amplía la página; no sobrescribe el contenido existente.</p>
<p><strong>¿A qué formatos de archivo puedo exportar después de agregar formas?</strong><br>
Conholdate.Total for Java admite guardar en PDF, PDF/A, PDF/X y también en formatos de imagen como <a href="https://docs.fileformat.com/image/png/">PNG</a>, <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a> y BMP. Use <code>pdf.save(&quot;output.pdf&quot;)</code> o <code>pdf.save(&quot;output.png&quot;, ImageSaveOptions.Png)</code> según sea necesario.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
