<?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>java pdf shapes on Conholdate Blog</title>
    <link>https://blog-qa.conholdate.com/ru/tag/java-pdf-shapes/</link>
    <description>Recent content in java pdf shapes on Conholdate Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ru</language>
    <lastBuildDate>Fri, 05 Jun 2026 18:38:01 +0000</lastBuildDate><atom:link href="https://blog-qa.conholdate.com/ru/tag/java-pdf-shapes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Добавление фигур в PDF на Java</title>
      <link>https://blog-qa.conholdate.com/ru/total/add-shapes-to-pdf-in-java/</link>
      <pubDate>Fri, 05 Jun 2026 18:38:01 +0000</pubDate>
      
      <guid>https://blog-qa.conholdate.com/ru/total/add-shapes-to-pdf-in-java/</guid>
      <description>Узнайте, как добавить фигуры в PDF на Java с помощью Conholdate.Total for Java. Следуйте этому пошаговому руководству с кодом, настройкой и лучшими практиками для векторной графики.</description>
      <content:encoded><![CDATA[<p>Добавление векторной графики в файлы <a href="https://docs.fileformat.com/pdf">PDF</a> является распространённой задачей при создании отчётов, счетов‑фактур и интерактивных документов. <a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> — мощный SDK, упрощающий работу с PDF на стороне сервера. В этом руководстве вы узнаете, как вставлять прямоугольники, эллипсы и линии в PDF, настраивать их внешний вид и учитывать вопросы производительности, используя понятные примеры кода на Java.</p>
<h2 id="шаги-по-добавлению-фигур-в-pdf-на-java">Шаги по добавлению фигур в PDF на Java</h2>
<ol>
<li><strong>Добавить Maven‑репозиторий и зависимость</strong> — включите Maven‑репозиторий Conholdate и зависимость <code>conholdate-total</code> в ваш <code>pom.xml</code>. Это делает доступными классы SDK, такие как <code>PdfDocument</code> и <code>ShapeFactory</code>.
<!-- 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>Загрузить PDF‑документ</strong> — создайте экземпляр <code>PdfDocument</code> и откройте целевой PDF‑файл. Класс задокументирован в <a href="https://reference.conholdate.com/java/">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>Создание объектов Shape</strong> - Используйте <code>ShapeFactory</code> для создания прямоугольников, эллипсов или линий. Установите позицию, размер и визуальные атрибуты.</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>
<p>// Line
Shape line = ShapeFactory.createLine(100, 300, 500, 300);
line.setStrokeColor(Color.RED);
line.setLineWidth(3);</p>
<ol start="4">
<li>
<p><strong>Добавить фигуры на страницу</strong> - Получите нужную страницу из документа и добавьте каждую фигуру в её графическую коллекцию.</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>Сохранить обновлённый PDF</strong> - После того как все фигуры добавлены, сохраните документ в новый файл.</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="добавление-фигур-в-pdf-на-java--полный-пример-кода">Добавление фигур в PDF на Java — полный пример кода</h2>
<p>В следующем примере все шаги объединены в одну готовую к запуску программу.</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 {
// Инициализировать PDF документ
PdfDocument pdf = new PdfDocument();
pdf.open(&ldquo;input.pdf&rdquo;);</p>
<pre tabindex="0"><code>// Create rectangle
Shape rectangle = ShapeFactory.createRectangle(100, 150, 200, 100);
rectangle.setFillColor(Color.BLUE);
rectangle.setStrokeColor(Color.BLACK);
rectangle.setLineWidth(2);
</code></pre><pre tabindex="0"><code>// Создать эллипс
Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100);
ellipse.setFillColor(Color.GREEN);
ellipse.setStrokeColor(Color.DARK_GRAY);
ellipse.setLineWidth(1.5f);
</code></pre><p>// Создать линию
Shape line = ShapeFactory.createLine(100, 300, 500, 300);
line.setStrokeColor(Color.RED);
line.setLineWidth(3);</p>
<pre tabindex="0"><code>// Добавить фигуры на первую страницу
Page page = pdf.getPages().get_Item(0);
page.getGraphics().addShape(rectangle);
page.getGraphics().addShape(ellipse);
page.getGraphics().addShape(line);
</code></pre><pre tabindex="0"><code>// Save the result
        pdf.save(&#34;output.pdf&#34;);
        pdf.close();
    }
}
</code></pre><!-- raw HTML omitted -->
<blockquote>
<p><strong>Примечание:</strong> Этот пример кода демонстрирует базовую функциональность. Прежде чем использовать его в вашем проекте, убедитесь, что обновили пути к файлам (<code>input.pdf</code>, <code>output.pdf</code>) в соответствии с фактическим расположением ваших файлов, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если возникнут проблемы, обратитесь к <a href="https://docs.conholdate.com/java/">официальной документации</a> или свяжитесь с <a href="https://forum.conholdate.com/c/total/5">командой поддержки</a> для получения помощи.</p>
</blockquote>
<h2 id="installation-and-setup-in-java">Installation and Setup in Java</h2>
<p>Чтобы начать использовать Conholdate.Total for Java, загрузите последнюю версию с официального сайта и добавьте Maven‑зависимость, показанную ранее. SDK работает на любой среде выполнения Java 8+ и не требует дополнительных нативных библиотек.</p>
<ul>
<li><strong>URL загрузки:</strong> <a href="https://releases.conholdate.com/total/java/">Conholdate.Total for Java Release</a></li>
<li><strong>Документация:</strong> Подробные инструкции по использованию доступны в <a href="https://docs.conholdate.com/java/">официальной документации</a>.</li>
<li><strong>Лицензия:</strong> Получите временную лицензию на <a href="https://purchase.conholdate.com/temporary-license/">странице временной лицензии</a> или просмотрите полное ценообразование на <a href="https://purchase.conholdate.com/pricing/total/family/">странице цен</a>.</li>
</ul>
<h2 id="key-features-and-overview">Key Features and Overview</h2>
<h3 id="add-shapes-to-pdf-in-java-with-conholdatetotal">Add Shapes to PDF in Java with Conholdate.Total</h3>
<p>Conholdate.Total for Java предоставляет единый API для создания и редактирования PDF‑контента. Функциональность рисования фигур работает с векторной графикой, обеспечивая чёткость добавленных элементов при любом уровне масштабирования. Вы можете рисовать базовые примитивы (прямоугольник, эллипс, линия), а также сложные контуры.</p>
<h3 id="conholdatetotal-функции-важные-для-этой-задачи">Conholdate.Total функции, важные для этой задачи</h3>
<ul>
<li><strong>Cross‑platform compatibility:</strong> Работает на серверах Windows, Linux и macOS.</li>
<li><strong>High‑performance rendering:</strong> Фигуры рендерятся с использованием того же движка, который генерирует нативный PDF‑контент, избегая растеризации.</li>
<li><strong>Full control over appearance:</strong> Устанавливайте цвета заливки, цвета контура, толщину линий, непрозрачность и режимы <a href="https://docs.fileformat.com/3d/blend/">blend</a>.</li>
<li><strong>Layered graphics:</strong> Добавляйте фигуры в определённые слои или группы для более простого последующего редактирования.</li>
</ul>
<h2 id="настройка-свойств-фигур-для-оптимального-отображения">Настройка свойств фигур для оптимального отображения</h2>
<p>При добавлении фигур учитывайте следующие свойства, чтобы достичь желаемого визуального результата:</p>
<ul>
<li><strong>Позиция и размер:</strong> Используйте абсолютные координаты (в пунктах) или проценты относительно размера страницы.</li>
<li><strong>Цвета:</strong> SDK принимает объекты <code>java.awt.Color</code>. Для прозрачности используйте <code>new Color(r, g, b, alpha)</code>.</li>
<li><strong>Ширина линии:</strong> Измеряется в пунктах; значение <code>1</code> равно 1/72 дюйма.</li>
<li><strong>Непрозрачность и режим наложения:</strong> Регулируются с помощью <code>setOpacity(float)</code> и <code>setBlendMode(BlendMode)</code>.</li>
<li><strong>Вращение и наклон:</strong> Применяйте трансформации через <code>setRotation(double)</code> или <code>setSkew(double, double)</code> для сложных макетов.</li>
</ul>
<p>Пример установки расширенных свойств:</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="соображения-по-производительности-при-добавлении-фигур-в-pdf">Соображения по производительности при добавлении фигур в PDF</h2>
<p>Добавление большого количества векторных объектов может увеличить время обработки и использование памяти. Следуйте этим рекомендациям:</p>
<ul>
<li><strong>Пакетная отрисовка:</strong> Группировать связанные фигуры в один графический контейнер перед добавлением их на страницу.</li>
<li><strong>Повторное использование объектов:</strong> Если вам нужны одинаковые фигуры на нескольких страницах, клонируйте существующую фигуру вместо создания новых экземпляров.</li>
<li><strong>Избегайте пере‑масштабирования:</strong> Определяйте фигуры в окончательном размере отображения, чтобы избежать дорогих растровых преобразований.</li>
<li><strong>Освобождайте ресурсы:</strong> Закрывайте <code>PdfDocument</code> сразу, чтобы освободить нативные ресурсы.</li>
</ul>
<h2 id="заключение">Заключение</h2>
<p><a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> предоставляет Java‑разработчикам простой способ добавлять фигуры в PDF‑документы, позволяя создавать насыщенные интерактивные отчёты и счета‑фактуры. Следуя шагам, советам по конфигурации и рекомендациям по производительности, изложенным в этом руководстве, вы сможете уверенно интегрировать векторную графику в ваш PDF‑рабочий процесс. Не забудьте оформить надлежащую лицензию для использования в продакшн; временная лицензия доступна для оценки, а полная информация о ценах указана на <a href="https://purchase.conholdate.com/pricing/total/family/">странице цен</a>.</p>
<h2 id="часто-задаваемые-вопросы">Часто задаваемые вопросы</h2>
<p><strong>Как добавить пользовательский шрифт к фигурам в PDF?</strong><br>
Вы можете встроить шрифт TrueType, используя <code>pdf.getFonts().addFont(&quot;MyFont.ttf&quot;)</code>, а затем назначить его фигуре с помощью <code>setFont(myFont)</code>. SDK гарантирует, что шрифт будет встроен в окончательный PDF.</p>
<p><strong>Можно ли вставить фигуры в существующий PDF, не теряя существующее содержимое?</strong><br>
Да. Открытие PDF с помощью <code>PdfDocument.open()</code> сохраняет все существующие страницы и объекты. Добавление фигур в коллекцию графики страницы лишь дополняет страницу; оно не перезаписывает существующее содержимое.</p>
<p><strong>Какие форматы файлов я могу экспортировать после добавления фигур?</strong><br>
Conholdate.Total for Java поддерживает сохранение в PDF, PDF/A, PDF/X, а также в графические форматы, такие как <a href="https://docs.fileformat.com/image/png/">PNG</a>, <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a>, и BMP. Используйте <code>pdf.save(&quot;output.pdf&quot;)</code> или <code>pdf.save(&quot;output.png&quot;, ImageSaveOptions.Png)</code> по мере необходимости.</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
