private void _queueGeneration(FileVersion sourceFileVersion, FileVersion destinationFileVersion) {

    if (_fileVersionIds.contains(destinationFileVersion.getFileVersionId())) {

      return;
    }

    boolean generateImages = false;

    String extension = destinationFileVersion.getExtension();

    if (extension.equals("pdf")) {
      generateImages = true;
    } else if (DocumentConversionUtil.isEnabled()) {
      String[] conversions = DocumentConversionUtil.getConversions(extension);

      for (String conversion : conversions) {
        if (conversion.equals("pdf")) {
          generateImages = true;

          break;
        }
      }
    }

    if (generateImages) {
      _fileVersionIds.add(destinationFileVersion.getFileVersionId());

      sendGenerationMessage(
          DestinationNames.DOCUMENT_LIBRARY_PDF_PROCESSOR,
          sourceFileVersion,
          destinationFileVersion);
    }
  }
  @Override
  public boolean isSupported(String mimeType) {
    if (Validator.isNull(mimeType)) {
      return false;
    }

    if (mimeType.equals(ContentTypes.APPLICATION_PDF)
        || mimeType.equals(ContentTypes.APPLICATION_X_PDF)) {

      return true;
    }

    if (DocumentConversionUtil.isEnabled()) {
      Set<String> extensions = MimeTypesUtil.getExtensions(mimeType);

      for (String extension : extensions) {
        extension = extension.substring(1);

        String[] targetExtensions = DocumentConversionUtil.getConversions(extension);

        if (Arrays.binarySearch(targetExtensions, "pdf") >= 0) {
          return true;
        }
      }
    }

    return false;
  }
  private void _generateImages(FileVersion sourceFileVersion, FileVersion destinationFileVersion)
      throws Exception {

    InputStream inputStream = null;

    try {
      if (sourceFileVersion != null) {
        copy(sourceFileVersion, destinationFileVersion);

        return;
      }

      if (_hasImages(destinationFileVersion)) {
        return;
      }

      String extension = destinationFileVersion.getExtension();

      if (extension.equals("pdf")) {
        if (destinationFileVersion instanceof LiferayFileVersion) {
          try {
            LiferayFileVersion liferayFileVersion = (LiferayFileVersion) destinationFileVersion;

            File file = liferayFileVersion.getFile(false);

            _generateImages(destinationFileVersion, file);

            return;
          } catch (UnsupportedOperationException uoe) {
          }
        }

        inputStream = destinationFileVersion.getContentStream(false);

        _generateImages(destinationFileVersion, inputStream);
      } else if (DocumentConversionUtil.isEnabled()) {
        inputStream = destinationFileVersion.getContentStream(false);

        String tempFileId =
            DLUtil.getTempFileId(
                destinationFileVersion.getFileEntryId(), destinationFileVersion.getVersion());

        File file = DocumentConversionUtil.convert(tempFileId, inputStream, extension, "pdf");

        _generateImages(destinationFileVersion, file);
      }
    } catch (NoSuchFileEntryException nsfee) {
    } finally {
      StreamUtil.cleanUp(inputStream);

      _fileVersionIds.remove(destinationFileVersion.getFileVersionId());
    }
  }
  private void _generateImages(FileVersion fileVersion) throws Exception {

    try {
      if (_hasImages(fileVersion)) {
        return;
      }

      String extension = fileVersion.getExtension();

      if (extension.equals("pdf")) {
        if (fileVersion instanceof LiferayFileVersion) {
          try {
            LiferayFileVersion liferayFileVersion = (LiferayFileVersion) fileVersion;

            File file = liferayFileVersion.getFile(false);

            _generateImages(fileVersion, file);

            return;
          } catch (UnsupportedOperationException uoe) {
          }
        }

        InputStream inputStream = fileVersion.getContentStream(false);

        _generateImages(fileVersion, inputStream);
      } else if (DocumentConversionUtil.isEnabled()) {
        InputStream inputStream = fileVersion.getContentStream(false);

        String tempFileId =
            DLUtil.getTempFileId(fileVersion.getFileEntryId(), fileVersion.getVersion());

        File file = DocumentConversionUtil.convert(tempFileId, inputStream, extension, "pdf");

        _generateImages(fileVersion, file);
      }
    } catch (NoSuchFileEntryException nsfee) {
    } finally {
      _fileVersionIds.remove(fileVersion.getFileVersionId());
    }
  }