FreeShow icon indicating copy to clipboard operation
FreeShow copied to clipboard

Improved PowerPoint import

Open JelyMe opened this issue 1 year ago • 3 comments

Hey there!

The long boring story

I have recently discovered your wonderful tool and I have begun playing around with it. I program things often and so I thought I would attempt to integrate a feature myself and then merge. I couldn't really figure out how your importing worked and it would probably be best for someone more advanced in TypeScript to implement this.

I would love to migrate my church to use this software but we pretty much require a fancy Powerpoint. This could be solved by using the export as pdf button but me being me thought, "huh, surely libre has a node integration." Which lead me to finding this: https://www.npmjs.com/package/libreoffice-convert?activeTab=readme

The request

My request is that you add an extra option for importing Powerpoints that uses this libreoffice package to convert them to PDFs and then to PNGs. This could reuse existing PDF to PNG logic, and I could even program it but I would need a lot of help to figure everything out.

Thank you so much for making this tool! You are doing the Lord's work lol

JelyMe avatar May 05 '24 05:05 JelyMe

Thanks. Should be doable. I need to redo the entire PDF import also sometime, because it often does not work. Maybe also just have a direct PPT renderer.

vassbo avatar May 08 '24 15:05 vassbo

Great! I remember ProPresenter used to have an option to use PowerPoint as it's renderer. (It was very unstable but I think it just sent inputs to the PowerPoint in present mode.) I wonder if Libre Office will let you do something similar. (Or hopefully better)

JelyMe avatar May 08 '24 19:05 JelyMe

Thanks. Should be doable. I need to redo the entire PDF import also sometime, because it often does not work. Maybe also just have a direct PPT renderer.

If you do manage to integrate a PPT renderer, this would remove the single reason we currently use OpenLP (which is good software, but FreeShow has some great featues we'd love to be able to use). OpenLP spawns a PowerPoint instance in the background and controls it remotely - perhaps this is more feasible than integrating a renderer directly into FreeShow.

XYQuadrat avatar May 11 '24 07:05 XYQuadrat

For my tuppence-worth - ProPresenter seems to convert PPT to PNGs for use in shows. EasyWorship used to have a PowerPoint integration (like OpenLP, running in the background) but they struggled to keep it up-to-date thanks to MS constantly changing the API "under the hood." At my Home Church we moved to exporting from PPT to PNG before using slides in EasyWorship as the built-in renderer just wasn't reliable.

I appreciate that how this goes will depend on which renderer you use, but I guess all I'm saying is "There be dragons!"

Would definitely love to see support for a direct render or improved PPT import though!

halcycon avatar Aug 05 '24 10:08 halcycon

I agree it could be difficult keeping a direct render working, most of the NPM packages converting PPT to PNG/PDF requires LibreOffice to be installed on the computer (which makes sense, because it will take care of the converting and be mostly up to date). But I'm not sure it's the route to go, there are many awesome web tools to easily do the convertion.

vassbo avatar Aug 05 '24 11:08 vassbo

i have workaraound, i'm using that feature on Propresenter or WorshipTools Presenter, instead of launch Libre with limited PowerPoint feature, maybe we can use other way. Just load the PowerPoint using Office Powerpoint and start the slideshow as usual but in window mode or on your free display, then you can use ndi (ndi.tv) screen capture to capture it and ndi webcam to output that as ndi source OR if we are using Freeshow we can use screen capture as input source. With this we have full powerpoint feature, transition and animation.

chanx avatar Aug 14 '24 13:08 chanx

This is really the most reasonable solution, I think. As an EasyWorship user, I can say that power point rendering was always sketchy when it came to animation and I think the devs have better things to do than chase down integrating with Microsoft's Powerpoint API.

There might be a good feature request in this, however. Maybe integrate a "power point view" as a show? My first thought would be a "Windows" or "Powerpoint" show object under the "Shows" tab. It would just capture an open window, presumably by the name of it's title bar (I'm surprised this isn't already there). Tailor it to just pick open Powerpoint windows as a way to help users "integrate" powerpoint into FreeShow.

Happy to flesh out a feature request if it seems like a reasonable thing to do.

joelgraff avatar Aug 16 '24 02:08 joelgraff

yes looks like that is more reasonable and easier to integrate than we integrating Office Powerpoint API to show the ppt slide. Maybe we can add note at documentation to a workaround for people need to show powerpoint slide using freeshow

chanx avatar Aug 16 '24 07:08 chanx

@joelgraff So it can work like this?: The user drops a .ppt/.pptx file in the projects panel, this creates basically a capture reference that requires a opened window on the computer with the same name as the file (an open presentation in PowerPoint or simular), if it does not find it then explain what the user must do, and when it finds it play it as any other window capture! I guess the drawback it that the user then has to focus on the presentation to be able to navigate through!

I guess this could work if the window is streamed, or for more advanced setups, but for simple one output setups if easier to just turn off the FreeShow output "Always on top" and just presenting the presentation as normal when needed! (That's what I do at least)

vassbo avatar Aug 16 '24 07:08 vassbo

Has anyone here used https://github.com/ykhwong/ppt-ndi ? I've had quite a bit of success using this alongside EasyWorship and OBS previously, could be worth a look for re-using some code! In a nutshell it runs PPT in the background and then outputs the show over NDI, but it does so more reliably than anything else I have used.

halcycon avatar Aug 16 '24 07:08 halcycon

yes, of course, if user need to control the powerpoint using keyboard or remote pointer,he had to make ppt window/presenter view window active. but if they control using ppt add-ins (like ppt controller via osc) they don't need to make ppt window active all the time. Example of PPT OSC is https://oscpoint.com/ . We can integrate the ppt controller to Bitfocus Companion and let the pastor control through a mobile phone.

@vassbo and you're right, simple show is just turn off FreeShow output and show PPT, but we can't duplicate the powerpoint to more than one display on our room and to obs/atem for streaming.

So it is better if we can integrate in FreeShow.

chanx avatar Aug 16 '24 07:08 chanx

@joelgraff The user drops a .ppt/.pptx file in the projects panel, this creates basically a capture reference that requires a opened window on the computer with the same name as the file (an open presentation in PowerPoint or similar), if it does not find it then explain what the user must do, and when it finds it play it as any other window capture! I guess the drawback it that the user then has to focus on the presentation to be able to navigate through!

That sounds about like what I had in mind. Drag and drop is a nice touch. Otherwise, just pick the file when creating an empty PPT show. You can integrate a series of external renderers to launch or allow the user to add their own. Add an option to auto-disable "Always On Top" when the PPT renderer is running and you've probably got a fairly effective way of showing powerpoint slides without internal rendering.

As for finding the actual window by the title bar, it's a bit of a second-class hack in my mind (like buffer stuffing to automate keypresses), but it should be pretty robust. I imagine just inspecting the title of open windows for two tokens, the filename and the application name, would likely work with whatever renderer gets used. If the renderer is launched from FreeShow, you can probably maintain a more direct link to the process, I would think. Really out of my depth, here. I've only automated Office using COM...

Clearly it would be better to directly integrate the PPT rendering, but if EasyWorship still can't get it right, I don't see that you'll ever have any peace from PPT renderer bug reports in the issue tracker, lol. Regardless, an external solution certainly seems to provide a valuable feature for (presumably) minimal development cost.

joelgraff avatar Aug 19 '24 12:08 joelgraff

Glad to hear this @jayye-jpg. I might have a solution to make PDF integration more seamless. I'll see what can be done about the PPT.

vassbo avatar Aug 19 '24 16:08 vassbo

Yes, definitely PPT integration has to be improved. It is currently one step backward compared to ProPresenter as it's a 2 step process... Any solution needs to be mindful that it cannot require any external PowerPoint to be in focus, but it must be controlled by FreeShow. Otherwise you can't use the PC for anything else at the same time.

winternet-studio avatar Aug 25 '24 19:08 winternet-studio

Yes, definitely PPT integration has to be improved. It is currently one step backward compared to ProPresenter as it's a 2 step process... Any solution needs to be mindful that it cannot require any external PowerPoint to be in focus, but it must be controlled by FreeShow. Otherwise you can't use the PC for anything else at the same time.

Sorry, but i'm disagree with you, even ProPresenter cannot handle PPT, ProPresenter only can import PPT as image so it won't retain any animation or transition inside the slide. More step process is required if we need to keep all PPT animation and transition and any effect the slide maker made to the slideshow.

If you do not want PowerPoint to be in focus, you can use other PPT Controller like PPT OSC. and you just can leave the powerpoint load in background and do anything else.

It won't be an easy task maybe not possible to integrate all PPT function inside other program than the Powerpoint itself. ProPresenter can't do it either.

Btw, lately some of our church young preacher not design slide using PPT anymore, they are using Canva, according to them, Canva has more and updated feature in designing the slide, animation, and text, image effect. still haven't has chance to try that feature, if Freeshow can directly load the Canva slideshow link will be awesome.

chanx avatar Aug 26 '24 02:08 chanx

@chanx You can actually show Canva presentations, Google Slides & online PowerPoints directly using the Website item. More here: https://github.com/ChurchApps/FreeShow/issues/251

vassbo avatar Aug 26 '24 06:08 vassbo

Sorry, but i'm disagree with you, even ProPresenter cannot handle PPT, ProPresenter only can import PPT as image so it won't retain any animation or transition inside the slide.

I never said ProPresenter was handling it perfectly - only that importing PDFs in FreeShow is yet another step backwards compared to ProPresenter.

Showing online PowerPoints using the Website item sounds interesting... but what about controlling it...

winternet-studio avatar Aug 26 '24 08:08 winternet-studio

@winternet-studio You need to click one time on the presentation in the output window to focus, but when that's done you can control it as normal with the keyboard.

vassbo avatar Aug 26 '24 09:08 vassbo

@jayye-jpg @winternet-studio In version 1.2.6 FreeShow has native PDF support, meaning you can drag/drop and PDF file into the project and it will render it, there's also a "convert to images" button converting into a show with image slides allowing for more control.

I still haven't figured out the PPT yet.

vassbo avatar Aug 29 '24 12:08 vassbo

@jayye-jpg @winternet-studio In version 1.2.6 FreeShow has native PDF support, meaning you can drag/drop and PDF file into the project and it will render it, there's also a "convert to images" button converting into a show with image slides allowing for more control.

Nice.

I still haven't figured out the PPT yet.

Okay... I presume you have already looked in the source code for OpenLP? It's in the folder /openlp/plugins/presentations/lib/

winternet-studio avatar Sep 03 '24 15:09 winternet-studio

@winternet-studio You need to click one time on the presentation in the output window to focus, but when that's done you can control it as normal with the keyboard.

Yes, but that doesn't solve the problem. We need to use other programs on the computer (like handling OBS) while we run the presentation...

winternet-studio avatar Sep 03 '24 15:09 winternet-studio

@winternet-studio Managed to find this package that should do the trick: https://github.com/rse/slideshow

vassbo avatar Sep 04 '24 13:09 vassbo

If anyone wants to try it out, here it is: https://github.com/ChurchApps/FreeShow/releases/tag/v1.2.7-beta.1

Just drag & drop a PowerPoint/Keynote (.ppt/.pptx/.key) file into a project. Currently tested on Windows, but it should work on macOS as well.

vassbo avatar Sep 07 '24 05:09 vassbo

Not work on my device, just showing Loading and nothing happened. I'm using Office 365 powerpoint. is this version is not compatible?

chanx avatar Sep 07 '24 13:09 chanx

@chanx What OS do you have? Where did it stop? Did FreeShow manage to open the app, or did you do it manually? Also if you started the presentation mode, and FreeShow still shows just "Loading..." that probably means that it can't properly find the window, so what does the title of the presentation window look like? Does it include "PowerPoint" at all, or the file name?

vassbo avatar Sep 09 '24 05:09 vassbo

@chanx What OS do you have? Where did it stop? Did FreeShow manage to open the app, or did you do it manually? Also if you started the presentation mode, and FreeShow still shows just "Loading..." that probably means that it can't properly find the window, so what does the title of the presentation window look like? Does it include "PowerPoint" at all, or the file name?

mine is windows 11, office 365, no powerpoint window/app is open at all, just showing Loading...

image

image

the window title is the filename.pptx -- PowerPoint

chanx avatar Sep 09 '24 08:09 chanx

Thanks, I'll check it out!

vassbo avatar Sep 09 '24 09:09 vassbo

@chanx I think I figured it out, the file path did not get added to newly added elements, only previously added worked (which I had).

vassbo avatar Sep 09 '24 12:09 vassbo

@jayye-jpg Beta 1 had some issues. Please wait for version 1.2.7-beta.2

vassbo avatar Sep 10 '24 05:09 vassbo

Should be working here: https://github.com/ChurchApps/FreeShow/releases/tag/v1.2.7-beta.2

vassbo avatar Sep 10 '24 09:09 vassbo