<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: IDRSolutions</title>
    <description>The latest articles on Forem by IDRSolutions (@idrsolutions).</description>
    <link>https://forem.com/idrsolutions</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3078638%2Faa7ba4ef-f446-48e3-95e9-0c43d0c3e214.png</url>
      <title>Forem: IDRSolutions</title>
      <link>https://forem.com/idrsolutions</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/idrsolutions"/>
    <language>en</language>
    <item>
      <title>Write PNG Images in Java (Tutorial)</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Wed, 15 Apr 2026 10:53:18 +0000</pubDate>
      <link>https://forem.com/idrsolutions/write-png-images-in-java-tutorial-2j6l</link>
      <guid>https://forem.com/idrsolutions/write-png-images-in-java-tutorial-2j6l</guid>
      <description>&lt;h2&gt;
  
  
  PNG Problems in Java
&lt;/h2&gt;

&lt;p&gt;Java developers often face challenges with &lt;a href="https://blog.idrsolutions.com/what-is-png/" rel="noopener noreferrer"&gt;PNG images&lt;/a&gt; because the default ImageIO library provides minimal control over the final output. While it natively supports writing PNG files, it lacks the necessary tools to fine-tune the balance between image quality and file size. &lt;/p&gt;

&lt;p&gt;Consequently, developers cannot easily access the format's diverse configuration options, limiting their ability to optimize images effectively within the standard Java ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support for PNG in Java
&lt;/h2&gt;

&lt;p&gt;While Java offers native PNG support via ImageIO, developers can also utilize various open-source, commercial, or non-Java wrapper alternatives. &lt;/p&gt;

&lt;p&gt;We suggest JDeli, a secure and comprehensive pure-Java implementation that integrates seamlessly with ImageIO while offering its own dedicated API. &lt;/p&gt;

&lt;p&gt;This guide demonstrates how to &lt;a href="https://www.idrsolutions.com/jdeli/png" rel="noopener noreferrer"&gt;read, write, and convert PNGs&lt;/a&gt; and other formats using JDeli. I will compare two specific techniques for Java-based PNG processing: the standard ImageIO approach and our specialized JDeli library.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write Image as PNG file in ImageIO
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;First, establish a File (or OutputStream) destination for the resulting PNG.&lt;/li&gt;
&lt;li&gt;Next, supply the image data, the "png" format identifier, and your output object to the write method.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Java code to write PNG with ImageIO
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/path/to/outputFile.png"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;ImageIO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"PNG"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Standard ImageIO will not automatically utilize the JDeli plugin for PNG exports. To ensure your code leverages JDeli for PNG output, you must manually enable the functionality.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.idrsolutions.com/jdeli/#why-buy" rel="noopener noreferrer"&gt;Download the JDeli trial jar&lt;/a&gt; with our ImageIO plugin&lt;/li&gt;
&lt;li&gt;Follow the &lt;a href="https://www.idrsolutions.com/docs/jdeli/tutorials/how-to-configure-jdeli-with-imageio" rel="noopener noreferrer"&gt;support documentation&lt;/a&gt; to install&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Write an image as PNG with JDeli
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Include JDeli within your class or module path (using the trial JAR download link).&lt;/li&gt;
&lt;li&gt;Next, initialize a File (or OutputStream) object for the output.&lt;/li&gt;
&lt;li&gt;Next, initialize a File (or OutputStream) object for the output.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Java code to write PNG with JDeli
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/path/to/outputFile.png"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"PNG"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//In JDeli you can also use a typesafe version&lt;/span&gt;
&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;OutputFormat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;PNG&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;pass&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="nc"&gt;PngEncoderOptions&lt;/span&gt; &lt;span class="n"&gt;object&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;more&lt;/span&gt; &lt;span class="n"&gt;control&lt;/span&gt; &lt;span class="n"&gt;over&lt;/span&gt; &lt;span class="no"&gt;PNG&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;

&lt;span class="nc"&gt;PngEncoderOptions&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PngEncoderOptions&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The original file was JPG in this example which was written out as a PNG image using JDeli.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other useful PNG links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Related articles on our &lt;a href="https://www.idrsolutions.com/docs/jdeli/png-support/" rel="noopener noreferrer"&gt;support site&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;How to &lt;a href="https://blog.idrsolutions.com/how-to-read-png-files-in-java/" rel="noopener noreferrer"&gt;read PNG&lt;/a&gt; files in Java.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.idrsolutions.com/how-to-mass-convert-png-to-jpg-tutorial/" rel="noopener noreferrer"&gt;How to convert PNG to JPG in bulk&lt;/a&gt; (Tutorial)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How Can JDeli Assist You?
&lt;/h2&gt;

&lt;p&gt;As the premier pure Java library for image manipulation, JDeli allows you to seamlessly read, write, and convert files with robust PNG support. You can explore our extensive &lt;a href="https://www.idrsolutions.com/docs/jdeli/png-support/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; to dive deeper into these capabilities. &lt;/p&gt;

&lt;p&gt;Backed by over a decade of expertise with diverse file formats, we are seasoned Java developers dedicated to &lt;a href="https://blog.idrsolutions.com/working-with-images-in-java/" rel="noopener noreferrer"&gt;helping you master image processing within the Java ecosystem&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to flatten PDF layers in Java (Tutorial)</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Fri, 10 Apr 2026 09:27:48 +0000</pubDate>
      <link>https://forem.com/idrsolutions/how-to-flatten-pdf-layers-in-java-tutorial-3ahe</link>
      <guid>https://forem.com/idrsolutions/how-to-flatten-pdf-layers-in-java-tutorial-3ahe</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Flattening PDF layers in Java is a way to lock a document’s appearance, ensure cross-device compatibility, and reduce file size by merging optional content into a single layer.&lt;/p&gt;

&lt;p&gt;Using the &lt;a href="https://www.idrsolutions.com/jpedal/" rel="noopener noreferrer"&gt;JPedal library&lt;/a&gt;, the process involves three main steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load: Initialize the &lt;code&gt;PdfManipulator&lt;/code&gt; and load your PDF file.&lt;/li&gt;
&lt;li&gt;Flatten: Call the &lt;code&gt;.flattenLayers()&lt;/code&gt; method to merge the content.&lt;/li&gt;
&lt;li&gt;Save: Use &lt;code&gt;.apply()&lt;/code&gt; and &lt;code&gt;.writeDocument()&lt;/code&gt; to export the final, simplified PDF.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What does it mean to flatten a PDF?
&lt;/h2&gt;

&lt;p&gt;Flattening a PDF merges all of its separate interactive layers, like signatures and annotations into a single, non-editable visual layer. This locks the content in place, preventing any further changes and ensuring the document looks exactly the same on every device or printer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why would you flatten PDF layers?
&lt;/h2&gt;

&lt;p&gt;A common reason for wanting to flatten layers is that it will preserve the document’s appearance across devices. PDF files with complicated visibility rules may expose bugs in different software implementations, so flattening the optional content removes this risk.&lt;/p&gt;

&lt;p&gt;Additionally, a draft version of a document may use layers to experiment with different appearances or content. The document would then be flattened into the final version so that these draft layers would be removed. This also has the benefit of reducing the file size.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to set up JPedal
&lt;/h2&gt;

&lt;p&gt;To get started using the JPedal PDF library, &lt;a href="https://www.idrsolutions.com/jpedal/your-trial" rel="noopener noreferrer"&gt;download the JPedal trial jar&lt;/a&gt; from our website, and &lt;a href="https://www.idrsolutions.com/docs/jpedal/tutorials/add-jpedal-as-a-maven-dependency" rel="noopener noreferrer"&gt;add it to your Java project&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to flatten layers in a PDF in Java
&lt;/h2&gt;

&lt;p&gt;By using the code snippet below you can flatten the target PDF. Using JPedal’s &lt;a href="https://www.idrsolutions.com/docs/jpedal/tutorials/pdf-manipulation/pdf-manipulator" rel="noopener noreferrer"&gt;PDF Manipulator&lt;/a&gt; class:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load the document&lt;/li&gt;
&lt;li&gt;Call the &lt;code&gt;flattenLayers()&lt;/code&gt; method&lt;/li&gt;
&lt;li&gt;Save the result
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="nc"&gt;PdfManipulator&lt;/span&gt; &lt;span class="n"&gt;pdf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;PdfManipulator&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;loadDocument&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"inputFile.pdf"&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;

&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flattenLayers&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;apply&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;writeDocument&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"outputFile.pdf"&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;reset&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;closeDocument&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Download JPedal
&lt;/h2&gt;

&lt;p&gt;You can download a &lt;a href="https://www.idrsolutions.com/jpedal/your-trial" rel="noopener noreferrer"&gt;JPedal trial&lt;/a&gt; jar to see how it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Learn more about &lt;a href="https://www.idrsolutions.com/docs/jpedal/tutorials/pdf-manipulation/pdf-manipulator" rel="noopener noreferrer"&gt;manipulating PDF files in Java&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We can help you &lt;a href="https://blog.idrsolutions.com/understanding-the-pdf-file-format/" rel="noopener noreferrer"&gt;better understand the PDF format&lt;/a&gt; as developers who have been working with the format for more than 2 decades!&lt;/p&gt;

</description>
      <category>pdf</category>
      <category>java</category>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>What are Form XObjects?</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Fri, 10 Apr 2026 09:13:52 +0000</pubDate>
      <link>https://forem.com/idrsolutions/what-are-form-xobjects-1nk5</link>
      <guid>https://forem.com/idrsolutions/what-are-form-xobjects-1nk5</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Form XObjects (not be confused with forms which are buttons, checkboxes, buttons, etc) are an advanced feature of the PDF file format. They can be thought of as sub-rountines (or even mini-PDFs) which are used on the main PDF display.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Form XObjects Work
&lt;/h2&gt;

&lt;p&gt;In the PDF command stream, a Do command can either reference and Xobject containing an Image or a Form.&lt;/p&gt;

&lt;p&gt;Both are defined in the Resources object. XForm objects can have their own Resources (fonts and images,etc) and even XForm objects. They also have a name (ie Fm1). So if you see &lt;strong&gt;Do /Fm1&lt;/strong&gt; in the PDF command stream, it is probably a form. Like images, they will be scaled and rotated using the current GraphicState settings but they offer more flexibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example in the Object Tree
&lt;/h2&gt;

&lt;p&gt;Here is what you might see in the Object tree (shown in Acrobat for a Form). Note it has a content stream of commands (which I have not shown).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiv4kj7202lif44kvalgn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiv4kj7202lif44kvalgn.png" alt="Object Tree" width="468" height="624"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Using Form XObjects
&lt;/h2&gt;

&lt;p&gt;Like images, this allows you to save space by reusing the Object over and over again. It is also popular with PDF creation tools because it allows you to logically separate out blocks – for example flattened form data, stamps or any logical item can be created as an Form XObject, complete with its own fonts and resources.&lt;/p&gt;

</description>
      <category>html</category>
      <category>pdf</category>
      <category>programming</category>
    </item>
    <item>
      <title>What are Form XObjects?</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Wed, 08 Apr 2026 10:41:51 +0000</pubDate>
      <link>https://forem.com/idrsolutions/what-are-form-xobjects-43p</link>
      <guid>https://forem.com/idrsolutions/what-are-form-xobjects-43p</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Form XObjects are an advanced component of the PDF specification. These are distinct from interactive form elements like buttons or checkboxes. You can view them as self-contained sub-routines or "mini-PDFs" that operate within the main document display.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Form XObjects Work
&lt;/h2&gt;

&lt;p&gt;Within a PDF's command stream, the Do operator calls an XObject, which can store either an image or a form. Both types are defined in the Resources dictionary. Form XObjects are unique because they can house their own internal Resources, such as fonts or images, and can even reference other Form XObjects.&lt;/p&gt;

&lt;p&gt;Each object is assigned a name, such as /Fm1. A Do /Fm1 instruction in the command stream usually indicates a form is being called. While they follow the current GraphicState settings for scaling and rotation, similar to images, they offer significantly more architectural flexibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example in the Object Tree
&lt;/h2&gt;

&lt;p&gt;In a tool like Acrobat, the object tree displays the Form as an object containing a content stream. This stream holds the specific drawing commands required to render that particular block of content.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mte060p4btkhsj2fnqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mte060p4btkhsj2fnqd.png" alt="Object Tree example" width="468" height="624"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Using Form XObjects
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reusing an object multiple times saves significant storage space.&lt;/li&gt;
&lt;li&gt;PDF creation software can logically separate content into distinct blocks.&lt;/li&gt;
&lt;li&gt;Items like stamps or flattened form data can be treated as individual units.&lt;/li&gt;
&lt;li&gt;Each object maintains its own independent set of fonts and resources.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>pdf</category>
      <category>html</category>
    </item>
    <item>
      <title>Convert PDF to HTML5: Preserving Layout</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Thu, 02 Apr 2026 15:02:13 +0000</pubDate>
      <link>https://forem.com/idrsolutions/convert-pdf-to-html5-preserving-layout-4ang</link>
      <guid>https://forem.com/idrsolutions/convert-pdf-to-html5-preserving-layout-4ang</guid>
      <description>&lt;p&gt;Whether you are a developer building a web application or a company aiming to digitize a massive archive, you have likely struggled to find the ideal way to display your files. You might transform a stylishly designed document to HTML, only to discover fonts are missing, images have shifted, and tables are a disorganized mess.&lt;/p&gt;

&lt;p&gt;If maintaining visual accuracy is your main goal, one particular solution outperforms all the others: BuildVu.&lt;/p&gt;

&lt;p&gt;Below is why BuildVu remains the top professional option for turning PDFs into HTML while keeping your original document design perfectly intact.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge: Why Most Solutions Fail
&lt;/h2&gt;

&lt;p&gt;Most PDF-to-HTML software isn't optimized for high-quality transformation. These tools try to estimate where paragraphs conclude and where columns start. Since PDF uses a locked-position format, this estimation causes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faulty Designs: Overlapping text layers and crooked visuals. Occasionally the page contents (sometimes even the text) are flattened into a single image.&lt;/li&gt;
&lt;li&gt;Font Swapping: Your specific corporate typefaces are swapped for basic styles like Arial or Times New Roman. This leads to further issues like text overcrowding and wrong sentence lengths.&lt;/li&gt;
&lt;li&gt;Heavy Coding: Cluttered, confusing HTML that is difficult to update. The resulting files are also bulkier, leading to slower performance in web browsers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pixel-Perfect Layout Preservation
&lt;/h2&gt;

&lt;p&gt;BuildVu avoids making assumptions about your design. It views the PDF as a graphical roadmap. Utilising an advanced processing system, it recreates the precise positioning of every single component.&lt;/p&gt;

&lt;h2&gt;
  
  
  Precision Mapping for Any Industry
&lt;/h2&gt;

&lt;p&gt;Whether you are processing detailed blueprints, premium catalogs, or technical guides featuring complex charts, the HTML results look exactly the same as the source PDF.&lt;/p&gt;

&lt;p&gt;Select here to view various examples of BuildVu's output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Font Conversion
&lt;/h2&gt;

&lt;p&gt;Typography represents a major obstacle during file transformation. When generating PDF files, creators can decide which specific fonts to include within the document.&lt;/p&gt;

&lt;p&gt;Many PDFs utilise embedded type to guarantee a uniform look on all devices, yet users often skip embedding standard fonts like Times New Roman to keep the total file size smaller.&lt;/p&gt;

&lt;h2&gt;
  
  
  Navigating Font Licensing and Compliance
&lt;/h2&gt;

&lt;p&gt;Certain font permissions are flexible (like the SIL Open Font License), while others are quite limited. There isn't a foolproof digital method to automatically identify a font's specific license.&lt;/p&gt;

&lt;p&gt;Several font agreements were written before the web existed, creating confusion over what usage is permitted. BuildVu was built to manage these legal uncertainties via unique configuration options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customizable Text Modes
&lt;/h2&gt;

&lt;p&gt;BuildVu processes typography in various ways based on your chosen Text Mode:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shapetext_nonselectable modes: BuildVu shows a static version of the type, preventing the generation of separate font files. Users cannot highlight text when using this setting.&lt;/li&gt;
&lt;li&gt;shapetext_selectable modes: BuildVu presents a static font appearance while also creating a compliant version of the font used for highlighting. This legal-safe font only stores character width data.&lt;/li&gt;
&lt;li&gt;realtext modes: BuildVu exports all integrated font files directly during the transformation process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Intelligent Fallback System
&lt;/h2&gt;

&lt;p&gt;If a PDF relies on fonts that weren't included, BuildVu keeps your file legible and polished by substituting high-tier open-source alternative fonts, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Liberation Serif and Liberation Sans&lt;/li&gt;
&lt;li&gt;Noto Sans Condensed plus Noto Sans Symbols2&lt;/li&gt;
&lt;li&gt;Tex Gyre Cursor&lt;/li&gt;
&lt;li&gt;GNU Unifont&lt;/li&gt;
&lt;li&gt;Anton&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Efficient Asset Management
&lt;/h2&gt;

&lt;p&gt;To maintain low file weights and peak efficiency, BuildVu employs clever reasoning for its font generation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Common Fonts: If integrated typefaces appear across several pages of the PDF, BuildVu only creates one instance of that specific font file.&lt;/li&gt;
&lt;li&gt;Versions and Coding: If BuildVu produces several font files with matching titles, it means the PDF contains distinct font variants under one name or links various symbols to one extraction code (necessitating a duplicate).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  High Performance with Small File Sizes
&lt;/h2&gt;

&lt;p&gt;Many worry that high-accuracy transformations result in huge files. BuildVu utilizes a streamlined SVG and HTML5 combined methodology.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optimization Through Hybrid Tech
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SVG for Visuals: Vector art remains sharp regardless of magnification.&lt;/li&gt;
&lt;li&gt;HTML for Script: Text stays interactive, ensuring it is SEO-optimized and indexed without the bulk of a large graphic file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Standard Converters vs BuildVu
&lt;/h2&gt;

&lt;p&gt;The following chart highlights the primary distinctions between typical conversion software and a pro-level tool like BuildVu:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplxfhhaxcaghu6h31qdl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplxfhhaxcaghu6h31qdl.png" alt="BuildVu vs other converters" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for Developers
&lt;/h2&gt;

&lt;p&gt;In contrast to opaque web-based services, BuildVu functions as a developer-centric library. It connects effortlessly with your current technology infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise-Grade Integration
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Java SDK / REST API: Execute bulk transformations automatically.&lt;/li&gt;
&lt;li&gt;Self-Hosted: Maintain data privacy on your local servers—avoiding the transfer of private files to external cloud providers.&lt;/li&gt;
&lt;li&gt;Customizable Viewer: Implement the IDRViewer to offer a polished publication-style or endless scrolling viewing interface right within the web browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trial BuildVu for free
&lt;/h2&gt;

&lt;p&gt;When you require online files to mirror their physical versions perfectly, BuildVu provides the exact accuracy you need. It closes the divide between the static nature of PDFs and the versatile capabilities of the contemporary internet.&lt;/p&gt;

</description>
      <category>pdf</category>
      <category>html</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>Write GIF image files in Java (Tutorial)</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Wed, 01 Apr 2026 09:06:37 +0000</pubDate>
      <link>https://forem.com/idrsolutions/write-gif-image-files-in-java-tutorial-4g57</link>
      <guid>https://forem.com/idrsolutions/write-gif-image-files-in-java-tutorial-4g57</guid>
      <description>&lt;p&gt;GIF images pose several challenges for Java developers, largely due to the format's age and the limitations of Java's native libraries. Despite these issues, a vast legacy of GIF files remains in use, requiring developers to find reliable ways to support them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with GIF in Java
&lt;/h2&gt;

&lt;p&gt;While Java’s standard ImageIO framework does support GIF files, its functionality is limited to static images. It lacks native, robust support for animations, which is the primary reason most developers use the format today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Options for Support
&lt;/h2&gt;

&lt;p&gt;To handle GIFs effectively, developers can look beyond the standard library to open-source or commercial alternatives, including Java wrappers for non-Java solutions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://commons.apache.org/proper/commons-imaging/" rel="noopener noreferrer"&gt;Apache Imaging&lt;/a&gt;: This is a free, open-source library that can write GIFs and other image formats.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.idrsolutions.com/jdeli/" rel="noopener noreferrer"&gt;JDeli&lt;/a&gt;: For a more comprehensive solution, we recommend JDeli. It is a pure, complete Java implementation that avoids the security risks associated with non-Java wrappers. JDeli integrates seamlessly with existing ImageIO code while offering a dedicated API for new development. In addition to full GIF support (&lt;a href="https://blog.idrsolutions.com/how-to-read-gif-files-in-java/" rel="noopener noreferrer"&gt;including reading&lt;/a&gt;), it handles modern, complex formats such as AVIF, HEIC, and WEBP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing GIF Files in Java: ImageIO vs. JDeli
&lt;/h2&gt;

&lt;p&gt;If you need to export images as GIFs in Java, you have two primary paths: the standard built-in library or a specialized library like JDeli.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Write a GIF Using ImageIO
&lt;/h3&gt;

&lt;p&gt;To use Java's native framework, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Prepare the output: Create a &lt;code&gt;File&lt;/code&gt; or &lt;code&gt;OutputStream&lt;/code&gt; for the GIF destination.&lt;/li&gt;
&lt;li&gt;Execute the write: Pass your &lt;code&gt;BufferedImage&lt;/code&gt;, the "GIF" format string, and your output object into the &lt;code&gt;write&lt;/code&gt; method.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/path/to/outputFile.gif"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;ImageIO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"GIF"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: By default, ImageIO uses Java's native engine. To use the JDeli engine within your existing ImageIO code, download the &lt;a href="https://www.idrsolutions.com/jdeli/#why-buy" rel="noopener noreferrer"&gt;JDeli trial JAR&lt;/a&gt;, install it via our &lt;a href="https://support.idrsolutions.com/jdeli/tutorials/how-to-configure-jdeli-with-imageio" rel="noopener noreferrer"&gt;support documentation&lt;/a&gt;, and enable the plugin.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Write a GIF Using JDeli
&lt;/h3&gt;

&lt;p&gt;Using JDeli directly provides more control and a more robust implementation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setup: Add the JDeli trial JAR to your class or module path.&lt;/li&gt;
&lt;li&gt;Prepare the output: Create a &lt;code&gt;File&lt;/code&gt; or &lt;code&gt;OutputStream&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Execute the write: Use the &lt;code&gt;JDeli.write&lt;/code&gt; method.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/path/to/outputFile.gif"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Standard version&lt;/span&gt;
&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"gif"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Typesafe version&lt;/span&gt;
&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;OutputFormat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;GIF&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Advanced version: Control compression and options&lt;/span&gt;
&lt;span class="nc"&gt;GifEncoderOptions&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GifEncoderOptions&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Choose JDeli?
&lt;/h2&gt;

&lt;p&gt;JDeli is a premier Java image library designed for professional-grade image manipulation. It simplifies reading, writing, and converting images with comprehensive GIF support. As developers with over a decade of hands-on experience in various file formats, we’ve built JDeli to help you master image processing in Java.&lt;/p&gt;

&lt;h3&gt;
  
  
  Explore More:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://support.idrsolutions.com/jdeli/gif-support/" rel="noopener noreferrer"&gt;Support Site&lt;/a&gt;: View related articles and documentation.&lt;/li&gt;
&lt;li&gt;GIF Tutorials: Learn how to &lt;a href="https://blog.idrsolutions.com/how-to-read-gif-files-in-java/" rel="noopener noreferrer"&gt;read GIF files in Java&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Format Guides: Discover &lt;a href="https://blog.idrsolutions.com/what-is-gif/" rel="noopener noreferrer"&gt;What is a GIF&lt;/a&gt;? and how JDeli improves your workflow.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>ai</category>
      <category>gif</category>
    </item>
    <item>
      <title>Great Enterprise-Level Java Image Library Recommendation</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Mon, 30 Mar 2026 09:10:23 +0000</pubDate>
      <link>https://forem.com/idrsolutions/great-enterprise-level-java-image-library-recommendation-3c5d</link>
      <guid>https://forem.com/idrsolutions/great-enterprise-level-java-image-library-recommendation-3c5d</guid>
      <description>&lt;p&gt;Everybody loves free stuff. In the field of software, developers use free solutions in countless projects. However, free solutions come with invisible costs as well, such as the time spent on self-maintenance, the risk of calling a third-party package, and so on.&lt;/p&gt;

&lt;p&gt;Therefore, a lot of IT teams choose commercial software to delegate these issues to the service provider. In this blog, I’ll introduce to you a great enterprise-level Java image library, &lt;a href="https://www.idrsolutions.com/jdeli/" rel="noopener noreferrer"&gt;JDeli&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes a Great Enterprise-Level Java Image Library?
&lt;/h2&gt;

&lt;p&gt;Team projects are usually at scale, so they are more likely to require a commercial license. Companies may be working with a supplier for many years, so support and communications is important. The provider is responsible for resolving bugs that may affect the team’s product and, ultimately, the customer experience. &lt;/p&gt;

&lt;p&gt;It should also be easy to integrate the library into existing projects, as doing so can reduce the onboarding time. Last but not least, if the library isn’t secure enough, teams with large projects shouldn’t adopt it either, since they are more likely to affect a large number of users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing JDeli
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.idrsolutions.com/jdeli/" rel="noopener noreferrer"&gt;JDeli&lt;/a&gt; is a Java image library developed by IDRSolutions. It is designed for Java developers and is used by large global companies like Abacus, Mercedes-Benz Bank, Clearsense, etc.&lt;/p&gt;

&lt;p&gt;You can read the &lt;a href="https://support.idrsolutions.com/jdeli/" rel="noopener noreferrer"&gt;support documentation&lt;/a&gt; to learn more about operations in JDeli.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is JDeli a Great Enterprise-Level Java Image Library?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Premium Support
&lt;/h3&gt;

&lt;p&gt;Support is provided quickly and directly by our in-house JDeli developers via email or &lt;a href="https://idrsolutions.my.site.com/s/request" rel="noopener noreferrer"&gt;via our online portal&lt;/a&gt;. Besides, customers can request access to our online portal to manage all their tickets in one place, making it easier for teams to keep track of previous tickets. If there’s a particularly urgent support issue, teams can use one of their remaining &lt;a href="https://support.idrsolutions.com/faq/how-do-high-priority-tickets-work" rel="noopener noreferrer"&gt;high-priority tickets&lt;/a&gt; so that our developers will prioritise the case.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easy Integration into Exisiting Java Projects
&lt;/h3&gt;

&lt;p&gt;JDeli is built entirely in Java, meaning there’s no native code, JNI, or platform headaches. This largely reduces onboarding time and makes it appealing for teams that need quick deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  High Security and Outstanding Performance
&lt;/h3&gt;

&lt;p&gt;JDeli does not use other third party Java libraries, so there’s no security flaws brought by other software when teams use JDeli. It is also highly optimized compared to other products. You can read the performance comparison &lt;a href="https://support.idrsolutions.com/jdeli/tutorials/performance-comparison" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Simple Commercial Pricing Plan
&lt;/h3&gt;

&lt;p&gt;JDeli can be used on a server license, distribution license or custom license. Unlike our competitors, we don’t have a dedicated sales team and the “sales” you talk to are our developers. We know the frustration and pain when IT teams try to figure out which pricing plan they should go for, therefore, JDeli’s &lt;a href="https://www.idrsolutions.com/jdeli/pricing" rel="noopener noreferrer"&gt;pricing&lt;/a&gt; is upfront and easy to understand, so teams can quickly calculate their costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;JDeli is a great enterprise-level Java image library. It comes with premium support, easy integration into existing Java projects, high security, outstanding performance, and a simple commercial pricing plan. Click [here](JDeli is a great enterprise-level Java image library. It comes with premium support, easy integration into existing Java projects, high security, outstanding performance, and simple commercial pricing plan. Click here to try it out!&lt;/p&gt;

&lt;p&gt;As experienced Java developers, we help you &lt;a href="https://blog.idrsolutions.com/working-with-images-in-java/" rel="noopener noreferrer"&gt;work with images in Java&lt;/a&gt; and bring over a decade of hands-on experience with many image file formats.) to try it out!&lt;/p&gt;

&lt;p&gt;As experienced Java developers, we help you work with images in Java and bring over a decade of hands-on experience with many image file formats.&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>Modifying PDF Documents Using JPedal Viewer</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Wed, 25 Mar 2026 09:46:26 +0000</pubDate>
      <link>https://forem.com/idrsolutions/modifying-pdf-documents-using-jpedal-viewer-4lfp</link>
      <guid>https://forem.com/idrsolutions/modifying-pdf-documents-using-jpedal-viewer-4lfp</guid>
      <description>&lt;p&gt;The &lt;a href="https://www.idrsolutions.com/jpedal/" rel="noopener noreferrer"&gt;JPedal&lt;/a&gt; Viewer includes a Tools menu for quick PDF edits like rotating, cropping, and copying. &lt;/p&gt;

&lt;p&gt;To display this menu, simply update your settings via the&lt;a href="https://www.idrsolutions.com/jpedal/java-pdf-viewer" rel="noopener noreferrer"&gt; Viewer&lt;/a&gt;’s &lt;a href="https://support.idrsolutions.com/jpedal/tutorials/viewer/customise-the-user-interface-in-the-java-pdf-viewer#tools-menu" rel="noopener noreferrer"&gt;preference window&lt;/a&gt; or the &lt;code&gt;properties.xml&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwb3w10hl7ic28c2adcui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwb3w10hl7ic28c2adcui.png" alt="JPedal Viewer preferences" width="712" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once enabled, you can perform the following operations:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11ohhoai62jz03n9hp8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11ohhoai62jz03n9hp8c.png" alt="JPedal Viewer Manipulation operations" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.idrsolutions.com/jpedal/your-trial" rel="noopener noreferrer"&gt;Download a JPedal trial jar&lt;/a&gt; and try for yourself!&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Learn more about the &lt;a href="https://support.idrsolutions.com/jpedal/tutorials/viewer/how-to-add-a-pdf-viewer-to-your-java-application" rel="noopener noreferrer"&gt;JPedal Viewer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Learn more about &lt;a href="https://support.idrsolutions.com/jpedal/tutorials/pdf-manipulation/pdf-manipulator" rel="noopener noreferrer"&gt;manipulating PDF files&lt;/a&gt; in Java.&lt;/p&gt;

&lt;p&gt;We can help you &lt;a href="https://blog.idrsolutions.com/understanding-the-pdf-file-format/" rel="noopener noreferrer"&gt;better understand the PDF format&lt;/a&gt; as developers who have been working with the format for more than 2 decades!&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>pdf</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Display Fillable PDF forms in a browser</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Thu, 19 Mar 2026 16:28:29 +0000</pubDate>
      <link>https://forem.com/idrsolutions/how-to-display-fillable-pdf-forms-in-a-browser-1p46</link>
      <guid>https://forem.com/idrsolutions/how-to-display-fillable-pdf-forms-in-a-browser-1p46</guid>
      <description>&lt;p&gt;Displaying fillable PDF forms in Chrome (or in any browser) saves a lot of the manual work of filling in forms, scanning them to then digitally present them. By making use of checkboxes, buttons and lists, fillable PDF files simplify this process. It also makes them widely accessible (all you need is a laptop or mobile device) and allows easy submission of the data into systems.&lt;/p&gt;

&lt;p&gt;There are four different ways to display fillable PDF forms in a browser:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Flatten form or display as a flattened form
&lt;/h2&gt;

&lt;p&gt;Our previous &lt;a href="https://blog.idrsolutions.com/what-is-pdf-form-flattening/" rel="noopener noreferrer"&gt;article&lt;/a&gt; explains how PDF form flattening works, including the advantages it has such as simplifying the PDF – I suggest checking that article out for more information. After the form is flattened, it can be displayed.&lt;/p&gt;

&lt;p&gt;Because the Forms themselves have been turned into images and non-editable text, the downside of this is that the Forms can no longer be edited. So this is a strictly display only option.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Client software
&lt;/h2&gt;

&lt;p&gt;There is a free PDF viewer (written in JavaScript) called  &lt;a href="https://mozilla.github.io/pdf.js/" rel="noopener noreferrer"&gt;PDF.js&lt;/a&gt; which runs inside the browser and displays flat PDF files. Recent versions have started adding support for some forms features. &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Using Browser-based software
&lt;/h2&gt;

&lt;p&gt;If you are using interactive content, there are software products which provide a browser front end and allow you to display PDF files. Adobe has a very powerful (and expensive) Enterprise solution called Adobe Experience Manager Forms ( previously known as LiveCycle). &lt;a href="//3.%20Using%20Browser-based%20software%20&amp;lt;br&amp;gt;%0AIf%20you%20are%20using%20interactive%20content,%20there%20are%20software%20products%20which%20provide%20a%20browser%20front%20end%20and%20allow%20you%20to%20display%20PDF%20files.%20Adobe%20has%20a%20very%20powerful%20(and%20expensive)%20Enterprise%20solution%20called%20Adobe%20Experience%20Manager%20Forms%20(%20previously%20known%20as%20LiveCycle).%20Forms%20Manager%20can%20automatically%20convert%20traditional%20input%20fields%20to%20digital%20forms%20which%20is%20a%20nice%20additional%20feature."&gt;Forms Manager&lt;/a&gt; can automatically convert traditional input fields to digital forms which is a nice additional feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Convert form to HTML5
&lt;/h2&gt;

&lt;p&gt;This is our prefered solution which we implement with our &lt;a href="https://www.idrsolutions.com/formvu/" rel="noopener noreferrer"&gt;FormVu&lt;/a&gt; product. FormVu is the best tool for filling PDF forms in HTML.  Browsers display HTML5 content (including interactive form elements). So why not convert the Forms into standalone HTML5 content.&lt;/p&gt;

&lt;p&gt;Which of the 4 ways will best suit you will depend on your exact requirements and budget, but there is a real choice of viable options to get your fillable PDF forms into the browser. It is important to note that these methods work with Microsoft Edge, Chrome and most other browsers.&lt;/p&gt;

&lt;p&gt;You can read our other articles to know what &lt;a href="https://blog.idrsolutions.com/what-are-pdf-forms/" rel="noopener noreferrer"&gt;PDF forms&lt;/a&gt; are and to &lt;a href="https://blog.idrsolutions.com/understanding-the-pdf-file-format/" rel="noopener noreferrer"&gt;understand the PDF file format&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>html</category>
      <category>pdf</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>What are AcroForms?</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Wed, 18 Mar 2026 12:02:55 +0000</pubDate>
      <link>https://forem.com/idrsolutions/what-are-acroforms-2dfj</link>
      <guid>https://forem.com/idrsolutions/what-are-acroforms-2dfj</guid>
      <description>&lt;h2&gt;
  
  
  What is an AcroForm?
&lt;/h2&gt;

&lt;p&gt;AcroForms are the original Forms technology added to the PDF file format to provide interactive form elements such as radio buttons, text fields, combo lists, etc in PDF files.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can I view an AcroForm?
&lt;/h2&gt;

&lt;p&gt;Most PDF Viewers will display AcroForms and Edge, Chrome, FireFox and Safari are also able to render them. Our &lt;a href="https://www.idrsolutions.com/jpedal/" rel="noopener noreferrer"&gt;JPedal&lt;/a&gt; PDF library provides a Java PDF Forms viewer.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can I fill in an AcroForm?
&lt;/h2&gt;

&lt;p&gt;Most PDF Readers also allow you to edit form fields and will save the changed values back into the original PDF file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is it possible to convert to HTML?
&lt;/h2&gt;

&lt;p&gt;Yes. Our &lt;a href="https://www.idrsolutions.com/formvu/" rel="noopener noreferrer"&gt;FormVu&lt;/a&gt; software converts AcroForms into standalone HTML forms which look and feel exactly like the original PDF document. FormVu is the best tool for filling PDF forms in HTML. You can even resave back into the PDF Form.&lt;/p&gt;

&lt;h2&gt;
  
  
  How is the Data stored inside a PDF?
&lt;/h2&gt;

&lt;p&gt;The data for an AcroForm is stored inside standard COS objects in a PDF. You will find most of the AcroForms data linked to the name ‘AcroForm’ Object inside a PDF file. This will then have a ‘Fields’ tag which will then list lots of PDF references which are all AcroForms. Some files will only have one or two, others contain hundreds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Form values can be used?
&lt;/h2&gt;

&lt;p&gt;The key value is the ‘FT’ entry which defines the type of Form object. What other values are present will depend on this value. Here are the possible values.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tx&lt;/strong&gt; = is a text field.&lt;br&gt;
&lt;strong&gt;Ch&lt;/strong&gt; = is a choice field.&lt;br&gt;
&lt;strong&gt;Btn&lt;/strong&gt; = is a Button field.&lt;br&gt;
&lt;strong&gt;Sig&lt;/strong&gt; = is a Signature field.&lt;/p&gt;

&lt;p&gt;Now we know the type of field, but there are multiple fields within most types. To find out which exact field you have you also need the value for tag name ‘Ff’, this is a byte sequence where each byte represents a different flag.&lt;br&gt;
These are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choice fields&lt;/strong&gt;&lt;br&gt;
byte 18=combo&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;text fields&lt;/strong&gt;&lt;br&gt;
byte 13=multiline&lt;br&gt;
byte 14=password&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;button fields&lt;/strong&gt;&lt;br&gt;
byte 16=radio&lt;br&gt;
byte 17=pushbutton&lt;br&gt;
&lt;strong&gt;Tx&lt;/strong&gt; = Text  (defaults to a single-line text field, the flags are options)&lt;br&gt;
byte 13 = multiline&lt;br&gt;
byte 14 = password&lt;br&gt;
&lt;strong&gt;Ch&lt;/strong&gt; = choice&lt;br&gt;
byte 18 = combo&lt;br&gt;
no flag = list field&lt;br&gt;
&lt;strong&gt;Btn&lt;/strong&gt; = button&lt;br&gt;
byte 16 = radio&lt;br&gt;
byte 17 = push button&lt;br&gt;
neither flag = checkbox button&lt;/p&gt;

&lt;p&gt;This gives you all the possible Form types for an AcroForm object. There will be lots of other values dependent on what type of Form you have. There can also be AP streams to show the Form value and JavaScript to provide validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where can I learn more about Forms?
&lt;/h2&gt;

&lt;p&gt;Forms are part of the PDF file specification which can be &lt;a href="https://pdfa.org/resource/iso-32000-2/" rel="noopener noreferrer"&gt;freely downloaded&lt;/a&gt; from the PDF Association &lt;a href="https://pdfa.org/resource/iso-32000-2/" rel="noopener noreferrer"&gt;website&lt;/a&gt;. We also have a large number of related articles &lt;a href="https://blog.idrsolutions.com/?s=forms" rel="noopener noreferrer"&gt;on our blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>html</category>
      <category>ai</category>
      <category>programming</category>
      <category>pdf</category>
    </item>
    <item>
      <title>PDF.js Alternative for PDF Documents</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Fri, 13 Mar 2026 09:59:02 +0000</pubDate>
      <link>https://forem.com/idrsolutions/pdfjs-alternative-for-pdf-documents-4g8e</link>
      <guid>https://forem.com/idrsolutions/pdfjs-alternative-for-pdf-documents-4g8e</guid>
      <description>&lt;h2&gt;
  
  
  Display Documents on Web Apps
&lt;/h2&gt;

&lt;p&gt;PDF.js is maintained by Mozilla for Firefox, but it works reasonably well with other browsers. It allows you to display PDF documents using HTML5 and WebAssembly as part of an HTML page.&lt;/p&gt;

&lt;p&gt;Mozilla assigns a limited budget to work on the built-in Firefox PDF reader, though most PDF.js development is now done by unpaid volunteers. Which is why there are &lt;a href="https://github.com/mozilla/pdf.js/issues/11759" rel="noopener noreferrer"&gt;issues&lt;/a&gt; that persist with this library. The commercial solutions based on PDF.js offer support but they are not without problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternative to PDF.js
&lt;/h2&gt;

&lt;p&gt;Furthermore, PDF.js parses files directly in the browsers, which can cause performance issues and high memory usage due to intense processing. One of the biggest problems is the lack of rights management, as PDF files are transmitted to the user and decoded locally.&lt;/p&gt;

&lt;p&gt;Since PDF.js renders PDF documents on the fly, it limits its indexing of long documents by search engines like Google, harming SEO.&lt;/p&gt;

&lt;p&gt;BuildVu is the best tool for converting PDF to HTML. It simplifies the process by converting PDF to HTML in advance so that only HTML is transmitted to the end user, not the original PDF file. This solves the issues of file security, processing load and supporting multiple browsers. BuildVu can also reduce the bandwidth used as it removes the need to send the whole file just to display some of the content.&lt;/p&gt;

&lt;p&gt;You also get the flexibility of HTML/SVG, which you can further tinker with to your own use case. Both are widely supported, whereas PDF.js is designed primarily for Firefox, which has a worldwide share of &lt;a href="https://gs.statcounter.com/" rel="noopener noreferrer"&gt;less than 3%&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tailored for Developers
&lt;/h2&gt;

&lt;p&gt;BuildVu’s conversion leads to simple and clean code, which you can use to create your own interactive solutions with HTML, SVG and JSON assets.&lt;/p&gt;

&lt;p&gt;PDF.js uses canvas and relies on JavaScript for rendering, including the ability to zoom. With an SVG-based solution like BuildVu, you get vector zooming without the need for JavaScript.&lt;/p&gt;

&lt;p&gt;BuildVu can run entirely on your own servers, ensuring compliance with privacy regulations and keeping sensitive data safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, PDF.js may be a good option for some use cases using PDFs in their web application, but &lt;a href="https://www.idrsolutions.com/buildvu/" rel="noopener noreferrer"&gt;BuildVu&lt;/a&gt; provides a more stable foundation for commercial usage. Behind the PDF.js alternative is a close-knit team of developers who have been improving the product for more than a decade.&lt;/p&gt;

</description>
      <category>pdf</category>
      <category>javascript</category>
      <category>html</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Convert AVIF to JPG in Bulk (Tutorial)</title>
      <dc:creator>IDRSolutions</dc:creator>
      <pubDate>Wed, 11 Mar 2026 15:54:29 +0000</pubDate>
      <link>https://forem.com/idrsolutions/how-to-convert-avif-to-jpg-in-bulk-tutorial-18oh</link>
      <guid>https://forem.com/idrsolutions/how-to-convert-avif-to-jpg-in-bulk-tutorial-18oh</guid>
      <description>&lt;p&gt;If you’re working with a large number of AVIF files, converting them to JPG in bulk can streamline your workflow, especially when the JPG format is required for multiple applications.&lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://www.idrsolutions.com/jdeli/avif" rel="noopener noreferrer"&gt;read, write and convert&lt;/a&gt; AVIF files in Java with JDeli, our pure Java library.&lt;/p&gt;

&lt;p&gt;AVIF (AV1 Image File Format) is a modern image format offering superior compression efficiency compared to JPEG and PNG. Converting images to AVIF results in significantly smaller file sizes with high visual quality. This leads to faster loading times and reduced bandwidth use on the web and other platforms.&lt;/p&gt;

&lt;p&gt;In this article, I’ll show you how to convert AVIF images to JPG using Java and &lt;a href="https://support.idrsolutions.com/jdeli/tutorials/converting/jpg-converter" rel="noopener noreferrer"&gt;JDeli&lt;/a&gt;, making your files easier to work with. JDeli stands out as one of the most powerful Java libraries for handling and manipulating images.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bulk convert AVIF to JPG using Java
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download the &lt;a href="https://www.idrsolutions.com/jdeli/#why-buy" rel="noopener noreferrer"&gt;JDeli trial jar&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Process image if needed (scale, sharpen, lighten, watermark, etc)&lt;/li&gt;
&lt;li&gt;Write out BufferedImage as JPG image file
BufferedImage bufferedImage = JDeli.read(new File("avifImageFile.avif"));
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Read AVIF image into Java&lt;/span&gt;

&lt;span class="n"&gt;bufferedImage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;operations&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;apply&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;BufferedImage&lt;/span&gt; &lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Process image (Optional)&lt;/span&gt;

&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bufferedImage&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"jpg"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"jpgImageFile.jpg"&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// Write out BufferedImage as JPEG image file&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Export AVIF to JPG in one line of code
&lt;/h2&gt;

&lt;p&gt;With the JDeli.convert() method you can save PNG as JPG in just one line of code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using File&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;convert&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;inFile&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;outFile&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using InputStream and OutputStream&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;convert&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;InputStream&lt;/span&gt; &lt;span class="n"&gt;inputStream&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;OutputStream&lt;/span&gt; &lt;span class="n"&gt;outputStream&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"jpg"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using byte[]&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;byte&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;outputData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;convert&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;byte&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;inputData&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"jpg"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configure Output Settings
&lt;/h2&gt;

&lt;p&gt;You can use this option to specify an &lt;a href="https://files.idrsolutions.com/maven/site/jdeli/apidocs/com/idrsolutions/image/jpeg/options/JpegEncoderOptions.html" rel="noopener noreferrer"&gt;EncoderOptions&lt;/a&gt; object for configuring output settings such as image compression.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;JDeli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;convert&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;inFile&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;EncoderOptions&lt;/span&gt; &lt;span class="n"&gt;outputOptions&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;File&lt;/span&gt; &lt;span class="n"&gt;outfile&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to bulk convert AVIF to JPG from the command line
&lt;/h2&gt;

&lt;p&gt;You can turn PNG to JPG using command line or bash, bat, and PowerShell scripts. This method also enables JDeli to be invoked from any programming language that supports creating a child process.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;java &lt;span class="nt"&gt;-jar&lt;/span&gt; jdeli.jar –convert jpg &lt;span class="s2"&gt;"inputFileOrDir"&lt;/span&gt; &lt;span class="s2"&gt;"outputDir"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this tutorial you learned how to bulk convert AVIF to JPG in bulk. JDeli has AVIF support for reading and writing as well, you read our &lt;a href="https://support.idrsolutions.com/jdeli/avif-support/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; to find out more.&lt;/p&gt;

&lt;p&gt;As experienced Java developers, we help you &lt;a href="https://blog.idrsolutions.com/working-with-images-in-java/" rel="noopener noreferrer"&gt;work with images in Java&lt;/a&gt; and bring over a decade of hands-on experience with many image file formats.&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>avif</category>
    </item>
  </channel>
</rss>
