<?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 manipulation on Document Processing REST APIs | GroupDocs Cloud</title>
    <link>https://blog-qa.groupdocs.cloud/th/tag/pdf-manipulation/</link>
    <description>Recent content in pdf manipulation on Document Processing REST APIs | GroupDocs Cloud</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>th</language>
    <lastBuildDate>Wed, 21 Oct 2026 13:18:44 +0000</lastBuildDate><atom:link href="https://blog-qa.groupdocs.cloud/th/tag/pdf-manipulation/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ลบวัตถุ Annotation จาก PDF ด้วย REST ใน Node.JS</title>
      <link>https://blog-qa.groupdocs.cloud/th/annotation/remove-annotation-objects-from-pdf-with-rest-in-nodejs/</link>
      <pubDate>Wed, 21 Oct 2026 13:18:44 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/th/annotation/remove-annotation-objects-from-pdf-with-rest-in-nodejs/</guid>
      <description>เรียนรู้วิธีลบวัตถุ Annotation จาก PDF ด้วย REST ใน Node.JS โดยใช้ GroupDocs.Annotation Cloud SDK. คู่มือขั้นตอนโดยละเอียดพร้อมโค้ด, cURL และแนวปฏิบัติ.</description>
      <content:encoded><![CDATA[<p>การลบโน้ต, ไฮไลท์ หรือรอยหมึกที่ไม่ต้องการจาก PDF เป็นความต้องการที่พบบ่อยเมื่อเตรียมเอกสารที่สะอาดสำหรับการแจกจ่าย. <a href="https://products.groupdocs.cloud/annotation/nodejs/">GroupDocs.Annotation Cloud SDK for Node.js</a> ให้ไลบรารีที่ขับเคลื่อนด้วย REST ที่มีประสิทธิภาพซึ่งช่วยให้คุณจัดการการทำหมายเหตุใน <a href="https://docs.fileformat.com/pdf">PDF</a> อย่างโปรแกรมเมติก. คู่มือนี้จะแสดงวิธีการลบวัตถุ Annotation จาก PDF ด้วย REST ใน Node.JS อย่างเป็นขั้นตอน. คุณจะได้เห็นตัวอย่างโค้ดเต็มรูปแบบ, คำสั่ง cURL ที่เทียบเท่า, เคล็ดลับการกำหนดค่า, และคำแนะนำแนวปฏิบัติที่ดีที่สุดเพื่อผสานการลบหมายเหตุเข้ากับบริการของคุณ.</p>
<h2 id="ตวอยางการทำงานเตมรปแบบสำหรบการลบวตถ-annotation-จาก-pdf-ดวย-rest-ใน-nodejs">ตัวอย่างการทำงานเต็มรูปแบบสำหรับการลบวัตถุ Annotation จาก PDF ด้วย REST ใน Node.JS</h2>
<p>ตัวอย่างนี้แสดงวิธีอัปโหลดไฟล์ PDF, ลบคำอธิบายทั้งหมด, และดาวน์โหลดไฟล์ที่ทำความสะอาดแล้วโดยใช้ GroupDocs.Annotation 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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">fs</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">require</span>(<span style="color:#e6db74">&#39;fs&#39;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">path</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">require</span>(<span style="color:#e6db74">&#39;path&#39;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">require</span>(<span style="color:#e6db74">&#34;@groupdocs/annotation-cloud&#34;</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// ==== Authentication =========================================================
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">clientId</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">clientSecret</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">config</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">Configuration</span>(<span style="color:#a6e22e">clientId</span>, <span style="color:#a6e22e">clientSecret</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">annotationsApi</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">AnnotationsApi</span>(<span style="color:#a6e22e">config</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">storageApi</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">StorageApi</span>(<span style="color:#a6e22e">config</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// ==== Local &amp; Remote file definitions =======================================
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">localInputPath</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">path</span>.<span style="color:#a6e22e">resolve</span>(<span style="color:#a6e22e">__dirname</span>, <span style="color:#e6db74">&#34;input.pdf&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">localOutputPath</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">path</span>.<span style="color:#a6e22e">resolve</span>(<span style="color:#a6e22e">__dirname</span>, <span style="color:#e6db74">&#34;output.pdf&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">remoteFilePath</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;input.pdf&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// ==== Main workflow ==========================================================
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>(<span style="color:#66d9ef">async</span> () =&gt; {
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">// 1. Upload PDF to GroupDocs Cloud storage
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">fileBytes</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">fs</span>.<span style="color:#a6e22e">readFileSync</span>(<span style="color:#a6e22e">localInputPath</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">uploadRequest</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">UploadFileRequest</span>({
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">path</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">remoteFilePath</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">file</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">fileBytes</span>
</span></span><span style="display:flex;"><span>    });
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">storageApi</span>.<span style="color:#a6e22e">uploadFile</span>(<span style="color:#a6e22e">uploadRequest</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// 2. Build FileInfo object for the uploaded PDF
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">fileInfo</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">FileInfo</span>({
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">filePath</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">remoteFilePath</span>
</span></span><span style="display:flex;"><span>    });
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// 3. Retrieve all existing annotations
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">getAnnotationsRequest</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">GetAnnotationsRequest</span>({
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">fileInfo</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">fileInfo</span>
</span></span><span style="display:flex;"><span>    });
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">annotationsResult</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">annotationsApi</span>.<span style="color:#a6e22e">getAnnotations</span>(<span style="color:#a6e22e">getAnnotationsRequest</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">annotationIds</span> <span style="color:#f92672">=</span> (<span style="color:#a6e22e">annotationsResult</span>.<span style="color:#a6e22e">annotations</span> <span style="color:#f92672">||</span> []).<span style="color:#a6e22e">map</span>(<span style="color:#a6e22e">a</span> =&gt; <span style="color:#a6e22e">a</span>.<span style="color:#a6e22e">id</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// 4. Delete all annotations (if any)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">if</span> (<span style="color:#a6e22e">annotationIds</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">deleteRequest</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">DeleteAnnotationsRequest</span>({
</span></span><span style="display:flex;"><span>            <span style="color:#a6e22e">fileInfo</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">fileInfo</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#a6e22e">annotationIds</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">annotationIds</span>
</span></span><span style="display:flex;"><span>        });
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">annotationsApi</span>.<span style="color:#a6e22e">deleteAnnotations</span>(<span style="color:#a6e22e">deleteRequest</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// 5. Download the cleaned PDF back to local storage
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">downloadRequest</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">DownloadFileRequest</span>({
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">path</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">remoteFilePath</span>
</span></span><span style="display:flex;"><span>    });
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">fileStream</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">storageApi</span>.<span style="color:#a6e22e">downloadFile</span>(<span style="color:#a6e22e">downloadRequest</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">fs</span>.<span style="color:#a6e22e">writeFileSync</span>(<span style="color:#a6e22e">localOutputPath</span>, <span style="color:#a6e22e">fileStream</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#e6db74">`All annotations removed. Clean file saved to </span><span style="color:#e6db74">${</span><span style="color:#a6e22e">localOutputPath</span><span style="color:#e6db74">}</span><span style="color:#e6db74">`</span>);
</span></span><span style="display:flex;"><span>})();
</span></span></code></pre></div><blockquote>
<p><strong>หมายเหตุ:</strong> ตัวอย่างโค้ดนี้แสดงการทำงานหลัก ก่อนนำไปใช้ในโครงการของคุณ ให้ตรวจสอบและอัปเดตเส้นทางไฟล์และค่าการกำหนดค่าต่าง ๆ ให้ตรงกับสภาพแวดล้อมจริงของคุณ ตรวจสอบว่าขึ้นตอนที่จำเป็นทั้งหมดได้ถูกติดตั้งอย่างถูกต้อง และทดสอบอย่างละเอียดในสภาพแวดล้อมการพัฒนา หากคุณพบปัญหาใด ๆ โปรดดูที่ <a href="https://docs.groupdocs.cloud/annotation/">เอกสารอย่างเป็นทางการ</a> หรือ ติดต่อทีมสนับสนุนที่ <a href="https://forum.groupdocs.cloud/c/annotation/10">ทีมสนับสนุน</a> เพื่อขอความช่วยเหลือ.</p>
</blockquote>
<h2 id="ลบคำอธบาย-pdf-ผาน-rest-api-ดวย-curl">ลบคำอธิบาย PDF ผ่าน REST API ด้วย cURL</h2>
<p>ด้านล่างเป็นคำสั่ง cURL ที่ทำงานกระบวนการลบ annotation เดียวกันผ่าน REST endpoint ของ GroupDocs.Annotation Cloud.</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">&#34;{\&#34;client_id\&#34;:\&#34;YOUR_CLIENT_ID\&#34;,\&#34;client_secret\&#34;:\&#34;YOUR_CLIENT_SECRET\&#34;}&#34;</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"># 2. Upload the source PDF</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.pdf&#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/pdf&#34;</span> <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>     --data-binary <span style="color:#e6db74">&#34;@input.pdf&#34;</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"># 3. ดึง annotation IDs</span>
</span></span><span style="display:flex;"><span>curl -X GET <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/annotation/annotations?filePath=input.pdf&#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></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. Delete all retrieved annotations</span>
</span></span><span style="display:flex;"><span>curl -X DELETE <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/annotation/annotations?filePath=input.pdf&#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">&#34;{\&#34;annotationIds\&#34;:[\&#34;id1\&#34;,\&#34;id2\&#34;]}&#34;</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"># 5. Download the cleaned PDF</span>
</span></span><span style="display:flex;"><span>curl -X GET <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/input.pdf&#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.pdf
</span></span></code></pre></div><p>สำหรับรายการเต็มของ endpoint และพารามิเตอร์, โปรดดูที่ <a href="https://reference.groupdocs.cloud/annotation/">เอกสาร API อย่างเป็นทางการ</a></p>
<h2 id="วธลบวตถ-annotation-จาก-pdf-ดวย-rest-ใน-nodejs-ทำงาน">วิธีลบวัตถุ Annotation จาก PDF ด้วย REST ใน Node.JS ทำงาน</h2>
<ol>
<li>
<p><strong>การตั้งค่าการรับรอง</strong> - คลาส <code>Configuration</code> ถูกสร้างขึ้นด้วย <code>clientId</code> และ <code>clientSecret</code> ของคุณ เพื่อสร้างบริบทที่ผ่านการรับรองสำหรับการเรียก API ทั้งหมดต่อไป</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">config</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">Configuration</span>(<span style="color:#a6e22e">clientId</span>, <span style="color:#a6e22e">clientSecret</span>);
</span></span></code></pre></div></li>
<li>
<p><strong>อัปโหลดไฟล์</strong> - <code>UploadFileRequest</code> ส่งไบต์ PDF ที่อยู่ในเครื่องไปยังที่เก็บข้อมูลของ GroupDocs Cloud. วิธีการ <code>storageApi.uploadFile</code> จัดการการถ่ายโอน</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">uploadRequest</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">UploadFileRequest</span>({
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">path</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">remoteFilePath</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">file</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">fileBytes</span>
</span></span><span style="display:flex;"><span>});
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">await</span> <span style="color:#a6e22e">storageApi</span>.<span style="color:#a6e22e">uploadFile</span>(<span style="color:#a6e22e">uploadRequest</span>);
</span></span></code></pre></div></li>
<li>
<p><strong>ดึงข้อมูลคำอธิบาย</strong> - <code>GetAnnotationsRequest</code> สร้างอ็อบเจ็กต์คำขอที่มีการอ้างอิง <code>FileInfo</code>. การเรียก <code>annotationsApi.getAnnotations</code> จะคืนคอลเลกชันของอ็อบเจ็กต์คำอธิบาย, จากนั้นดึง ID</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">getAnnotationsRequest</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">GetAnnotationsRequest</span>({
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">fileInfo</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">fileInfo</span>
</span></span><span style="display:flex;"><span>});
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">annotationsResult</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">annotationsApi</span>.<span style="color:#a6e22e">getAnnotations</span>(<span style="color:#a6e22e">getAnnotationsRequest</span>);
</span></span></code></pre></div></li>
<li>
<p><strong>ลบคำอธิบาย</strong> - หากมี ID ใด ๆ อยู่, <code>DeleteAnnotationsRequest</code> จะถูกเติมข้อมูลและส่งไปยัง <code>annotationsApi.deleteAnnotations</code>, ซึ่งจะลบคำอธิบายออกจาก PDF ที่จัดเก็บอย่างถาวร</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">deleteRequest</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">DeleteAnnotationsRequest</span>({
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">fileInfo</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">fileInfo</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">annotationIds</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">annotationIds</span>
</span></span><span style="display:flex;"><span>});
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">await</span> <span style="color:#a6e22e">annotationsApi</span>.<span style="color:#a6e22e">deleteAnnotations</span>(<span style="color:#a6e22e">deleteRequest</span>);
</span></span></code></pre></div></li>
<li>
<p><strong>ดาวน์โหลด PDF ที่สะอาด</strong> - สุดท้าย, <code>DownloadFileRequest</code> ดึงไฟล์ที่อัปเดต, และ <code>fs.writeFileSync</code> จะเขียนไฟล์นั้นลงในระบบไฟล์ของเครื่อง</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">downloadRequest</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">DownloadFileRequest</span>({
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">path</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">remoteFilePath</span>
</span></span><span style="display:flex;"><span>});
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">fileStream</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">storageApi</span>.<span style="color:#a6e22e">downloadFile</span>(<span style="color:#a6e22e">downloadRequest</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">fs</span>.<span style="color:#a6e22e">writeFileSync</span>(<span style="color:#a6e22e">localOutputPath</span>, <span style="color:#a6e22e">fileStream</span>);
</span></span></code></pre></div></li>
</ol>
<p>สำหรับการกำหนดคลาสและเมธอดโดยละเอียด โปรดดูที่ <a href="https://reference.groupdocs.cloud/annotation/">เอกสารอ้างอิง API</a>.</p>
<h2 id="การตดตงและกำหนดคา-groupdocsannotation-cloud-sdk-for-nodejs">การติดตั้งและกำหนดค่า GroupDocs.Annotation Cloud SDK for Node.js</h2>
<p>SDK ถูกจัดจำหน่ายเป็นแพคเกจ npm. ติดตั้งโดยใช้คำสั่งด้านล่างและจากนั้นเรียกใช้ในโปรเจกต์ของคุณ.</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>npm install groupdocs-annotation-cloud
</span></span></code></pre></div><p>คุณยังสามารถดาวน์โหลดแพคเกจล่าสุดโดยตรงจาก <a href="https://github.com/groupdocs-annotation-cloud/groupdocs-annotation-cloud-node">หน้า releases ของ GitHub</a> หรือจาก <a href="https://releases.groupdocs.cloud/annotation/nodejs/">URL ดาวน์โหลดอย่างเป็นทางการ</a>.</p>
<p>หลังจากการติดตั้ง ให้ทำการนำเข้าไลบรารีและสร้างอ็อบเจกต์การกำหนดค่า ตามที่แสดงในตัวอย่างโค้ด:</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">require</span>(<span style="color:#e6db74">&#34;@groupdocs/annotation-cloud&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">config</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">GroupDocsAnnotationCloud</span>.<span style="color:#a6e22e">Configuration</span>(<span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>, <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span>);
</span></span></code></pre></div><p>ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมการทำงานของคุณตรงตามข้อกำหนดเวอร์ชันของ Node.js และคุณมีบัญชี GroupDocs ที่ถูกต้องเพื่อรับข้อมูลประจำตัวของไคลเอนต์</p>
<h2 id="ตวเลอกและการตงคาการลบคำอธบาย">ตัวเลือกและการตั้งค่าการลบคำอธิบาย</h2>
<p>SDK เปิดเผยพารามิเตอร์หลายตัวที่คุณสามารถปรับแต่งได้:</p>
<ul>
<li><strong>clientId / clientSecret</strong> - ข้อมูลประจำตัวสำหรับการตรวจสอบสิทธิ์ OAuth. ตั้งค่าเหล่านี้ในตัวสร้าง <code>Configuration</code>.</li>
<li><strong>fileInfo.filePath</strong> - เส้นทางของไฟล์ PDF ใน GroupDocs Cloud storage. ปรับค่านี้หากคุณเก็บไฟล์ในโฟลเดอร์อื่น.</li>
<li><strong>annotationIds</strong> - อาร์เรย์ของ ID ที่ได้รับจาก <code>GetAnnotations</code>. การระบุส่วนย่อยจะทำให้สามารถลบได้แบบเลือก.</li>
</ul>
<p>การตั้งค่าเพิ่มเติม เช่น เวลาในการรอการร้องขอและการกำหนดค่าพร็อกซี มีให้ในเอกสาร SDK; ดู <a href="https://docs.groupdocs.cloud/annotation/">เอกสารอย่างเป็นทางการ</a> สำหรับรายการทั้งหมด.</p>
<h2 id="แนวทางปฏบตทดทสดสำหรบการลบคำอธบาย-pdf-ผาน-rest">แนวทางปฏิบัติที่ดีที่สุดสำหรับการลบคำอธิบาย PDF ผ่าน REST</h2>
<ul>
<li><strong>ตรวจสอบ ID ของ Annotation</strong> - ควรตรวจสอบเสมอว่า ID ที่คุณต้องการลบมีอยู่จริง; การพยายามลบ ID ที่ไม่มีอยู่สามารถทำให้เกิดข้อผิดพลาด 404 ได้.</li>
<li><strong>ใช้ HTTPS</strong> - การเรียก API ทั้งหมดต้องทำผ่าน HTTPS เพื่อปกป้องข้อมูลประจำตัวและข้อมูลเอกสารของคุณ.</li>
<li><strong>จัดการไฟล์ขนาดใหญ่ด้วยการอัปโหลดแบบแบ่งส่วน</strong> - สำหรับไฟล์ PDF ที่มีขนาดใหญ่กว่า 100 MB ควรใช้ endpoint การอัปโหลดแบบ multipart เพื่อหลีกเลี่ยงการหมดเวลา.</li>
<li><strong>บันทึกการตอบสนองของ API</strong> - เก็บ ID ของคำขอและการตอบสนองเพื่อใช้เป็นบันทึกตรวจสอบและอำนวยความสะดวกในการแก้ไขปัญหา.</li>
<li><strong>ใช้ Access Token ซ้ำ</strong> - แคชโทเค็น OAuth จนกว่าจะหมดอายุเพื่อ ลดภาระการตรวจสอบสิทธิ์.</li>
</ul>
<h2 id="คำถามทวไป">คำถามทั่วไป</h2>
<ul>
<li>
<p><strong>ฉันจะทำการรับรองความถูกต้องกับ GroupDocs.Annotation Cloud API อย่างไร?</strong><br>
รับ client ID และ secret จากบัญชี GroupDocs ของคุณ, จากนั้นขอ access token ผ่าน OAuth endpoint. ดู <a href="https://docs.groupdocs.cloud/annotation/">เอกสารอย่างเป็นทางการ</a> สำหรับรายละเอียด.</p>
</li>
<li>
<p><strong>ฉันสามารถลบคำอธิบายเฉพาะแทนที่จะลบทั้งหมดได้หรือไม่?</strong><br>
ใช่, ให้ระบุ ID ของคำอธิบายที่คุณต้องการลบใน DeleteAnnotationsRequest. SDK จะคืนรายการของ ID คำอธิบายหลังจากการเรียก GetAnnotations.</p>
</li>
<li>
<p><strong>ฉันจะลบวัตถุ Annotation จาก PDF ด้วย REST ใน Node.JS ได้อย่างไร?</strong><br>
ใช้ GroupDocs.Annotation Cloud SDK for Node.js เพื่อเรียก DeleteAnnotations endpoint หลังจากดึง ID ของ annotation แล้ว กระบวนการทำงานทั้งหมดแสดงในตัวอย่างโค้ดและส่วน cURL ของคู่มือนี้</p>
</li>
<li>
<p><strong>ต้องการใบอนุญาตอะไรสำหรับการใช้งานในสภาพแวดล้อมการผลิต?</strong><br>
จำเป็นต้องมีใบอนุญาตแบบชำระเงินสำหรับการผลิต คุณสามารถรับใบอนุญาตชั่วคราวจาก <a href="https://purchase.groupdocs.cloud/temporary-license/">หน้าใบอนุญาตชั่วคราว</a> ในระหว่างการประเมิน</p>
</li>
</ul>
<h2 id="อานเพมเตม">อ่านเพิ่มเติม</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/th/annotation/extract-or-remove-annotations-from-pdf-using-rest-api-in-node-js/">ดึงหรือเอา Annotation ออกจาก PDF โดยใช้ REST API ใน Node.js</a></li>
<li><a href="https://blog.groupdocs.cloud/th/annotation/strikethrough-text-in-a-pdf-using-nodejs/">ขีดเส้นข้อความใน PDF ด้วย Node.js และ REST API</a></li>
<li><a href="https://blog.groupdocs.cloud/th/annotation/remove-annotations-from-pdf-using-rest-api-in-python/">ลบ Annotation ออกจาก PDF โดยใช้ REST API ใน Python</a></li>
</ul>
]]></content:encoded>
    </item>
    
    <item>
      <title>รวม PDF ใน Node.JS</title>
      <link>https://blog-qa.groupdocs.cloud/th/merger/merge-pdf-in-nodejs/</link>
      <pubDate>Mon, 19 Oct 2026 15:04:19 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/th/merger/merge-pdf-in-nodejs/</guid>
      <description>เรียนรู้วิธีการรวมไฟล์ PDF ใน Node.JS ด้วย GroupDocs.Merger Cloud SDK คู่มือทีละขั้นตอน ตัวอย่างโค้ด คำสั่ง cURL และเคล็ดลับประสิทธิภาพสำหรับนักพัฒนา</description>
      <content:encoded><![CDATA[<p>การรวมเอกสาร <a href="https://docs.fileformat.com/pdf">PDF</a> หลายไฟล์เป็นไฟล์เดียวเป็นความต้องการที่พบบ่อยเมื่อสร้างกระบวนการทำงานของเอกสารหรือสร้างรายงาน. <a href="https://products.groupdocs.cloud/merger/nodejs/">GroupDocs.Merger Cloud SDK for Node.js</a> ทำให้การรวม PDF ใน Node.JS ง่ายขึ้นโดยไม่ต้องจัดการกับโครงสร้าง PDF ระดับต่ำ. คู่มือนี้จะพาคุณผ่านการตั้งค่า, การดำเนินการแบบขั้นตอนต่อขั้นตอน, ตัวอย่างโค้ดเต็ม, คำสั่ง cURL ที่เทียบเท่า, และเคล็ดลับประสิทธิภาพสำหรับ PDF ขนาดใหญ่หรือที่เข้ารหัส.</p>
<h2 id="กอนเรมตน-ขอกำหนดเบองตนและการตดตง">ก่อนเริ่มต้น: ข้อกำหนดเบื้องต้นและการติดตั้ง</h2>
<p>ก่อนที่คุณจะเริ่ม, ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:</p>
<ul>
<li>Node.js 14 หรือใหม่กว่าที่ติดตั้งบนเครื่องพัฒนาของคุณ</li>
<li>บัญชี GroupDocs Cloud ที่ใช้งานอยู่พร้อม client ID และ client secret</li>
<li>การเข้าถึงไฟล์ PDF ที่คุณต้องการรวม ซึ่งจัดเก็บใน storage ของ GroupDocs Cloud</li>
</ul>
<p>ติดตั้ง SDK ผ่าน npm และดาวน์โหลดแพ็กเกจล่าสุด:</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>npm install groupdocs-merger-cloud
</span></span></code></pre></div><p>คุณยังสามารถดึง SDK จากหน้าปล่อยอย่างเป็นทางการได้: <a href="https://releases.groupdocs.cloud/merger/nodejs/">ดาวน์โหลด SDK</a>. หลังจากการติดตั้ง คุณพร้อมที่จะเริ่มเขียนโค้ดแล้ว.</p>
<h2 id="คมอขนตอนการรวม-pdf-ใน-nodejs">คู่มือขั้นตอนการรวม PDF ใน Node.JS</h2>
<h3 id="ขนตอนท-1-ตดตง-sdk-และนำเขาคลาสทจำเปน">ขั้นตอนที่ 1: ติดตั้ง SDK และนำเข้าคลาสที่จำเป็น</h3>
<p>ขั้นแรก ให้นำเข้าคลาสที่คุณจะต้องใช้สำหรับการรวม PDF.</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> { <span style="color:#a6e22e">MergeApi</span>, <span style="color:#a6e22e">MergeOptions</span>, <span style="color:#a6e22e">FileInfo</span>, <span style="color:#a6e22e">Configuration</span> } <span style="color:#f92672">=</span> <span style="color:#a6e22e">require</span>(<span style="color:#e6db74">&#34;@groupdocs/merger-cloud&#34;</span>);
</span></span></code></pre></div><p>การนำเข้านี้ทำให้คุณเข้าถึง API หลัก, วัตถุการกำหนดค่า, และตัวบ่งชี้ไฟล์ได้</p>
<h3 id="ขนตอนท-2-กำหนดคา-credentials-ของ-groupdocs">ขั้นตอนที่ 2: กำหนดค่า Credentials ของ GroupDocs</h3>
<p>สร้างอ็อบเจ็กต์การกำหนดค่าด้วยข้อมูลประจำตัวของไคลเอนต์ของคุณ.</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">config</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">Configuration</span>({
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">clientId</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">clientSecret</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span>
</span></span><span style="display:flex;"><span>});
</span></span></code></pre></div><p>การให้ข้อมูลรับรองที่ถูกต้องทำให้ไลบรารีสามารถตรวจสอบความถูกต้องของคำขอของคุณได้.</p>
<h3 id="ขนตอนท-3-กำหนดไฟล-pdf-ทจะรวม">ขั้นตอนที่ 3: กำหนดไฟล์ PDF ที่จะรวม</h3>
<p>รายการเอกสาร PDF ที่คุณต้องการรวมเข้าด้วยกัน ขั้นตอนนี้เตรียมคุณให้สามารถรวม PDF ใน Node.JS ได้อย่างมีประสิทธิภาพ</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">filesToMerge</span> <span style="color:#f92672">=</span> [
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">FileInfo</span>({ <span style="color:#a6e22e">filePath</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;input1.pdf&#34;</span> }),
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">FileInfo</span>({ <span style="color:#a6e22e">filePath</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;input2.pdf&#34;</span> })
</span></span><span style="display:flex;"><span>];
</span></span></code></pre></div><p>แต่ละ <code>FileInfo</code> ชี้ไปยังไฟล์ที่จัดเก็บในพื้นที่จัดเก็บของ GroupDocs Cloud ของคุณ.</p>
<h3 id="ขนตอนท-4-ตงคาตวเลอกการรวม">ขั้นตอนที่ 4: ตั้งค่าตัวเลือกการรวม</h3>
<p>กำหนดตำแหน่งที่เก็บผลลัพธ์และแนบรายการไฟล์ไปยังคำขอรวม</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">mergeOptions</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">MergeOptions</span>();
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">mergeOptions</span>.<span style="color:#a6e22e">fileInfos</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">filesToMerge</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">mergeOptions</span>.<span style="color:#a6e22e">outputPath</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;merged_output.pdf&#34;</span>;
</span></span></code></pre></div><p>การตั้งค่าเหล่านี้ควบคุมวิธีการรวม PDF ใน Node.JS และตำแหน่งที่ผลลัพธ์จะถูกบันทึก</p>
<h3 id="ขนตอนท-5-ดำเนนการผสาน">ขั้นตอนที่ 5: ดำเนินการผสาน</h3>
<p>สร้างอินสแตนซ์ของ API, เรียกเมธอด merge, และจัดการกับการตอบกลับ.</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">mergeApi</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">MergeApi</span>(<span style="color:#a6e22e">config</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">try</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">result</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">mergeApi</span>.<span style="color:#a6e22e">mergeDocuments</span>(<span style="color:#a6e22e">mergeOptions</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#e6db74">&#34;Merge completed. Output file stored at:&#34;</span>, <span style="color:#a6e22e">result</span>.<span style="color:#a6e22e">path</span>);
</span></span><span style="display:flex;"><span>} <span style="color:#66d9ef">catch</span> (<span style="color:#a6e22e">error</span>) {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">error</span>(<span style="color:#e6db74">&#34;Error during PDF merge:&#34;</span>, <span style="color:#a6e22e">error</span>);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>การเรียกแบบอะซิงโครนัสจะคืนเส้นทางของเอกสารที่รวมกันหากการดำเนินการสำเร็จ</p>
<h2 id="ตวอยางการใชงานเตมรปแบบสำหรบการรวม-pdf-ใน-nodejs">ตัวอย่างการใช้งานเต็มรูปแบบสำหรับการรวม PDF ใน Node.JS</h2>
<p>โค้ดต่อไปนี้แสดงกระบวนการทำงานทั้งหมดตั้งแต่การกำหนดค่าไปจนถึงการจัดการผลลัพธ์.</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-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#66d9ef">const</span> { <span style="color:#a6e22e">MergeApi</span>, <span style="color:#a6e22e">MergeOptions</span>, <span style="color:#a6e22e">FileInfo</span>, <span style="color:#a6e22e">Configuration</span> } <span style="color:#f92672">=</span> <span style="color:#a6e22e">require</span>(<span style="color:#e6db74">&#34;@groupdocs/merger-cloud&#34;</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Configure the SDK (replace with your actual credentials)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">config</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">Configuration</span>({
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">clientId</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_ID&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">clientSecret</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;YOUR_CLIENT_SECRET&#34;</span>
</span></span><span style="display:flex;"><span>});
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">async</span> <span style="color:#66d9ef">function</span> <span style="color:#a6e22e">mergePdfFiles</span>() {
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">// Initialize the Merge API
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">mergeApi</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">MergeApi</span>(<span style="color:#a6e22e">config</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Define the PDF files to be merged (must exist in GroupDocs Cloud storage)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">filesToMerge</span> <span style="color:#f92672">=</span> [
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">FileInfo</span>({ <span style="color:#a6e22e">filePath</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;input1.pdf&#34;</span> }),
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">FileInfo</span>({ <span style="color:#a6e22e">filePath</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;input2.pdf&#34;</span> })
</span></span><span style="display:flex;"><span>    ];
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Set merge options
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">mergeOptions</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">MergeOptions</span>();
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">mergeOptions</span>.<span style="color:#a6e22e">fileInfos</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">filesToMerge</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">mergeOptions</span>.<span style="color:#a6e22e">outputPath</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;merged_output.pdf&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">try</span> {
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// Perform the merge operation
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">result</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">mergeApi</span>.<span style="color:#a6e22e">mergeDocuments</span>(<span style="color:#a6e22e">mergeOptions</span>);
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>(<span style="color:#e6db74">&#34;Merge completed. Output file stored at:&#34;</span>, <span style="color:#a6e22e">result</span>.<span style="color:#a6e22e">path</span>);
</span></span><span style="display:flex;"><span>    } <span style="color:#66d9ef">catch</span> (<span style="color:#a6e22e">error</span>) {
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">error</span>(<span style="color:#e6db74">&#34;Error during PDF merge:&#34;</span>, <span style="color:#a6e22e">error</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Execute the merge
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">mergePdfFiles</span>();
</span></span></code></pre></div><blockquote>
<p><strong>หมายเหตุ:</strong> ตัวอย่างโค้ดนี้แสดงการทำงานหลักของฟังก์ชัน ก่อนนำไปใช้ในโครงการของคุณ ให้ตรวจสอบและอัปเดตเส้นทางไฟล์และค่าการกำหนดค่าต่าง ๆ ให้ตรงกับสภาพแวดล้อมจริงของคุณ ตรวจสอบว่าการพึ่งพาที่จำเป็นทั้งหมดได้ถูกติดตั้งอย่างถูกต้อง และทำการทดสอบอย่างละเอียดในสภาพแวดล้อมการพัฒนา หากคุณพบปัญหาใด ๆ โปรดอ้างอิง <a href="https://docs.groupdocs.cloud/merger/">เอกสารอย่างเป็นทางการ</a> หรือ ติดต่อ <a href="https://forum.groupdocs.cloud/c/merger/18">ทีมสนับสนุน</a> เพื่อขอความช่วยเหลือ.</p>
</blockquote>
<h2 id="การรวม-pdf-ผาน-rest-api-ดวย-curl">การรวม PDF ผ่าน REST API ด้วย cURL</h2>
<p>หากคุณต้องการใช้วิธี REST แบบบริสุทธิ์เดียวกัน การดำเนินการเดียวกันสามารถทำได้ด้วยคำสั่ง cURL</p>
<p>ขั้นแรก ให้รับโทเคนการเข้าถึง:</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/oauth2/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;,&#34;grant_type&#34;:&#34;client_credentials&#34;}&#39;</span>
</span></span></code></pre></div><p>อัปโหลดไฟล์ PDF ต้นฉบับไปยังที่จัดเก็บของคุณ (แทนที่ <code>YOUR_ACCESS_TOKEN</code> ด้วยโทเคนจากขั้นตอนก่อนหน้า):</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/storage/file/upload?path=input1.pdf&#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>     -F <span style="color:#e6db74">&#34;file=@/local/path/input1.pdf&#34;</span>
</span></span></code></pre></div><p>ทำซ้ำการอัปโหลดสำหรับ <code>input2.pdf</code> จากนั้นขอดำเนินการรวม:</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/merger/merge&#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;fileInfos&#34;: [
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               {&#34;filePath&#34;:&#34;input1.pdf&#34;},
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               {&#34;filePath&#34;:&#34;input2.pdf&#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">           &#34;outputPath&#34;:&#34;merged_output.pdf&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div><p>สุดท้าย ให้ดาวน์โหลดไฟล์ที่รวมแล้ว:</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 GET <span style="color:#e6db74">&#34;https://api.groupdocs.cloud/v2.0/storage/file/download?path=merged_output.pdf&#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 merged_output.pdf
</span></span></code></pre></div><p>สำหรับรายการเต็มของ endpoint และพารามิเตอร์, ดูที่ <a href="https://reference.groupdocs.cloud/merger/">อ้างอิง API</a>.</p>
<h2 id="กำหนดคาตวเลอกการรวม">กำหนดค่าตัวเลือกการรวม</h2>
<p>SDK เปิดเผยตัวเลือกหลายอย่างที่ให้คุณปรับแต่งกระบวนการรวมได้อย่างละเอียด:</p>
<ul>
<li><strong>outputPath</strong> - เส้นทางปลายทางสำหรับ PDF ที่รวมกัน ปรับค่านี้เพื่อควบคุมตำแหน่งที่จัดเก็บผลลัพธ์</li>
<li><strong>fileInfos</strong> - อาร์เรย์ของอ็อบเจกต์ <code>FileInfo</code> ที่กำหนด PDF แหล่งที่มาและลำดับของมัน</li>
</ul>
<p>คุณยังสามารถตั้งค่าคุณสมบัติเพิ่มเติมเช่น <code>pages</code> เพื่อรวมช่วงหน้าที่เฉพาะ หรือ <code>password</code> สำหรับไฟล์ PDF ที่เข้ารหัสได้อีกด้วย. ดูที่ <a href="https://docs.groupdocs.cloud/merger/">เอกสารอย่างเป็นทางการ</a> สำหรับรายการเต็มของฟิลด์ที่สามารถกำหนดค่าได้.</p>
<h2 id="ขอควรพจารณาดานประสทธภาพสำหรบการรวม-pdf">ข้อควรพิจารณาด้านประสิทธิภาพสำหรับการรวม PDF</h2>
<p>เมื่อทำการรวมไฟล์ PDF ขนาดใหญ่หรือจำนวนมาก ให้คำนึงถึงเคล็ดลับต่อไปนี้:</p>
<ul>
<li><strong>Use async/await</strong> เพื่อหลีกเลี่ยงการบล็อก event loop โดยเฉพาะสำหรับเอกสารขนาดใหญ่.</li>
<li><strong>Batch uploads</strong>: อัปโหลด PDF แหล่งที่มาพร้อมกันก่อนเรียกใช้การรวมเพื่อลดความหน่วงโดยรวม.</li>
<li><strong>Streamed processing</strong>: สำหรับ PDF ขนาดใหญ่มาก ให้พิจารณาเก็บผลลัพธ์ชั่วคราวในคลาวด์สตอเรจและทำการรวมเป็นส่วนย่อย ๆ.</li>
<li><strong>Encrypted PDFs</strong>: ให้รหัสผ่านในอ็อบเจ็กต์ <code>FileInfo</code>; การประมวลผลไฟล์ที่เข้ารหัสเพิ่มภาระงาน ดังนั้นควรรวมไฟล์หลังจากถอดรหัสเมื่อเป็นไปได้.</li>
</ul>
<p>การใช้แนวปฏิบัติเหล่านี้ช่วยให้คุณรวม PDF ใน Node.JS อย่างมีประสิทธิภาพพร้อมลดการใช้หน่วยความจำลง</p>
<h2 id="คำถามทคณอาจม">คำถามที่คุณอาจมี</h2>
<ul>
<li>
<p><strong>ฉันจะรวมไฟล์ PDF ใน Node.JS โดยใช้ GroupDocs ได้อย่างไร?</strong><br>
ใช้ <a href="https://products.groupdocs.cloud/merger/nodejs/">GroupDocs.Merger Cloud SDK for Node.js</a> เพื่อสร้างอินสแตนซ์ <code>MergeApi</code> กำหนดค่า <code>MergeOptions</code> ด้วยไฟล์ PDF แหล่งที่มาของคุณ และเรียก <code>mergeDocuments</code> ตัวอย่างโค้ดเต็มในคู่มือนี้แสดงกระบวนการ</p>
</li>
<li>
<p><strong>ฉันสามารถรวมไฟล์ PDF ที่เข้ารหัสใน Node.JS ได้หรือไม่?</strong><br>
ใช่, SDK รองรับการรวม PDF ที่เข้ารหัส. ให้ระบุรหัสผ่านที่ถูกต้องในอ็อบเจ็กต์ <code>FileInfo</code> ก่อนเรียก <code>mergeDocuments</code>. ดู <a href="https://docs.groupdocs.cloud/merger/">เอกสารอย่างเป็นทางการ</a> สำหรับรายละเอียด.</p>
</li>
<li>
<p><strong>ตัวเลือกการให้สิทธิ์การใช้งานสำหรับ GroupDocs.Merger มีอะไรบ้าง?</strong><br>
GroupDocs มีแผนการกำหนดราคาที่ยืดหยุ่น สำหรับการทดสอบ คุณสามารถขอ <a href="https://purchase.groupdocs.cloud/temporary-license/">ใบอนุญาตชั่วคราว</a> เพื่อประเมินไลบรารีก่อนทำการซื้อการสมัครสมาชิกเต็มรูปแบบ</p>
</li>
<li>
<p><strong>ฉันสามารถค้นหาตัวอย่างเพิ่มเติมและการสนับสนุนได้จากที่ไหน?</strong><br>
ตัวอย่างเพิ่มเติมมีให้ใน <a href="https://github.com/groupdocs-merger-cloud/groupdocs-merger-cloud-node">GitHub repository</a>. สำหรับความช่วยเหลือ, เยี่ยมชม <a href="https://forum.groupdocs.cloud/c/merger/18">support forum</a>.</p>
</li>
</ul>
<h2 id="การอานเพมเตม">การอ่านเพิ่มเติม</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/th/merger/split-pdf-into-multiple-pdf-in-nodejs/">แยก PDF เป็นหลายไฟล์ PDF ใน Node.JS</a></li>
<li><a href="https://blog.groupdocs.cloud/th/merger/lock-pdf-with-password-using-rest-api-in-nodejs/">ล็อกเอกสาร PDF ด้วยรหัสผ่านโดยใช้ REST API ใน Node.js</a></li>
<li><a href="https://blog.groupdocs.cloud/th/merger/how-to-merge-pdf-files-in-csharp-using-rest-api/">วิธีรวมไฟล์ PDF ใน C# โดยใช้ REST API</a></li>
</ul>
]]></content:encoded>
    </item>
    
    <item>
      <title>เพิ่มลายน้ำรูปภาพในเอกสาร PDF ด้วย Java</title>
      <link>https://blog-qa.groupdocs.cloud/th/watermark/add-image-watermark-to-pdf-documents-in-java/</link>
      <pubDate>Fri, 28 Aug 2026 19:41:04 +0000</pubDate>
      
      <guid>https://blog-qa.groupdocs.cloud/th/watermark/add-image-watermark-to-pdf-documents-in-java/</guid>
      <description>เรียนรู้วิธีเพิ่มลายน้ำรูปภาพลงในเอกสาร PDF ด้วย Java โดยใช้ GroupDocs.Watermark Cloud SDK. คู่มือขั้นตอนโดยละเอียดพร้อมโค้ด, cURL และเคล็ดลับการกำหนดค่า.</description>
      <content:encoded><![CDATA[<p>การเพิ่มตัวระบุภาพให้กับไฟล์ <a href="https://docs.fileformat.com/pdf">PDF</a> เป็นสิ่งสำคัญสำหรับการปกป้องทรัพย์สินทางปัญญาและการสร้างแบรนด์เอกสาร. <a href="https://products.groupdocs.cloud/watermark/java/">GroupDocs.Watermark Cloud SDK for Java</a> มี API ที่ใช้งานง่ายเพื่อฝังลายน้ำรูปภาพโดยตรงลงใน PDF จากแอปพลิเคชัน Java ของคุณ. ในบทแนะนำนี้คุณจะได้เรียนรู้วิธีการเพิ่มลายน้ำรูปภาพลงในเอกสาร PDF ด้วย Java, ดูตัวอย่างการทำงานเต็มรูปแบบ, และสำรวจการเรียกใช้ cURL REST ที่เทียบเท่าสำหรับการรวมกับคลาวด์.</p>
<h2 id="เพมลายนำรปภาพในเอกสาร-pdf-ดวย-java-ใน-5-ขนตอน">เพิ่มลายน้ำรูปภาพในเอกสาร PDF ด้วย Java ใน 5 ขั้นตอน</h2>
<ol>
<li><strong>เริ่มต้น API client</strong>: สร้างอินสแตนซ์ <code>ApiClient</code> ด้วย client ID และ secret ของคุณ.</li>
</ol>
<!--[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>ApiClient apiClient <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ApiClient<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>apiClient<span style="color:#f92672">);</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->  
<p>ขั้นตอนนี้เชื่อมต่อโค้ด Java ของคุณกับบริการ GroupDocs.Watermark Cloud. ดูที่ <a href="https://reference.groupdocs.cloud/watermark/">เอกสารอ้างอิง API</a> สำหรับรายละเอียดเพิ่มเติม.</p>
<ol start="2">
<li><strong>ระบุไฟล์ PDF ต้นฉบับ</strong>: สร้างอ็อบเจ็กต์ <code>FileInfo</code> ที่ชี้ไปยัง PDF ที่คุณต้องการใส่ลายน้ำ.</li>
</ol>
<!--[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 fileInfo <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInfo<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>fileInfo<span style="color:#f92672">.</span><span style="color:#a6e22e">setFilePath</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><!--[CODE_SNIPPET_END]-->  
<p>ไฟล์ต้องอัปโหลดไปยัง GroupDocs storage ของคุณก่อนทำคำขอ.</p>
<ol start="3">
<li><strong>กำหนดค่าตำแหน่งลายน้ำรูปภาพ</strong>: กำหนดเส้นทางของรูปภาพ, ความทึบแสง, ปัจจัยการสเกล, การหมุนและการจัดตำแหน่ง.</li>
</ol>
<!--[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>ImageWatermark imageWatermark <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ImageWatermark<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>imageWatermark<span style="color:#f92672">.</span><span style="color:#a6e22e">setImagePath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;watermark.png&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>imageWatermark<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>imageWatermark<span style="color:#f92672">.</span><span style="color:#a6e22e">setScaleFactor</span><span style="color:#f92672">(</span>0<span style="color:#f92672">.</span><span style="color:#a6e22e">3</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>imageWatermark<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>imageWatermark<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">CENTER</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>imageWatermark<span style="color:#f92672">.</span><span style="color:#a6e22e">setMargin</span><span style="color:#f92672">(</span><span style="color:#66d9ef">new</span> Margin<span style="color:#f92672">(</span>10<span style="color:#f92672">,</span> 10<span style="color:#f92672">,</span> 10<span style="color:#f92672">,</span> 10<span style="color:#f92672">));</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->  
<p>ปรับค่าต่าง ๆ เหล่านี้เพื่อให้ได้ลักษณะที่ต้องการ ความทึบแสงควบคุมความโปร่งใส, ในขณะที่ scaleFactor กำหนดขนาดสัมพันธ์กับหน้า.</p>
<ol start="4">
<li>
<p><strong>ตั้งค่าตัวเลือกลายน้ำและเส้นทางการส่งออก</strong>: รวมข้อมูลไฟล์และลายน้ำเข้าเป็นอ็อบเจ็กต์ <code>WatermarkOptions</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>WatermarkOptions options <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> WatermarkOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setFileInfo</span><span style="color:#f92672">(</span>fileInfo<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setImageWatermark</span><span style="color:#f92672">(</span>imageWatermark<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setOutputPath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;output.pdf&#34;</span><span style="color:#f92672">);</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->  
<p><code>outputPath</code> บอกให้บริการทราบว่าควรจัดเก็บ PDF ที่ได้ที่ไหน.</p>
</li>
<li>
<p><strong>ดำเนินการคำขอ</strong>: สร้าง <code>AddWatermarkRequest</code> และเรียก API. จัดการการตอบสนองที่สำเร็จหรือเกิดข้อผิดพลาด.</p>
</li>
</ol>
<!--[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>AddWatermarkRequest request <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> AddWatermarkRequest<span style="color:#f92672">(</span>options<span style="color:#f92672">);</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>    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>Exception 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 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><span style="color:#f92672">}</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->  
<p>หลังจากดำเนินการเสร็จ ไฟล์ PDF ที่มีลายน้ำจะพร้อมใช้งานที่ตำแหน่งที่คุณระบุ.</p>
<h2 id="ตวอยางโคดเตม-เพมลายนำรปภาพในเอกสาร-pdf-ดวย-java">ตัวอย่างโค้ดเต็ม: เพิ่มลายน้ำรูปภาพในเอกสาร PDF ด้วย Java</h2>
<p>ตัวอย่างต่อไปนี้แสดงการดำเนินการเต็มรูปแบบตั้งแต่การเริ่มต้นไคลเอนต์จนถึงการบันทึกไฟล์ PDF ที่มีลายน้ำ</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.cloud.watermark.api.WatermarkApi<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.client.ApiClient<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.model.AddWatermarkRequest<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.model.AddWatermarkResponse<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.model.FileInfo<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.model.ImageWatermark<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.model.Margin<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.model.WatermarkOptions<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.model.enums.HorizontalAlignment<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.cloud.watermark.model.enums.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">AddImageWatermarkExample</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 client (replace with your actual credentials)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        ApiClient apiClient <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ApiClient<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>apiClient<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Input PDF file information
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        FileInfo fileInfo <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInfo<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        fileInfo<span style="color:#f92672">.</span><span style="color:#a6e22e">setFilePath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;input.pdf&#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">// Image watermark configuration
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        ImageWatermark imageWatermark <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ImageWatermark<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        imageWatermark<span style="color:#f92672">.</span><span style="color:#a6e22e">setImagePath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;watermark.png&#34;</span><span style="color:#f92672">);</span>          <span style="color:#75715e">// Path to watermark image
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        imageWatermark<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>        imageWatermark<span style="color:#f92672">.</span><span style="color:#a6e22e">setScaleFactor</span><span style="color:#f92672">(</span>0<span style="color:#f92672">.</span><span style="color:#a6e22e">3</span><span style="color:#f92672">);</span>                    <span style="color:#75715e">// 30% of page size
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        imageWatermark<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:#75715e">// No rotation
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        imageWatermark<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>        imageWatermark<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">CENTER</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        imageWatermark<span style="color:#f92672">.</span><span style="color:#a6e22e">setMargin</span><span style="color:#f92672">(</span><span style="color:#66d9ef">new</span> Margin<span style="color:#f92672">(</span>10<span style="color:#f92672">,</span> 10<span style="color:#f92672">,</span> 10<span style="color:#f92672">,</span> 10<span style="color:#f92672">));</span>  <span style="color:#75715e">// 10 points margin on all sides
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Watermark options
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        WatermarkOptions options <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> WatermarkOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        options<span style="color:#f92672">.</span><span style="color:#a6e22e">setFileInfo</span><span style="color:#f92672">(</span>fileInfo<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        options<span style="color:#f92672">.</span><span style="color:#a6e22e">setImageWatermark</span><span style="color:#f92672">(</span>imageWatermark<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>        options<span style="color:#f92672">.</span><span style="color:#a6e22e">setOutputPath</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;output.pdf&#34;</span><span style="color:#f92672">);</span> <span style="color:#75715e">// Resulting PDF with watermark
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Create request and call API
</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>options<span style="color:#f92672">);</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>            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>Exception 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 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>หมายเหตุ:</strong> ตัวอย่างโค้ดนี้แสดงการทำงานหลัก ก่อนนำไปใช้ในโครงการของคุณ ให้ตรวจสอบและอัปเดตเส้นทางไฟล์ (<code>input.pdf</code>, <code>watermark.png</code>, <code>output.pdf</code>) ให้ตรงกับตำแหน่งไฟล์จริงของคุณ ตรวจสอบว่าขึ้นตอนการพึ่งพาทั้งหมดได้ถูกติดตั้งอย่างถูกต้อง และทดสอบอย่างละเอียดในสภาพแวดล้อมการพัฒนา หากคุณพบปัญหาใด ๆ โปรดดูที่ <a href="https://docs.groupdocs.cloud/watermark/">เอกสารอย่างเป็นทางการ</a> หรือ ติดต่อ <a href="https://forum.groupdocs.cloud/c/watermark/29">ทีมสนับสนุน</a> เพื่อขอความช่วยเหลือ</p>
</blockquote>
<h2 id="ใชลายนำรปภาพกบเอกสาร-pdf-ผาน-curl-และ-rest-api">ใช้ลายน้ำรูปภาพกับเอกสาร PDF ผ่าน cURL และ REST API</h2>
<p>ด้านล่างเป็นคำเรียก REST ที่คุณสามารถใช้กับ cURL เพื่อให้ได้ผลลัพธ์เดียวกันโดยไม่ต้องเขียนโค้ด Java.</p>
<ol>
<li>
<p><strong>รับโทเค็นการเข้าถึง</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/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><!--[CODE_SNIPPET_END]-->  
<p>การตอบสนองจะมี <code>access_token</code> ที่ใช้ในการเรียกต่อไป.</p>
</li>
<li>
<p><strong>อัปโหลดไฟล์ PDF ต้นฉบับ</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/storage/upload?path=input.pdf&#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>     -F <span style="color:#e6db74">&#34;file=@/path/to/input.pdf&#34;</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
</li>
<li>
<p><strong>อัปโหลดภาพลายน้ำ</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/storage/upload?path=watermark.png&#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>     -F <span style="color:#e6db74">&#34;file=@/path/to/watermark.png&#34;</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
</li>
<li>
<p><strong>เพิ่มลายน้ำรูปภาพ</strong></p>
</li>
</ol>
<!--[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/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.pdf&#34; },
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;imageWatermark&#34;: {
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;imagePath&#34;: &#34;watermark.png&#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;scaleFactor&#34;: 0.3,
</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;Center&#34;,
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">               &#34;margin&#34;: { &#34;top&#34;: 10, &#34;right&#34;: 10, &#34;bottom&#34;: 10, &#34;left&#34;: 10 }
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           },
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">           &#34;outputPath&#34;: &#34;output.pdf&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">         }&#39;</span>
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->  
<p>คำขอนี้สะท้อนตรรกะของโค้ด Java โดยใช้การตั้งค่าความทึบ, การสเกลและการจัดแนวเดียวกัน.</p>
<ol start="5">
<li><strong>ดาวน์โหลด PDF ที่มีลายน้ำ</strong>
<!--[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/download?path=output.pdf&#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.pdf
</span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
</li>
</ol>
<p>สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ request bodies และพารามิเตอร์ที่รองรับ ดู <a href="https://reference.groupdocs.cloud/watermark/">เอกสาร API อย่างเป็นทางการ</a>.</p>
<h2 id="การตดตงและกำหนดคา-groupdocswatermark-cloud-sdk-for-java">การติดตั้งและกำหนดค่า GroupDocs.Watermark Cloud SDK for Java</h2>
<p>เพิ่มการพึ่งพา Maven ลงใน <code>pom.xml</code> ของคุณ (หรือสคริปต์ Gradle ที่เทียบเท่า) ไลบรารีนี้โฮสต์บน Maven Central.</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-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><!--[CODE_SNIPPET_END]-->
<p>คุณยังต้องมีบัญชี GroupDocs Cloud ที่ใช้งานได้. ดึง <strong>Client ID</strong> และ <strong>Client Secret</strong> ของคุณจาก <a href="https://products.groupdocs.cloud/watermark/java/">GroupDocs portal</a>. ไม่จำเป็นต้องติดตั้ง runtime เพิ่มเติมใด ๆ เนื่องจาก SDK สื่อสารกับบริการคลาวด์.</p>
<h2 id="การปรบแตงตวเลอกลายนำรปภาพสำหรบเอกสาร-pdf">การปรับแต่งตัวเลือกลายน้ำรูปภาพสำหรับเอกสาร PDF</h2>
<p>SDK เปิดเผยคุณสมบัติต่าง ๆ หลายอย่างที่ทำให้คุณควบคุมลักษณะการแสดงผลของลายน้ำ</p>
<h3 id="ปรบความทบแสง">ปรับความทึบแสง</h3>
<!--[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>imageWatermark<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">75</span><span style="color:#f92672">);</span> <span style="color:#75715e">// 75% opacity for a more visible watermark
</span></span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<p>ค่าความทึบแสงอยู่ในช่วงตั้งแต่ 0.0 (โปร่งใสเต็มที่) ถึง 1.0 (ทึบเต็มที่).</p>
<h3 id="เปลยนปจจยสเกล">เปลี่ยนปัจจัยสเกล</h3>
<!--[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>imageWatermark<span style="color:#f92672">.</span><span style="color:#a6e22e">setScaleFactor</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">// Watermark occupies 50% of the page width
</span></span></span></code></pre></div><!--[CODE_SNIPPET_END]-->
<p>ปัจจัยสเกลกำหนดขนาดของลายน้ำโดยอิงจากมิติของหน้า.</p>
<h3 id="ตงคาการจดแนวและระยะขอบ">ตั้งค่าการจัดแนวและระยะขอบ</h3>
<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>imageWatermark<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">RIGHT</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>imageWatermark<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">BOTTOM</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>imageWatermark<span style="color:#f92672">.</span><span style="color:#a6e22e">setMargin</span><span style="color:#f92672">(</span><span style="color:#66d9ef">new</span> Margin<span style="color:#f92672">(</span>20<span style="color:#f92672">,</span> 20<span style="color:#f92672">,</span> 20<span style="color:#f92672">,</span> 20<span style="color:#f92672">));</span>
</span></span></code></pre></div><p>การตั้งค่านี้จะวางลายน้ำไว้ที่มุมล่าง‑ขวาพร้อมระยะขอบ 20‑จุด.</p>
<p>สำหรับรายการคุณสมบัติที่กำหนดค่าได้ทั้งหมด โปรดดูที่ <a href="https://reference.groupdocs.cloud/watermark/">อ้างอิง API</a>.</p>
<h2 id="สรป">สรุป</h2>
<p>การเพิ่มลายน้ำรูปภาพลงในเอกสาร PDF ด้วย Java เป็นงานที่ทำได้อย่างง่ายดายเมื่อคุณใช้ <a href="https://products.groupdocs.cloud/watermark/java/">GroupDocs.Watermark Cloud SDK for Java</a>. SDK จัดการการปรับแต่ง PDF ระดับต่ำทั้งหมด ทำให้คุณสามารถมุ่งเน้นที่ด้านภาพเช่น ความทึบ, การปรับขนาดและการวางตำแหน่ง ไม่ว่าคุณจะชอบการใช้งานแบบ Java แท้หรือเวิร์กโฟลว์ cURL บนคลาวด์ ผลลัพธ์คุณภาพสูงเดียวกันก็สามารถทำได้โดยไม่เสียประสิทธิภาพ จำไว้ว่าต้องได้รับใบอนุญาตที่เหมาะสมสำหรับการใช้งานในผลิตภัณฑ์; รายละเอียดราคาอยู่ในหน้าผลิตภัณฑ์และสามารถใช้ <a href="https://purchase.groupdocs.cloud/temporary-license/">หน้าใบอนุญาตชั่วคราว</a> สำหรับการประเมิน.</p>
<h2 id="faqs">FAQs</h2>
<ul>
<li>
<p><strong>ฉันจะเพิ่มลายน้ำรูปภาพลงใน PDF ด้วย Java โดยไม่สูญเสียคุณภาพได้อย่างไร?</strong><br>
ใช้คุณสมบัติ <code>scaleFactor</code> เพื่อกำหนดขนาดลายน้ำสัมพันธ์กับหน้าและรักษา DPI ดั้งเดิมของ PDF ต้นฉบับ SDK จะคงความละเอียดของ PDF ไว้ ดังนั้นลายน้ำจะแสดงคมชัดในทุกระดับการซูม</p>
</li>
<li>
<p><strong>ฉันสามารถเพิ่มลายน้ำหลายรายการใน PDF เดียวกันได้หรือไม่?</strong><br>
ใช่. สร้างอ็อบเจ็กต์ <code>ImageWatermark</code> แยกกันด้วยการกำหนดค่าที่แตกต่างกันและเพิ่มพวกมันตามลำดับโดยเรียก <code>addWatermark</code> หลายครั้งหรือโดยการเพิ่มลงในรายการในคำขอ.</p>
</li>
<li>
<p><strong>รูปแบบภาพที่รองรับสำหรับลายน้ำคืออะไร?</strong><br>
API รองรับประเภทภาพทั่วไปเช่น <a href="https://docs.fileformat.com/image/png/">PNG</a>, <a href="https://docs.fileformat.com/image/jpg/">JPG</a>, <a href="https://docs.fileformat.com/image/bmp/">BMP</a>, <a href="https://docs.fileformat.com/image/gif/">GIF</a> และ TIFF. แนะนำให้ใช้ PNG เพื่อคุณภาพที่ไม่มีการสูญเสียและรองรับความโปร่งใส.</p>
</li>
<li>
<p><strong>มีวิธีดูตัวอย่างลายน้ำก่อนนำไปใช้หรือไม่?</strong><br>
คุณสามารถใช้ GroupDocs.Watermark Cloud SDK for Java เพื่อสร้าง PDF ชั่วคราวที่มีลายน้ำและดาวน์โหลดเพื่อรีวิวได้ วิธีนี้ใช้การเรียก <code>addWatermark</code> เดียวกันโดยกำหนดเส้นทางเอาต์พุตไปยังตำแหน่งชั่วคราว</p>
</li>
</ul>
<h2 id="อานเพมเตม">อ่านเพิ่มเติม</h2>
<ul>
<li><a href="https://blog.groupdocs.cloud/th/watermark/add-watermark-to-images-using-java/">เพิ่มลายน้ำลงในรูปภาพโดยใช้ Java</a></li>
<li><a href="https://blog.groupdocs.cloud/th/watermark/add-watermark-to-word-in-java-watermark-creator/">เพิ่มลายน้ำลงใน Word ด้วย Java - Watermark Creator</a></li>
<li><a href="https://blog.groupdocs.cloud/th/watermark/insert-watermark-to-pdf-in-csharp/">เพิ่มลายน้ำรูปภาพลงใน PDF | วิธีเพิ่มลายน้ำลงในเอกสาร PDF ด้วย .NET</a></li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
