* The font file stream to check
* @return true if the meta data is valid, false otherwise
* @throws ValidationException when checking fails
*/
protected boolean checkFontFileMetaData(PDFontDescriptor fontDesc, PDStream fontFile) throws ValidationException {
PDMetadata metadata = null;
try {
metadata = fontFile.getMetadata();
} catch (IllegalStateException e) {
fontContainer.addError(new ValidationError(ValidationConstants.ERROR_METADATA_FORMAT_UNKOWN,
"The Metadata entry doesn't reference a stream object"));
return false;
}
if (metadata != null) {
// --- Filters are forbidden in a XMP stream
if (metadata.getFilters() != null && !metadata.getFilters().isEmpty()) {
fontContainer.addError(new ValidationError(ValidationConstants.ERROR_SYNTAX_STREAM_INVALID_FILTER,
"Filter specified in font file metadata dictionnary"));
return false;
}
// --- extract the meta data content
byte[] mdAsBytes = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
InputStream metaDataContent = metadata.createInputStream();
IOUtils.copyLarge(metaDataContent, bos);
IOUtils.closeQuietly(metaDataContent);
IOUtils.closeQuietly(bos);
mdAsBytes = bos.toByteArray();
} catch (IOException e) {