<?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 rest api on Document Processing REST APIs | GroupDocs Cloud</title>
    <link>https://blog-qa.groupdocs.cloud/it/tag/java-rest-api/</link>
    <description>Recent content in java rest api on Document Processing REST APIs | GroupDocs Cloud</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>it</language>
    <lastBuildDate>Wed, 23 Sep 2026 13:04:19 +0000</lastBuildDate><atom:link href="https://blog-qa.groupdocs.cloud/it/tag/java-rest-api/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Aggiungi sovrapposizione di testo a GIF usando REST in Java</title>
      <link>https://blog-qa.groupdocs.cloud/it/watermark/add-text-overlay-to-gif-using-rest-in-java/</link>
      <pubDate>Wed, 23 Sep 2026 13:04:19 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/it/watermark/add-text-overlay-to-gif-using-rest-in-java/</guid>
      <description>Scopri come aggiungere una sovrapposizione di testo ai GIF utilizzando GroupDocs.Watermark Cloud SDK for Java via REST API. Include codice, cURL e passaggi di configurazione ora. Inizia rapidamente.</description>
      <content:encoded><![CDATA[<p>Aggiungere didascalie dinamiche, sottotitoli o messaggi promozionali a GIF animate è una necessità comune per le moderne applicazioni web e mobile. <a href="https://products.groupdocs.cloud/watermark/java/">GroupDocs.Watermark Cloud SDK for Java</a> offre una potente libreria basata su REST che rende questo compito semplice. In questa guida imparerai come <strong>aggiungere una sovrapposizione di testo a <a href="https://docs.fileformat.com/image/gif/">GIF</a> usando REST in Java</strong>, vedere un&rsquo;implementazione Java completa, esplorare i comandi cURL equivalenti e comprendere i passaggi di configurazione richiesti.</p>
<h2 id="aggiungi-sovrapposizione-di-testo-a-gif-usando-rest-in-java---codice-di-esempio">Aggiungi sovrapposizione di testo a GIF usando REST in Java - Codice di esempio</h2>
<p>Questo esempio dimostra come configurare una filigrana di testo e applicarla a ogni fotogramma di un file GIF.</p>
<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.groupdocs.watermark.cloud.api.WatermarkApi<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.client.ApiException<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.client.Configuration<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.model.AddWatermarkRequest<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.model.AddWatermarkResponse<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.model.FileInfo<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.model.OutputFileInfo<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.model.TextWatermarkOptions<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.model.HorizontalAlignment<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.watermark.cloud.model.VerticalAlignment<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">AddTextOverlayToGif</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span><span style="color:#f92672">(</span>String<span style="color:#f92672">[]</span> args<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// Initialize API configuration (replace with your actual clientId and clientSecret)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        Configuration config <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Configuration<span style="color:#f92672">(</span><span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span><span style="color:#f92672">,</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        WatermarkApi watermarkApi <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> WatermarkApi<span style="color:#f92672">(</span>config<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Prepare input file information
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        FileInfo inputFile <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInfo<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        inputFile<span style="color:#f92672">.</span><span style="color:#a6e22e">setFilePath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;input.gif&#34;</span><span style="color:#f92672">);</span>          <span style="color:#75715e">// Path to the source GIF in the storage
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        inputFile<span style="color:#f92672">.</span><span style="color:#a6e22e">setStorageName</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;MyStorage&#34;</span><span style="color:#f92672">);</span>       <span style="color:#75715e">// Optional: name of the storage
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Prepare output file information
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        OutputFileInfo outputFile <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> OutputFileInfo<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        outputFile<span style="color:#f92672">.</span><span style="color:#a6e22e">setFilePath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;output.gif&#34;</span><span style="color:#f92672">);</span>        <span style="color:#75715e">// Desired path for the watermarked GIF
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        outputFile<span style="color:#f92672">.</span><span style="color:#a6e22e">setStorageName</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;MyStorage&#34;</span><span style="color:#f92672">);</span>      <span style="color:#75715e">// Optional: name of the storage
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Configure text watermark options
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        TextWatermarkOptions textOptions <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> TextWatermarkOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setText</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Sample Watermark&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setFontFamily</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Arial&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setFontSize</span><span style="color:#f92672">(</span>24<span style="color:#f92672">.</span><span style="color:#a6e22e">0</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setColor</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;#FF0000&#34;</span><span style="color:#f92672">);</span>             <span style="color:#75715e">// Red color in HEX
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        textOptions<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">5</span><span style="color:#f92672">);</span>                 <span style="color:#75715e">// 50% opacity
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setRotationAngle</span><span style="color:#f92672">(</span>0<span style="color:#f92672">.</span><span style="color:#a6e22e">0</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setHorizontalAlignment</span><span style="color:#f92672">(</span>HorizontalAlignment<span style="color:#f92672">.</span><span style="color:#a6e22e">CENTER</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setVerticalAlignment</span><span style="color:#f92672">(</span>VerticalAlignment<span style="color:#f92672">.</span><span style="color:#a6e22e">MIDDLE</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setPageRange</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;1-&#34;</span><span style="color:#f92672">);</span>               <span style="color:#75715e">// Apply to all frames/pages
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Build the request
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        AddWatermarkRequest request <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> AddWatermarkRequest<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        request<span style="color:#f92672">.</span><span style="color:#a6e22e">setFileInfo</span><span style="color:#f92672">(</span>inputFile<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        request<span style="color:#f92672">.</span><span style="color:#a6e22e">setOutputFileInfo</span><span style="color:#f92672">(</span>outputFile<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        request<span style="color:#f92672">.</span><span style="color:#a6e22e">setOptions</span><span style="color:#f92672">(</span>textOptions<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">try</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Execute the request
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>            AddWatermarkResponse response <span style="color:#f92672">=</span> watermarkApi<span style="color:#f92672">.</span><span style="color:#a6e22e">addWatermark</span><span style="color:#f92672">(</span>request<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Watermark added successfully. Output file: &#34;</span> <span style="color:#f92672">+</span> response<span style="color:#f92672">.</span><span style="color:#a6e22e">getPath</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span> <span style="color:#66d9ef">catch</span> <span style="color:#f92672">(</span>ApiException e<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">err</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Error while adding watermark: &#34;</span> <span style="color:#f92672">+</span> e<span style="color:#f92672">.</span><span style="color:#a6e22e">getMessage</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span>            e<span style="color:#f92672">.</span><span style="color:#a6e22e">printStackTrace</span><span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div><blockquote>
<p><strong>Nota:</strong> Questo esempio di codice dimostra la funzionalità principale. Prima di usarlo nel tuo progetto, assicurati di aggiornare tutti i percorsi dei file e i valori di configurazione per corrispondere al tuo ambiente reale, verifica che tutte le dipendenze richieste siano correttamente installate e testa accuratamente nel tuo ambiente di sviluppo. Se incontri problemi, consulta la <a href="https://docs.groupdocs.cloud/watermark/">documentazione ufficiale</a> o contatta il <a href="https://forum.groupdocs.cloud/c/watermark/29">team di supporto</a> per assistenza.</p>
</blockquote>
<h2 id="sovrapporre-testo-su-gif-con-rest-api-usando-curl">Sovrapporre testo su GIF con REST API usando cURL</h2>
<p>Di seguito sono riportati i comandi cURL che eseguono la stessa operazione da un terminale. Illustrano l’intero flusso di lavoro REST: autenticazione, caricamento, aggiunta di filigrana e download.</p>
<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-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># 1. Obtain an access token</span>
</span></span><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/auth/token&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{&#34;client_id&#34;:&#34;YOUR_CLIENT_ID&#34;,&#34;client_secret&#34;:&#34;YOUR_CLIENT_SECRET&#34;}&#39;</span>
</span></span></code></pre></div><p>Sostituisci <code>YOUR_ACCESS_TOKEN</code> nelle chiamate seguenti con il token restituito sopra.</p>
<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-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># 2. Upload the source GIF to storage</span>
</span></span><span style="display:flex;"><span>curl -X PUT <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/input.gif&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/octet-stream&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     --data-binary @path/to/local/input.gif
</span></span></code></pre></div><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-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># 3. Add text overlay to the GIF</span>
</span></span><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/watermark/add&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;fileInfo&#34;: { &#34;filePath&#34;: &#34;input.gif&#34;, &#34;storageName&#34;: &#34;MyStorage&#34; },
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;outputFileInfo&#34;: { &#34;filePath&#34;: &#34;output.gif&#34;, &#34;storageName&#34;: &#34;MyStorage&#34; },
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;options&#34;: {
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;text&#34;: &#34;Sample Watermark&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;fontFamily&#34;: &#34;Arial&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;fontSize&#34;: 24,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;color&#34;: &#34;#FF0000&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;opacity&#34;: 0.5,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;horizontalAlignment&#34;: &#34;Center&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;verticalAlignment&#34;: &#34;Middle&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;pageRange&#34;: &#34;1-&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           }
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div><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-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># 4. Download the watermarked GIF</span>
</span></span><span style="display:flex;"><span>curl -X GET <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/output.gif&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -o path/to/local/output.gif
</span></span></code></pre></div><p>Per ulteriori dettagli su corpi della richiesta e formati di risposta, consulta la <a href="https://docs.groupdocs.cloud/watermark/">documentazione ufficiale dell&rsquo;API</a>.</p>
<h2 id="analisi-dellaggiunta-di-testo-sovrapposto-a-gif-usando-rest-in-java---come-funziona">Analisi dell&rsquo;aggiunta di testo sovrapposto a GIF usando REST in Java - Come funziona</h2>
<ol>
<li><strong>Inizializza il client API</strong> - <code>new Configuration(&quot;YOUR_CLIENT_ID&quot;, &quot;YOUR_CLIENT_SECRET&quot;)</code> crea un oggetto di configurazione che contiene le tue credenziali. L&rsquo;istanza <code>WatermarkApi</code> utilizza questa configurazione per firmare ogni richiesta.</li>
</ol>
<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>Configuration config <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Configuration<span style="color:#f92672">(</span><span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span><span style="color:#f92672">,</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>WatermarkApi watermarkApi <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> WatermarkApi<span style="color:#f92672">(</span>config<span style="color:#f92672">);</span>
</span></span></code></pre></div><ol start="2">
<li>
<p><strong>Specifica i file di origine e destinazione</strong> - <code>FileInfo</code> e <code>OutputFileInfo</code> indicano al servizio dove leggere il GIF originale e dove scrivere il risultato. Entrambi possono fare riferimento a un nome di storage personalizzato.</p>
<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>FileInfo inputFile <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInfo<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>inputFile<span style="color:#f92672">.</span><span style="color:#a6e22e">setFilePath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;input.gif&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>inputFile<span style="color:#f92672">.</span><span style="color:#a6e22e">setStorageName</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;MyStorage&#34;</span><span style="color:#f92672">);</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Configura il watermark di testo</strong> - <code>TextWatermarkOptions</code> contiene tutte le proprietà visive: testo, carattere, dimensione, colore, opacità, rotazione e allineamento. Impostare <code>pageRange</code> su <code>&quot;1-&quot;</code> garantisce che ogni fotogramma della GIF animata riceva la sovrapposizione.</p>
</li>
</ol>
<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>TextWatermarkOptions textOptions <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> TextWatermarkOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setText</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Sample Watermark&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setFontFamily</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Arial&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setFontSize</span><span style="color:#f92672">(</span>24<span style="color:#f92672">.</span><span style="color:#a6e22e">0</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setColor</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;#FF0000&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>textOptions<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">5</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setHorizontalAlignment</span><span style="color:#f92672">(</span>HorizontalAlignment<span style="color:#f92672">.</span><span style="color:#a6e22e">CENTER</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setVerticalAlignment</span><span style="color:#f92672">(</span>VerticalAlignment<span style="color:#f92672">.</span><span style="color:#a6e22e">MIDDLE</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>textOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setPageRange</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;1-&#34;</span><span style="color:#f92672">);</span>
</span></span></code></pre></div><ol start="4">
<li>
<p><strong>Costruisci e invia la richiesta</strong> - <code>AddWatermarkRequest</code> raggruppa le informazioni del file e le opzioni. Chiamando <code>watermarkApi.addWatermark(request)</code> esegue l&rsquo;operazione sul server e restituisce il percorso del file elaborato.</p>
<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>AddWatermarkRequest request <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> AddWatermarkRequest<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>request<span style="color:#f92672">.</span><span style="color:#a6e22e">setFileInfo</span><span style="color:#f92672">(</span>inputFile<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>request<span style="color:#f92672">.</span><span style="color:#a6e22e">setOutputFileInfo</span><span style="color:#f92672">(</span>outputFile<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>request<span style="color:#f92672">.</span><span style="color:#a6e22e">setOptions</span><span style="color:#f92672">(</span>textOptions<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>AddWatermarkResponse response <span style="color:#f92672">=</span> watermarkApi<span style="color:#f92672">.</span><span style="color:#a6e22e">addWatermark</span><span style="color:#f92672">(</span>request<span style="color:#f92672">);</span>
</span></span></code></pre></div></li>
<li>
<p><strong>Gestire la risposta</strong> - La risposta contiene il percorso del file di output. In un&rsquo;applicazione reale, di solito si scarica il file o si passa il percorso a un altro servizio.</p>
</li>
</ol>
<p>Per un elenco completo di classi e proprietà, fare riferimento al <a href="https://reference.groupdocs.cloud/watermark/">riferimento API</a>.</p>
<h2 id="installazione-e-configurazione-groupdocswatermark-cloud-sdk-per-java">Installazione e configurazione GroupDocs.Watermark Cloud SDK per Java</h2>
<p>Aggiungi la dipendenza Maven al tuo <code>pom.xml</code> (o l&rsquo;equivalente voce Gradle). Questo include la versione 23.8 dell&rsquo;SDK.</p>
<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;dependency&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;groupId&gt;</span>com.groupdocs<span style="color:#f92672">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;artifactId&gt;</span>groupdocs-watermark-cloud<span style="color:#f92672">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;version&gt;</span>23.8<span style="color:#f92672">&lt;/version&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/dependency&gt;</span>
</span></span></code></pre></div><p><strong>Prerequisiti</strong></p>
<ul>
<li>Java 8 o versioni successive</li>
<li>Un account attivo di GroupDocs Cloud</li>
<li>Client ID e Client Secret (disponibili nella dashboard di GroupDocs Cloud)</li>
</ul>
<p><strong>Esempio di configurazione</strong></p>
<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>Configuration config <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Configuration<span style="color:#f92672">(</span><span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span><span style="color:#f92672">,</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span><span style="color:#f92672">);</span>
</span></span></code></pre></div><p>Scarica gli ultimi JAR dalla <a href="https://releases.groupdocs.cloud/watermark/java/">pagina di download</a>. Per l&rsquo;uso in produzione, applica una licenza valida ottenuta dalla <a href="https://purchase.groupdocs.cloud/temporary-license/">pagina di licenza temporanea</a>.</p>
<h2 id="conclusione">Conclusione</h2>
<p>Aggiungere una sovrapposizione di testo a una GIF usando REST in Java diventa un&rsquo;operazione ripetibile, lato server, grazie al <a href="https://products.groupdocs.cloud/watermark/java/">GroupDocs.Watermark Cloud SDK for Java</a>. L&rsquo;SDK astrae le complessità della gestione dei fotogrammi animati, permettendoti di concentrarti sul contenuto dei tuoi sottotitoli o messaggi promozionali. Dopo aver integrato il codice di esempio o il flusso di lavoro cURL, puoi perfezionare stili di carattere, colori e opacità per adattarli al tuo brand. Ricorda di ottenere una licenza di produzione; i dettagli dei prezzi sono disponibili nella pagina del prodotto, e una licenza temporanea può essere ottenuta per i test tramite la <a href="https://purchase.groupdocs.cloud/temporary-license/">temporary license page</a>. Buona programmazione!</p>
<h2 id="domande-frequenti">Domande frequenti</h2>
<ul>
<li>
<p><strong>Come aggiungere una sovrapposizione di testo a un GIF usando REST in Java quando il testo cambia per utente?</strong><br>
Crea l&rsquo;oggetto <code>TextWatermarkOptions</code> a runtime con la stringa specifica per l&rsquo;utente, quindi invoca la stessa chiamata <code>addWatermark</code>. L&rsquo;API elabora ogni richiesta in modo indipendente, quindi il contenuto dinamico è completamente supportato.</p>
</li>
<li>
<p><strong>Posso aggiungere sottotitoli a una GIF animata senza influire sulla velocità di animazione?</strong><br>
Sì. Il watermark viene applicato a ogni fotogramma preservando il ritardo originale del fotogramma. Basta impostare <code>pageRange</code> su <code>&quot;1-&quot;</code> in modo che ogni fotogramma riceva la stessa sovrapposizione.</p>
</li>
<li>
<p><strong>Quali formati sono supportati per il colore del testo di sovrapposizione?</strong><br>
L&rsquo;SDK accetta codici colore HEX (ad esempio <code>#FF0000</code>) e i nomi colore standard <a href="https://docs.fileformat.com/web/html/">HTML</a>. Vedi il <a href="https://reference.groupdocs.cloud/watermark/">riferimento API</a> per l&rsquo;elenco completo.</p>
</li>
<li>
<p><strong>Ho bisogno di una licenza per sviluppo e test?</strong><br>
Una licenza temporanea è sufficiente per la valutazione e i test. Per le distribuzioni in produzione, acquista una licenza completa dalla pagina del prodotto e applicala utilizzando l&rsquo;API di licenza dell&rsquo;SDK.</p>
</li>
</ul>
<h2 id="leggi-di-più">Leggi di più</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/it/watermark/add-overlay-text-on-a-gif-using-rest-api-in-csharp/">Aggiungi testo sovrapposto a una GIF usando l&rsquo;API REST in C#</a></li>
<li><a href="https://blog.groupdocs.cloud/it/watermark/add-watermark-to-images-using-java/">Aggiungi filigrana alle immagini usando Java</a></li>
<li><a href="https://blog.groupdocs.cloud/it/watermark/add-watermark-to-word-in-java-watermark-creator/">Aggiungi filigrana a Word in Java - Watermark Creator</a></li>
</ul>
]]></content:encoded>
    </item>
    
    <item>
      <title>Proteggi Excel con password tramite REST in Java</title>
      <link>https://blog-qa.groupdocs.cloud/it/merger/password-protect-excel-via-rest-in-java/</link>
      <pubDate>Fri, 04 Sep 2026 12:18:34 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/it/merger/password-protect-excel-via-rest-in-java/</guid>
      <description>Scopri come proteggere con password una cartella di lavoro Excel tramite REST in Java utilizzando GroupDocs.Merger Cloud SDK. Guida passo passo, esempio di codice e comandi cURL inclusi.</description>
      <content:encoded><![CDATA[<p>Nascondere dati sensibili nei cartelle di lavoro Excel è una necessità comune per le aziende che condividono report internamente o con partner. <a href="https://products.groupdocs.cloud/merger/java/">GroupDocs.Merger Cloud SDK for Java</a> consente agli sviluppatori di aggiungere la protezione con password ai file <a href="https://docs.fileformat.com/spreadsheet/xlsx/">XLSX</a> tramite una semplice API REST. In questa guida imparerai come implementare <strong>Proteggi Excel con password via REST in Java</strong>, vedere un esempio Java completo e eseguire comandi cURL equivalenti per l&rsquo;integrazione cloud.</p>
<h2 id="prerequisiti-e-configurazione">Prerequisiti e Configurazione</h2>
<p>Prima di iniziare, assicurati di avere quanto segue:</p>
<ul>
<li>Java 8 o versioni successive installato.</li>
<li>Maven o Gradle per la gestione delle dipendenze.</li>
<li>Un account GroupDocs Cloud con <strong>client ID</strong> e <strong>client secret</strong>.</li>
<li>Accesso allo storage cloud dove risiederanno i file Excel.</li>
</ul>
<p>Aggiungi la dipendenza Maven al tuo <code>pom.xml</code> (o lo snippet Gradle equivalente):</p>
<!--[CODE_SNIPPET_START]-->
<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;dependency&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;groupId&gt;</span>com.groupdocs<span style="color:#f92672">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;artifactId&gt;</span>groupdocs-merger-cloud<span style="color:#f92672">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;version&gt;</span>25.11<span style="color:#f92672">&lt;/version&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/dependency&gt;</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<p>Puoi scaricare gli ultimi JAR dalla <a href="https://releases.groupdocs.cloud/merger/java/">pagina di download</a>. Dopo aver aggiunto la dipendenza, crea un oggetto di configurazione con le tue credenziali:</p>
<!--[CODE_SNIPPET_START]-->
<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>String clientId <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>String clientSecret <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Configuration config <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Configuration<span style="color:#f92672">(</span>clientId<span style="color:#f92672">,</span> clientSecret<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>MergerApi mergerApi <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> MergerApi<span style="color:#f92672">(</span>config<span style="color:#f92672">);</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<p>Con il client pronto, puoi passare al flusso di lavoro di protezione con password.</p>
<h2 id="proteggi-con-password-excel-tramite-rest-in-java-guida-passo-passo">Proteggi con password Excel tramite REST in Java: Guida passo passo</h2>
<h3 id="passo-1-carica-il-documento-di-origine">Passo 1: Carica il documento di origine</h3>
<p>Definisci la posizione del file XLSX di origine nel tuo storage cloud.</p>
<!--[CODE_SNIPPET_START]-->
<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>FileInfo inputFile <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInfo<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>inputFile<span style="color:#f92672">.</span><span style="color:#a6e22e">setFilePath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;input.xlsx&#34;</span><span style="color:#f92672">);</span>   <span style="color:#75715e">// source Excel file
</span></span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<h3 id="passo-2-imposta-il-percorso-di-destinazione">Passo 2: Imposta il percorso di destinazione</h3>
<p>Specifica dove verrà salvato il workbook protetto.</p>
<!--[CODE_SNIPPET_START]-->
<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>String outputPath <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;output_protected.xlsx&#34;</span><span style="color:#f92672">;</span> <span style="color:#75715e">// destination file
</span></span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<h3 id="passo-3-configura-le-opzioni-di-protezione-con-password">Passo 3: Configura le opzioni di protezione con password</h3>
<p>Crea un oggetto <code>ProtectOptions</code>, allega le informazioni del file, il percorso di output e la password desiderata.</p>
<!--[CODE_SNIPPET_START]-->
<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>ProtectOptions protectOptions <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ProtectOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>protectOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setFileInfo</span><span style="color:#f92672">(</span>inputFile<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>protectOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setOutputPath</span><span style="color:#f92672">(</span>outputPath<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>protectOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setPassword</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;MySecretPassword&#34;</span><span style="color:#f92672">);</span> <span style="color:#75715e">// desired password
</span></span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<h3 id="passo-4-crea-la-richiesta-di-protezione-del-documento">Passo 4: Crea la richiesta di protezione del documento</h3>
<p>Avvolgi le opzioni in un <code>ProtectDocumentRequest</code>.</p>
<!--[CODE_SNIPPET_START]-->
<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>ProtectDocumentRequest request <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ProtectDocumentRequest<span style="color:#f92672">(</span>protectOptions<span style="color:#f92672">);</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<h3 id="passo-5-esegui-la-richiesta-e-gestisci-la-risposta">Passo 5: Esegui la richiesta e gestisci la risposta</h3>
<p>Chiama il metodo API e gestisci eventuali errori.</p>
<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:#66d9ef">try</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    mergerApi<span style="color:#f92672">.</span><span style="color:#a6e22e">protectDocument</span><span style="color:#f92672">(</span>request<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>    System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Excel file has been password protected successfully.&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>    System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Protected file stored at: &#34;</span> <span style="color:#f92672">+</span> outputPath<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span> <span style="color:#66d9ef">catch</span> <span style="color:#f92672">(</span>ApiException e<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    System<span style="color:#f92672">.</span><span style="color:#a6e22e">err</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Error while protecting the Excel file:&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>    System<span style="color:#f92672">.</span><span style="color:#a6e22e">err</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Status Code: &#34;</span> <span style="color:#f92672">+</span> e<span style="color:#f92672">.</span><span style="color:#a6e22e">getCode</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span>    System<span style="color:#f92672">.</span><span style="color:#a6e22e">err</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Message: &#34;</span> <span style="color:#f92672">+</span> e<span style="color:#f92672">.</span><span style="color:#a6e22e">getMessage</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div><p>Per ulteriori dettagli su ogni classe, fare riferimento al <a href="https://reference.groupdocs.cloud/merger/">Riferimento API</a>.</p>
<h2 id="esempio-completo-funzionante-per-proteggere-excel-con-password-tramite-rest-in-java">Esempio completo funzionante per proteggere Excel con password tramite REST in Java</h2>
<p>Il codice seguente dimostra il processo completo dall&rsquo;inizio alla fine.</p>
<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.groupdocs.merger.cloud.ApiException<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.merger.cloud.Configuration<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.merger.cloud.api.MergerApi<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.merger.cloud.model.FileInfo<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.merger.cloud.model.ProtectOptions<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.merger.cloud.model.requests.ProtectDocumentRequest<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">ProtectExcelExample</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span><span style="color:#f92672">(</span>String<span style="color:#f92672">[]</span> args<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// Replace with your actual client credentials
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        String clientId <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        String clientSecret <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span><span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Initialize the API configuration
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        Configuration config <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Configuration<span style="color:#f92672">(</span>clientId<span style="color:#f92672">,</span> clientSecret<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        MergerApi mergerApi <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> MergerApi<span style="color:#f92672">(</span>config<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Define input and output file locations (relative to the storage root)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        FileInfo inputFile <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInfo<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        inputFile<span style="color:#f92672">.</span><span style="color:#a6e22e">setFilePath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;input.xlsx&#34;</span><span style="color:#f92672">);</span>          <span style="color:#75715e">// source Excel file
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        String outputPath <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;output_protected.xlsx&#34;</span><span style="color:#f92672">;</span>  <span style="color:#75715e">// destination file
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Set password protection options
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        ProtectOptions protectOptions <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ProtectOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        protectOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setFileInfo</span><span style="color:#f92672">(</span>inputFile<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        protectOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setOutputPath</span><span style="color:#f92672">(</span>outputPath<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        protectOptions<span style="color:#f92672">.</span><span style="color:#a6e22e">setPassword</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;MySecretPassword&#34;</span><span style="color:#f92672">);</span> <span style="color:#75715e">// desired password
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Build the request
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        ProtectDocumentRequest request <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ProtectDocumentRequest<span style="color:#f92672">(</span>protectOptions<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">try</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">// Execute the password protection operation
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>            mergerApi<span style="color:#f92672">.</span><span style="color:#a6e22e">protectDocument</span><span style="color:#f92672">(</span>request<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Excel file has been password protected successfully.&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Protected file stored at: &#34;</span> <span style="color:#f92672">+</span> outputPath<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span> <span style="color:#66d9ef">catch</span> <span style="color:#f92672">(</span>ApiException e<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">err</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Error while protecting the Excel file:&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">err</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Status Code: &#34;</span> <span style="color:#f92672">+</span> e<span style="color:#f92672">.</span><span style="color:#a6e22e">getCode</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span>            System<span style="color:#f92672">.</span><span style="color:#a6e22e">err</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Message: &#34;</span> <span style="color:#f92672">+</span> e<span style="color:#f92672">.</span><span style="color:#a6e22e">getMessage</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div><blockquote>
<p><strong>Nota:</strong> Questo esempio di codice dimostra la funzionalità principale. Prima di usarlo nel tuo progetto, assicurati di aggiornare i percorsi dei file (<code>input.xlsx</code>, <code>output_protected.xlsx</code>) per corrispondere alle tue effettive posizioni dei file, verifica che tutte le dipendenze richieste siano correttamente installate e testa accuratamente nel tuo ambiente di sviluppo. Se incontri problemi, consulta la <a href="https://docs.groupdocs.cloud/merger/">documentazione ufficiale</a> o contatta il <a href="https://forum.groupdocs.cloud/c/merger/18">team di supporto</a> per assistenza.</p>
</blockquote>
<h2 id="proteggi-la-cartella-di-lavoro-excel-tramite-rest-api-usando-curl">Proteggi la cartella di lavoro Excel tramite REST API usando cURL</h2>
<p>Di seguito è un insieme di comandi cURL che eseguono la stessa operazione di protezione con password direttamente contro gli endpoint REST.</p>
<p><strong>1. Autenticare e ottenere un token di accesso</strong></p>
<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-bash" data-lang="bash"><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/auth/token&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;client_id&#34;: &#34;YOUR_CLIENT_ID&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;client_secret&#34;: &#34;YOUR_CLIENT_SECRET&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div><p>La risposta contiene un <code>access_token</code> che utilizzerai nelle chiamate successive.</p>
<p><strong>2. Carica il file XLSX di origine</strong></p>
<!--[CODE_SNIPPET_START]-->
<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-bash" data-lang="bash"><span style="display:flex;"><span>curl -X PUT <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/input.xlsx&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/octet-stream&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     --data-binary @input.xlsx
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<p><strong>3. Richiedi la protezione con password</strong></p>
<!--[CODE_SNIPPET_START]-->
<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-bash" data-lang="bash"><span style="display:flex;"><span>curl -X POST <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/merger/protect&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Content-Type: application/json&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -d <span style="color:#e6db74">&#39;{
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;fileInfo&#34;: { &#34;filePath&#34;: &#34;input.xlsx&#34; },
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;outputPath&#34;: &#34;output_protected.xlsx&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;password&#34;: &#34;MySecretPassword&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<p><strong>4. Scarica la cartella di lavoro protetta</strong></p>
<!--[CODE_SNIPPET_START]-->
<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-bash" data-lang="bash"><span style="display:flex;"><span>curl -X GET <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/output_protected.xlsx&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -H <span style="color:#e6db74">&#34;Authorization: Bearer YOUR_ACCESS_TOKEN&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     -o output_protected.xlsx
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<p>Questi comandi ti consentono di integrare il flusso di lavoro di protezione negli script o nelle pipeline CI. Per ulteriori dettagli, consulta la <a href="https://docs.groupdocs.cloud/merger/">documentazione ufficiale dell&rsquo;API</a>.</p>
<h2 id="conclusione">Conclusione</h2>
<p>Implementare <strong>Protezione con password di Excel via REST in Java</strong> è semplice con il GroupDocs.Merger Cloud SDK for Java. Seguendo i passaggi sopra puoi proteggere i workbook di Excel, automatizzare il processo nelle applicazioni lato server e mantenere i dati sensibili al sicuro. Ricorda di acquisire una licenza adeguata per l&rsquo;uso in produzione; le informazioni sui prezzi sono disponibili nella pagina del prodotto e puoi iniziare con una <a href="https://purchase.groupdocs.cloud/temporary-license/">licenza temporanea</a> per valutare la libreria. Buona programmazione!</p>
<h2 id="domande-frequenti">Domande frequenti</h2>
<ul>
<li>
<p><strong>Come differisce la protezione con password di Excel tramite REST in Java dalla crittografia locale?</strong><br>
L&rsquo;API cloud esegue la crittografia sul server, quindi non è necessario gestire le librerie crittografiche localmente. L&rsquo;SDK gestisce la costruzione della richiesta e l&rsquo;analisi della risposta, semplificando l&rsquo;integrazione.</p>
</li>
<li>
<p><strong>È possibile impostare opzioni di protezione aggiuntive, come la modalità di sola lettura?</strong><br>
La classe <code>ProtectOptions</code> attuale si concentra sulla protezione con password. Per funzionalità di sicurezza più avanzate, consultare il <a href="https://reference.groupdocs.cloud/merger/">riferimento API</a> per eventuali nuovi parametri.</p>
</li>
<li>
<p><strong>Quali formati di file sono supportati per la protezione con password?</strong><br>
L&rsquo;API Merger attualmente supporta XLSX, <a href="https://docs.fileformat.com/word-processing/docx/">DOCX</a>, <a href="https://docs.fileformat.com/presentation/pptx/">PPTX</a>, e <a href="https://docs.fileformat.com/pdf">PDF</a> per la crittografia. Consulta la <a href="https://docs.groupdocs.cloud/merger/">documentazione ufficiale</a> per l&rsquo;elenco completo.</p>
</li>
<li>
<p><strong>Ho bisogno di una licenza per eseguire l&rsquo;esempio in un ambiente di sviluppo?</strong><br>
Lo sviluppo e i test possono essere eseguiti con una licenza temporanea. Le distribuzioni in produzione richiedono una licenza a pagamento, che è possibile acquistare tramite la pagina del prodotto.</p>
</li>
</ul>
<h2 id="read-more">Read More</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/it/merger/password-protect-powerpoint-files-in-nodejs/">Proteggi con password i file PowerPoint in Node.js</a></li>
<li><a href="https://blog.groupdocs.cloud/it/merger/password-protect-excel-files-using-rest-api-in-python/">Proteggi con password i file Excel usando l&rsquo;API REST in Python</a></li>
<li><a href="https://blog.groupdocs.cloud/it/merger/combine-excel-sheets-in-java-excel-files-merger/">Unisci fogli Excel in Java - Unione di file Excel</a></li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
