diff --git a/bigbluebutton-web/src/java/org/bigbluebutton/presentation/PresentationUrlDownloadService.java b/bigbluebutton-web/src/java/org/bigbluebutton/presentation/PresentationUrlDownloadService.java index e041c8af2cf14e6b4364eaf4b1f4a7d28f92a760..f28a59b3163175bc49475c84066a28a02eda3906 100755 --- a/bigbluebutton-web/src/java/org/bigbluebutton/presentation/PresentationUrlDownloadService.java +++ b/bigbluebutton-web/src/java/org/bigbluebutton/presentation/PresentationUrlDownloadService.java @@ -49,20 +49,29 @@ public class PresentationUrlDownloadService { + File.separator + presentationId); final String presentationFilter = presentationId; - FilenameFilter filter = new FilenameFilter() { + FilenameFilter pdfFilter = new FilenameFilter() { public boolean accept(File dir, String name) { - return name.startsWith(presentationFilter); + return name.startsWith(presentationFilter) + && name.toLowerCase().endsWith("pdf"); } }; - File[] children = sourceMeetingPath.listFiles(filter); + File[] matches = sourceMeetingPath.listFiles(pdfFilter); + if (matches.length != 1) { + // No PDF presentation was found, we look for an image presentation + FilenameFilter imgFlter = new FilenameFilter() { + public boolean accept(File dir, String name) { + return name.startsWith(presentationFilter); + } + }; - if (children.length != 1) { - log.error("Not matching file with prefix {} found at {}", + matches = sourceMeetingPath.listFiles(imgFlter); + } + if (matches.length != 1) { + log.info("Not matching PDF file with prefix {} found at {}", sourceMeetingId, sourceMeetingPath); - return; } else { - File sourcePresentationFile = children[0]; + File sourcePresentationFile = matches[0]; String filenameExt = FilenameUtils .getExtension(sourcePresentationFile.getName()); String presId = generatePresentationId(presentationId); @@ -72,13 +81,25 @@ public class PresentationUrlDownloadService { presentationDir, presId); String newFilePath = uploadDir.getAbsolutePath() + File.separatorChar + newFilename; + File newPresentation = new File(newFilePath); - pageExtractor.extractPage(sourcePresentationFile, new File( - newFilePath), presentationSlide); + if (sourcePresentationFile.getName().toLowerCase().endsWith("pdf")) { + pageExtractor.extractPage(sourcePresentationFile, new File( + newFilePath), presentationSlide); + } else { + try { + FileUtils.copyFile(sourcePresentationFile, newPresentation); + } catch (IOException e) { + log.error("Could not copy presentation {} to {}", + sourcePresentationFile.getAbsolutePath(), + newPresentation.getAbsolutePath()); + e.printStackTrace(); + } + } - File pres = new File(newFilePath); processUploadedFile(destinationMeetingId, presId, "default-" - + presentationSlide.toString() + "." + filenameExt, pres); + + presentationSlide.toString() + "." + filenameExt, + newPresentation); } }