Apache PDFBox
Copyright 2014 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

Based on source code originally developed in the PDFBox, JempBox and
FontBox projects.
Copyright (c) 2002-2007, www.pdfbox.org
Copyright (c) 2006-2007, www.jempbox.org

Based on source code originally developed in the PaDaF project.
Copyright (c) 2010 Atos Worldline SAS

