This is a list of libraries and applications that tend to get discussed frequently in the Other Open Source Projects forum
, but feel free to add others as well. It would be helpful if you added a few words why a particular package stands out.
The AccessingFileFormats lists lots of projects that can read and write various file formats.
- iText - iText can create PDF files, fill in AcroForms, and modify PDF files in limited ways. It's also possible to generate RTF and HTML output with the same code. A demo of some basic features can be found at ItextExample. Article on How to sign a PDF using iText. Example of How to create a submittable form. An introduction using iText 5 is here.
- An older version of iText (2.1) used to be licensed under the Lesser GPL (LGPL), which is much more amenable to business use than the Affero GPL (AGPL) under which iText is currently licensed. This is particularly important if you want to use iText in web applications. iText 2 has most of the functionality of iText 5, so you may want to consider using it instead: jar file, javadocs
- PDFBox can create PDFs, and apply various transformations to existing PDF files. A demo of some basic features can be found at PDFBoxExample.
- FlyingSaucer is a library that can render XHTML/CSS to a Swing component, and -with the help of iText- to a PDF file. Introduction
- Apache FOP is a library for rendering XML into properly layouted formats like PDF, RTF, AWT, PNG and others. It does this by using XML-FO transformations.
- POI - Read and write Excel files. There are also parts that deal with Word, PowerPoint, Visio and Outlook files, but they're less advanced, although usable.
- JFreeChart - versatile charting package. An example web app showing how to use it in a servlet can be found here. A simple demo can be found at JFreeChartDemo. cewolf is a JSP tag library on top of JFreeChart?.
- JChart2D - another 2D charting package, this one aimed more at realtime graphics in desktop applications. A simple demo can be found at JChart2DDemo
- Axis 2 - a complete SOAP web service stack with lots of tools for debugging. See also WebServicesFaq.
- ImageJ - an image processing application and library that can read and write plenty of file formats, and even more with the help of the Jimi plugin
- Displaytag is an JSP tag library for creating, customizing and displaying tables, including pagination and data export.
- Java Media Framework - Sun API for working with various media formats (which is no longer being developed). Code examples can be found here and here (The links on the latter page seem to be broken; an archive of those code samples is available here.) JMF can play Flash 2 files. Through the FOBS library (which itself is a Java layer on top of the ffmpeg library), support for Windows Media can be added to JMF. Jffmpeg adds a few more audio and video formats like MPEG-4 and Ogg/Vorbis. There's also an MP3 plugin for JMF. Several libraries for working with ID3 tags are listed in this thread. FMJ is an open source alternative to JMF. Xuggler is another Java binding for ffmpeg.
- QuickTime? for Java - Apple API for working with various media formats. The Java API QT4J is not open source, but it is free to use, and can play Flash 5 files. Unfortunately, it is no longer supported, and has problems on 64-bit Java. The Amateur project puts a Swing GUI on top of QT4J. On OS X, the Flip4Mac Components can be used to add support for Windows Media to QT4J (be sure to do a "Custom Install", lest you inadvertently install Silverlight as well). Also on OS X, Perian adds support for a wide range of audio and video formats. (Note that QT4J, Perian and Flip4Mac are not open source, but free to use.)
- VLC has Java bindings through which many video formats can be played. An example Java client can be found here. vlcj is an alternative, more recently updated, Java binding for VLC.
- Xiph.org has Java implementations of the Ogg, Vorbis and Shout libraries.
- LAMEOnJ is a Java API on top of the LAME MP3 encoder.
Q: How can I create an image containing a barcode?
Numerous libraries are available that can do this: Barcode4j, JBarcodeBean, Barbecue, JBars. The iText library can create PDFs containing barcodes.