> I searched everywhere, but there wasn’t a single library that had all the functionality I needed. I ended up going with python-pptx, since it seemed to be the best of imperfect options. As you can guess from the name, it’s a Python library. It was a bit inconvenient to integrate with the existing typescript stack, but it was worth the effort. At Listen, we believe in using the best tool for a task instead of sticking with one language just for the sake of i<p>I find that calling a library in a different language can often be more effort than it's worth; in many cases the effort needed for a cross-language integration can take a lot more time than just accepting the limitations of the tools available in your language. Other times, it's easier to choose the language based on tool availability.<p>IE, once I used IKVM (a C# tool that converts .jars to .Net dlls) to call Rhino, a Javascript interpreter, because there weren't good Javascript interpreters in .Net. That turned out to be flakey, so then I tried running Javascript in a 2nd process, where the 2nd process was Java. That also turned out to be flakey, because there were some corner cases in my interprocess communication library.