<?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>memory optimization on Conholdate Blog</title>
    <link>https://blog-qa.conholdate.com/th/tag/memory-optimization/</link>
    <description>Recent content in memory optimization on Conholdate Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>th</language>
    <lastBuildDate>Wed, 14 Oct 2026 14:25:40 +0000</lastBuildDate><atom:link href="https://blog-qa.conholdate.com/th/tag/memory-optimization/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>แปลง PDF เป็น PNG ใน Java</title>
      <link>https://blog-qa.conholdate.com/th/total/convert-pdf-to-png-in-java/</link>
      <pubDate>Wed, 14 Oct 2026 14:25:40 +0000</pubDate>
      
      <guid>https://blog-qa.conholdate.com/th/total/convert-pdf-to-png-in-java/</guid>
      <description>เรียนรู้วิธีแปลง PDF เป็น PNG ใน Java ด้วย Conholdate.Total for Java. ทำตามคู่มือขั้นตอนโดยละเอียดพร้อมโค้ดเต็ม การตั้งค่า ตัวเลือก และเคล็ดลับด้านประสิทธิภาพ.</description>
      <content:encoded><![CDATA[<p>การแปลงไฟล์ <a href="https://docs.fileformat.com/pdf">PDF</a> เป็นรูปภาพ <a href="https://docs.fileformat.com/image/png/">PNG</a> เป็นความต้องการทั่วไปในกระบวนการประมวลผลเอกสาร โดยเฉพาะเมื่อคุณต้องการเรนเดอร์หน้าเพื่อการแสดงตัวอย่างหรือการแสดงผล <a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a> มี SDK ที่แข็งแรงซึ่งทำให้งานนี้ง่ายขึ้นในแอปพลิเคชัน Java ในคู่มือนี้คุณจะได้เรียนรู้วิธีการสร้างยูทิลิตี้การแปลง PDF เป็น PNG ใน Java, สำรวจตัวเลือกที่เป็นมิตรต่อประสิทธิภาพ, และดูตัวอย่างโค้ดแบบหลายเธรดที่สมบูรณ์ สุดท้ายคุณจะสามารถรวมการแปลง PDF เป็น PNG ที่เร็วและใช้หน่วยความจำอย่างมีประสิทธิภาพเข้าไปในโครงการ Java ใดก็ได้</p>
<h2 id="ตวอยางทำงานเตมสำหรบการแปลง-pdf-เปน-png-ใน-java-ดวย-conholdatetotal">ตัวอย่างทำงานเต็มสำหรับการแปลง PDF เป็น PNG ใน Java ด้วย Conholdate.Total</h2>
<p>ตัวอย่างนี้แสดงวิธีการแปลง PDF เป็น PNG ใน Java โดยใช้ API การแปลงของ Conholdate.Total.</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.conversion.Converter<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> com.groupdocs.conversion.options.convert.PngConvertOptions<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.io.FileInputStream<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.io.InputStream<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.util.ArrayList<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.util.List<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> java.util.concurrent.*<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">PdfToPngDemo</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">final</span> String INPUT_PDF <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 style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">final</span> String OUTPUT_PATTERN <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;output_page_%d.png&#34;</span><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">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:#66d9ef">throws</span> Exception <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">long</span> start <span style="color:#f92672">=</span> System<span style="color:#f92672">.</span><span style="color:#a6e22e">nanoTime</span><span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Determine page count without loading whole document into memory
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        <span style="color:#66d9ef">int</span> totalPages<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">try</span> <span style="color:#f92672">(</span>InputStream is <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInputStream<span style="color:#f92672">(</span>INPUT_PDF<span style="color:#f92672">))</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            Converter tempConverter <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Converter<span style="color:#f92672">(</span>is<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>            totalPages <span style="color:#f92672">=</span> tempConverter<span style="color:#f92672">.</span><span style="color:#a6e22e">getPageCount</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></span><span style="display:flex;"><span><span style="color:#75715e">// Thread pool sized to available processors
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        ExecutorService executor <span style="color:#f92672">=</span> Executors<span style="color:#f92672">.</span><span style="color:#a6e22e">newFixedThreadPool</span><span style="color:#f92672">(</span>Runtime<span style="color:#f92672">.</span><span style="color:#a6e22e">getRuntime</span><span style="color:#f92672">().</span><span style="color:#a6e22e">availableProcessors</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span>        List<span style="color:#f92672">&lt;</span>Future<span style="color:#f92672">&lt;?&gt;&gt;</span> tasks <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ArrayList<span style="color:#f92672">&lt;&gt;();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> <span style="color:#f92672">(</span><span style="color:#66d9ef">int</span> page <span style="color:#f92672">=</span> 1<span style="color:#f92672">;</span> page <span style="color:#f92672">&lt;=</span> totalPages<span style="color:#f92672">;</span> page<span style="color:#f92672">++)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">final</span> <span style="color:#66d9ef">int</span> pageNumber <span style="color:#f92672">=</span> page<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>            tasks<span style="color:#f92672">.</span><span style="color:#a6e22e">add</span><span style="color:#f92672">(</span>executor<span style="color:#f92672">.</span><span style="color:#a6e22e">submit</span><span style="color:#f92672">(()</span> <span style="color:#f92672">-&gt;</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>                <span style="color:#75715e">// Each thread creates its own Converter instance – ensures thread safety
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>                <span style="color:#66d9ef">try</span> <span style="color:#f92672">(</span>InputStream pdfStream <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInputStream<span style="color:#f92672">(</span>INPUT_PDF<span style="color:#f92672">))</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>                    Converter converter <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Converter<span style="color:#f92672">(</span>pdfStream<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PngConvertOptions options <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> PngConvertOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>                    options<span style="color:#f92672">.</span><span style="color:#a6e22e">setPageNumber</span><span style="color:#f92672">(</span>pageNumber<span style="color:#f92672">);</span>          <span style="color:#75715e">// convert single page
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>                    options<span style="color:#f92672">.</span><span style="color:#a6e22e">setResolution</span><span style="color:#f92672">(</span>150<span style="color:#f92672">);</span>                 <span style="color:#75715e">// memory‑friendly DPI
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>                    options<span style="color:#f92672">.</span><span style="color:#a6e22e">setQuality</span><span style="color:#f92672">(</span>90<span style="color:#f92672">);</span>                     <span style="color:#75715e">// PNG compression quality (0‑100)
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>
</span></span><span style="display:flex;"><span>String outputPath <span style="color:#f92672">=</span> String<span style="color:#f92672">.</span><span style="color:#a6e22e">format</span><span style="color:#f92672">(</span>OUTPUT_PATTERN<span style="color:#f92672">,</span> pageNumber<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>                    converter<span style="color:#f92672">.</span><span style="color:#a6e22e">convert</span><span style="color:#f92672">(</span>outputPath<span style="color:#f92672">,</span> options<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>                    <span style="color:#66d9ef">throw</span> <span style="color:#66d9ef">new</span> RuntimeException<span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Failed to convert page &#34;</span> <span style="color:#f92672">+</span> pageNumber<span style="color:#f92672">,</span> e<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><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Wait for all conversions to finish
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        <span style="color:#66d9ef">for</span> <span style="color:#f92672">(</span>Future<span style="color:#f92672">&lt;?&gt;</span> f <span style="color:#f92672">:</span> tasks<span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            f<span style="color:#f92672">.</span><span style="color:#a6e22e">get</span><span style="color:#f92672">();</span> <span style="color:#75715e">// re‑throws any exception from the task
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>executor<span style="color:#f92672">.</span><span style="color:#a6e22e">shutdown</span><span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">long</span> end <span style="color:#f92672">=</span> System<span style="color:#f92672">.</span><span style="color:#a6e22e">nanoTime</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">printf</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;PDF to PNG conversion completed in %.2f seconds.%n&#34;</span><span style="color:#f92672">,</span>
</span></span><span style="display:flex;"><span>                <span style="color:#f92672">(</span>end <span style="color:#f92672">-</span> start<span style="color:#f92672">)</span> <span style="color:#f92672">/</span> 1_000_000_000<span style="color:#f92672">.</span><span style="color:#a6e22e">0</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> ตัวอย่างโค้ดนี้แสดงการทำงานหลัก ก่อนนำไปใช้ในโครงการของคุณ โปรดตรวจสอบให้แน่ใจว่าได้อัปเดตเส้นทางไฟล์และค่าการกำหนดค่าต่าง ๆ ให้ตรงกับสภาพแวดล้อมจริงของคุณ ตรวจสอบว่าขึ้นตอนการพึ่งพาที่จำเป็นทั้งหมดได้ติดตั้งอย่างถูกต้องแล้ว และทำการทดสอบอย่างละเอียดในสภาพแวดล้อมการพัฒนา หากคุณพบปัญหาใด ๆ โปรดดูที่ <a href="https://docs.conholdate.com/java/">เอกสารอย่างเป็นทางการ</a> หรือ ติดต่อ <a href="https://forum.conholdate.com/c/total/5">ทีมสนับสนุน</a> เพื่อขอความช่วยเหลือ</p>
</blockquote>
<h2 id="ทำความเขาใจการแปลง-pdf-เปน-png-ดวยโคด-java">ทำความเข้าใจการแปลง PDF เป็น PNG ด้วยโค้ด Java</h2>
<p>จุดต่อไปนี้แยกแยะขั้นตอนการทำงานของโปรแกรมตัวอย่าง:</p>
<ol>
<li><strong>โหลด PDF และกำหนดจำนวนหน้า</strong> - คลาส <code>Converter</code> ถูกสร้างด้วย <code>InputStream</code> ที่ชี้ไปยัง PDF ต้นฉบับ การเรียก <code>getPageCount()</code> จะดึงจำนวนหน้าทั้งหมดโดยไม่ต้องโหลดเอกสารทั้งหมดเข้าสู่หน่วยความจำ.</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><span style="color:#66d9ef">try</span> <span style="color:#f92672">(</span>InputStream is <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> FileInputStream<span style="color:#f92672">(</span>INPUT_PDF<span style="color:#f92672">))</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    Converter tempConverter <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Converter<span style="color:#f92672">(</span>is<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>    totalPages <span style="color:#f92672">=</span> tempConverter<span style="color:#f92672">.</span><span style="color:#a6e22e">getPageCount</span><span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div><ol start="2">
<li>
<p><strong>สร้าง Thread Pool สำหรับการประมวลผลแบบขนาน</strong> - <code>ExecutorService</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-java" data-lang="java"><span style="display:flex;"><span>ExecutorService executor <span style="color:#f92672">=</span> Executors<span style="color:#f92672">.</span><span style="color:#a6e22e">newFixedThreadPool</span><span style="color:#f92672">(</span>Runtime<span style="color:#f92672">.</span><span style="color:#a6e22e">getRuntime</span><span style="color:#f92672">().</span><span style="color:#a6e22e">availableProcessors</span><span style="color:#f92672">());</span>
</span></span></code></pre></div></li>
<li>
<p><strong>กำหนดค่าตัวเลือกการแปลงตามหน้าที่เฉพาะ</strong> - ภายในแต่ละงานจะสร้างอินสแตนซ์ <code>Converter</code> ใหม่ (เพื่อรับประกันความปลอดภัยของเธรด). <code>PngConvertOptions</code> ให้คุณตั้งค่าหน้าปลายทาง, ความละเอียด, และคุณภาพ PNG.</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>PngConvertOptions options <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> PngConvertOptions<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setPageNumber</span><span style="color:#f92672">(</span>pageNumber<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setResolution</span><span style="color:#f92672">(</span>150<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>options<span style="color:#f92672">.</span><span style="color:#a6e22e">setQuality</span><span style="color:#f92672">(</span>90<span style="color:#f92672">);</span>
</span></span></code></pre></div></li>
<li>
<p><strong>ดำเนินการแปลงและเขียนไฟล์ PNG</strong> - วิธี <code>convert</code> จะเขียนไฟล์ PNG ผลลัพธ์โดยใช้ชื่อไฟล์ที่จัดรูปแบบซึ่งรวมหมายเลขหน้าไว้</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>String outputPath <span style="color:#f92672">=</span> String<span style="color:#f92672">.</span><span style="color:#a6e22e">format</span><span style="color:#f92672">(</span>OUTPUT_PATTERN<span style="color:#f92672">,</span> pageNumber<span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>converter<span style="color:#f92672">.</span><span style="color:#a6e22e">convert</span><span style="color:#f92672">(</span>outputPath<span style="color:#f92672">,</span> options<span style="color:#f92672">);</span>
</span></span></code></pre></div><ol start="5">
<li><strong>ประสานการเสร็จสิ้นและทำความสะอาด</strong> - เธรดหลักจะรอให้ทุก futures เสร็จสิ้น จากนั้นปิดการทำงานของ executor และพิมพ์เวลาที่ใช้ไป แพทเทิร์นนี้รับประกันว่าทุกหน้าได้รับการประมวลผลก่อนที่โปรแกรมจะออก.</li>
</ol>
<p>สำหรับรายละเอียด API ที่ลึกขึ้น โปรดปรึกษา <a href="https://reference.conholdate.com/java/">Conholdate.Total Java API Reference</a>.</p>
<h2 id="เตรยมสภาพแวดลอมใหพรอม">เตรียมสภาพแวดล้อมให้พร้อม</h2>
<p>เพิ่มที่เก็บ Maven ของ Conholdate.Total และการพึ่งพาใน <code>pom.xml</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-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;repositories&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;repository&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;id&gt;</span>conholdate-repo<span style="color:#f92672">&lt;/id&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;name&gt;</span>Conholdate Maven Repository<span style="color:#f92672">&lt;/name&gt;</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&lt;url&gt;</span>https://repository.conholdate.com/repo/<span style="color:#f92672">&lt;/url&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;/repository&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/repositories&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><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.conholdate<span style="color:#f92672">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;artifactId&gt;</span>conholdate-total<span style="color:#f92672">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;version&gt;</span>24.9<span style="color:#f92672">&lt;/version&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;type&gt;</span>pom<span style="color:#f92672">&lt;/type&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/dependency&gt;</span>
</span></span></code></pre></div><p>ดาวน์โหลดแพ็กเกจ SDK ล่าสุดจาก <a href="https://releases.conholdate.com/total/java/">หน้าดาวน์โหลดอย่างเป็นทางการ</a>. ไลบรารีต้องการ Java 8 หรือสูงกว่าและทำงานบน JVM มาตรฐานใดก็ได้.</p>
<h2 id="การกำหนดคาการแปลง">การกำหนดค่าการแปลง</h2>
<p>โค้ดตัวอย่างแสดงตัวเลือกสำคัญสามอย่างที่คุณสามารถปรับแต่งได้:</p>
<ul>
<li><strong>Page Number</strong> - <code>options.setPageNumber(pageNumber);</code> เลือกหน้าที่ต้องการเรนเดอร์.</li>
<li><strong>Resolution</strong> - <code>options.setResolution(150);</code> ควบคุม DPI. ค่าที่สูงขึ้นจะเพิ่มรายละเอียดแต่ใช้หน่วยความจำมากขึ้น.</li>
<li><strong>Quality</strong> - <code>options.setQuality(90);</code> ตั้งค่าการบีบอัด PNG (0‑100). ปรับค่านี้เพื่อสมดุลขนาดไฟล์และคุณภาพภาพ.</li>
</ul>
<p>หากคุณต้องการการควบคุมเพิ่มเติม, เอกสารอ้างอิง API ระบุคุณสมบัติอื่น ๆ เช่น <code>setColorMode</code> และ <code>setBackgroundColor</code></p>
<h2 id="แนวทางปฏบตทดทสดสำหรบการแปลง-pdf-เปน-png-อยางมประสทธภาพ">แนวทางปฏิบัติที่ดีที่สุดสำหรับการแปลง PDF เป็น PNG อย่างมีประสิทธิภาพ</h2>
<ul>
<li><strong>สตรีมหน้าแยกกัน</strong> - ประมวลผลแต่ละหน้าจาก <code>InputStream</code> เพื่อหลีกเลี่ยงการโหลด PDF ทั้งไฟล์เข้าสู่หน่วยความจำ.</li>
<li><strong>ใช้พูลเธรดขนาดคงที่</strong> - การกำหนดขนาดพูลให้เท่ากับ <code>Runtime.getRuntime().availableProcessors()</code> จะป้องกันการสับสนของเธรดขณะเพิ่มประสิทธิภาพการใช้ CPU ให้สูงสุด.</li>
<li><strong>ตั้งค่า DPI ปานกลาง</strong> - สำหรับสถานการณ์การแสดงตัวอย่างส่วนใหญ่, 150 DPI ให้ความสมดุลที่ดีระหว่างคุณภาพและประสิทธิภาพ.</li>
<li><strong>ใช้ตัวแปลงซ้ำอย่างระมัดระวัง</strong> - การสร้าง <code>Converter</code> ใหม่ต่อเธรดจะรับประกันความปลอดภัยของเธรด; การแชร์อินสแตนซ์เดียวกันอาจทำให้เกิดสภาวะการแข่งขัน.</li>
<li><strong>วัดเวลาในการดำเนินการ</strong> - ตัวอย่างนี้พิมพ์จำนวนวินาทีที่ใช้; ใช้ข้อมูลนี้เพื่อปรับแต่งความละเอียดหรือจำนวนเธรดให้เหมาะกับภาระงานของคุณ.</li>
</ul>
<h2 id="สรป">สรุป</h2>
<p>การแปลง PDF เป็น PNG ใน Java เป็นการดำเนินการที่ทำบ่อยแต่ต้องคำนึงถึงประสิทธิภาพ ด้วย <a href="https://products.conholdate.com/total/java/">Conholdate.Total for Java</a>, คุณจะได้รับ SDK ที่ครบถ้วนซึ่งจัดการการสตรีมหน้า‑ต่อหน้า, การทำงานหลายเธรด, และตัวเลือกภาพที่ละเอียด ตัวอย่างข้างต้นแสดงวิธีสร้างยูทิลิตี้การแปลง PDF เป็น PNG ที่สามารถขยายได้, ตั้งค่าความละเอียดและคุณภาพ, และลดการใช้หน่วยความจำให้ต่ำ จำไว้ว่าให้รับใบอนุญาตที่ถูกต้องสำหรับการใช้งานในผลิตภัณฑ์; คุณสามารถขอใบอนุญาตชั่วคราวได้ที่ <a href="https://purchase.conholdate.com/temporary-license/">https://purchase.conholdate.com/temporary-license/</a> และตรวจสอบตัวเลือกการกำหนดราคาได้ที่ <a href="https://purchase.conholdate.com/pricing/total/family/">https://purchase.conholdate.com/pricing/total/family/</a>. ผสานรวมโค้ด, ปรับการตั้งค่าให้ตรงกับความต้องการของคุณ, และมอบภาพตัวอย่างที่เร็วและเชื่อถือได้จากเอกสาร PDF ใด ๆ</p>
<h2 id="คำถามทวไป">คำถามทั่วไป</h2>
<ul>
<li>
<p><strong>ฉันจะแปลง PDF เป็น PNG ใน Java โดยไม่ใช้เครื่องมือภายนอกได้อย่างไร?</strong><br>
SDK ทำการแปลงทั้งหมดในโค้ด ดังนั้นคุณไม่จำเป็นต้องใช้ยูทิลิตี้บรรทัดคำสั่งของบุคคลที่สาม เพียงเพิ่มการพึ่งพา Maven แล้วใช้คลาส <code>Converter</code> ตามที่แสดง</p>
</li>
<li>
<p><strong>ฉันคาดว่าจะได้ประสิทธิภาพอย่างไรจากยูทิลิตี้การแปลง PDF เป็น PNG ใน Java?</strong><br>
โดยการประมวลผลหน้าแบบขนานและใช้ DPI ปานกลาง (เช่น 150) ตัวอย่างจะทำการแปลง PDF 50‑หน้าได้ภายในไม่กี่วินาทีบนซีพียูสมัยใหม่ คุณสามารถทำการทดสอบความเร็วของไฟล์ของคุณเองได้โดยวัดเวลาในการทำงานที่โปรแกรมพิมพ์ออกมา</p>
</li>
<li>
<p><strong>ฉันสามารถแปลง PDF ที่มีรูปภาพความละเอียดสูงจำนวนมากโดยไม่ทำให้หน่วยความจำหมดได้หรือไม่?</strong><br>
ใช่. โค้ดจะสตรีมแต่ละหน้าแยกกันและทำการปล่อย <code>InputStream</code> หลังจากการแปลงซึ่งช่วยให้ขนาดของ heap เล็กลง หากคุณพบปัญหาหน่วยความจำ ให้ปรับความละเอียดหรือใช้จำนวนเธรดน้อยลง.</p>
</li>
<li>
<p><strong>สามารถปรับแต่งผลลัพธ์ PNG ได้เพิ่มเติมหรือไม่ เช่น การเปลี่ยนสีพื้นหลัง?</strong><br>
ตัวเลือกเพิ่มเติมมีใน <code>PngConvertOptions</code>. ดูที่ <a href="https://reference.conholdate.com/java/">อ้างอิง API</a> สำหรับคุณสมบัติเช่น <code>setBackgroundColor</code> และ <code>setColorMode</code>.</p>
</li>
</ul>
<h2 id="บทความทเกยวของ">บทความที่เกี่ยวข้อง</h2>
<ul>
<li><a href="https://blog.conholdate.com/th/total/convert-jpg-to-png-in-java/">แปลง JPG เป็น PNG ใน Java</a></li>
<li><a href="https://blog.conholdate.com/th/total/convert-cdr-to-png-in-java/">แปลง CDR เป็น PNG ใน Java</a></li>
<li><a href="https://blog.conholdate.com/th/total/convert-pdf-to-grayscale-in-java/">แปลง PDF เป็น Grayscale ใน Java</a></li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
