<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shinya Maeyama</title>
    <description>The latest articles on DEV Community by Shinya Maeyama (@merikonjatta).</description>
    <link>https://dev.to/merikonjatta</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F592348%2Ff4dd0d3e-be2e-4900-b1b5-ef46a688bf38.png</url>
      <title>DEV Community: Shinya Maeyama</title>
      <link>https://dev.to/merikonjatta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/merikonjatta"/>
    <language>en</language>
    <item>
      <title>Generate PPTX presentations with SlidePack</title>
      <dc:creator>Shinya Maeyama</dc:creator>
      <pubDate>Mon, 04 Sep 2023 04:09:08 +0000</pubDate>
      <link>https://dev.to/merikonjatta/generate-pptx-presentations-with-slidepack-2olk</link>
      <guid>https://dev.to/merikonjatta/generate-pptx-presentations-with-slidepack-2olk</guid>
      <description>&lt;p&gt;&lt;a href="https://slidepack.io/"&gt;SlidePack&lt;/a&gt; is a Web API we developed that lets you generate PowerPoint presentations using template PPTX files and JSON data. A typical use case is when you need to create weekly or monthly reports in PowerPoint that are basically the same every time, just with different data inserted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2Z1hKlt2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x5jnappkxv0eic4ji7ep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2Z1hKlt2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x5jnappkxv0eic4ji7ep.png" alt="SlidePack screenshot" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In January 2022 we began providing a free plan so that anyone can experiment with SlidePack. Here's a quick tutorial to help you take it for a test drive.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is SlidePack?
&lt;/h2&gt;

&lt;p&gt;In short, it's a templating engine that outputs PPTX files. It's provided as a Web API with &lt;a href="https://slidepack.io/en/pricing"&gt;free and paid plans&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Upload a zip file containing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A PPTX file with &lt;code&gt;{placeholder}&lt;/code&gt;s&lt;/li&gt;
&lt;li&gt;JSON data&lt;/li&gt;
&lt;li&gt;Images and videos you want to embed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and you get a rendered PPTX as output.&lt;/p&gt;

&lt;p&gt;The free plan lets you render 50 slides per month. Your first month also comes with 500 free slides so you can experiment with different template PPTX designs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating your first template PPTX and JSON
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.slidepack.io/en"&gt;Official Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.slidepack.io/en/examples"&gt;Example templates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Template syntax is similar to HTML templating engines you may be familiar with. Place &lt;code&gt;{text in curly braces}&lt;/code&gt; in your PPTX like so:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qEs6DdOt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rbnzs4i9n4dmhfboefqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qEs6DdOt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rbnzs4i9n4dmhfboefqi.png" alt="Basic template with placeholders" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and prepare your data.json like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json-doc"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"slides"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"template"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Text boxes can be placed anywhere in a slide."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Fonts and styles from the template are preserved."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Text box properties like auto-sizing are also preserved."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text4"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"You can"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text5"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"replace"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text6"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"text in"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text7"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tables."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to get this output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ClWu0bdC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t3wkoj2140vv6mr1iidq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ClWu0bdC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t3wkoj2140vv6mr1iidq.png" alt="Basic output slide" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are different syntaxes for things like variable table rows with arrays, manipulating charts, embedding images and videos, and overwriting existing styles. Your template can of course contain multiple slides, and your output can repeat any of those slides any number of times.&lt;/p&gt;

&lt;p&gt;For a full list of features and how to use them, please refer to our &lt;a href="https://docs.slidepack.io/en"&gt;API Docs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test driving the API on the Web Console
&lt;/h2&gt;

&lt;p&gt;You can try out the SlidePack API without writing client code by using the &lt;a href="https://slidepack.io/app"&gt;Web Console&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You'll need to sign up for an account if you haven't yet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NUjcYyCw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jls3atxts25shn3e9n6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NUjcYyCw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jls3atxts25shn3e9n6h.png" alt="Screenshot of web console" width="800" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After logging in,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to Sessions and click &lt;strong&gt;Create New Session&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload Zip&lt;/strong&gt; on your newly created session.&lt;/li&gt;
&lt;li&gt;Select your zip and upload. &lt;a href="https://docs.slidepack.io/en/examples"&gt;(Grab a sample zip here)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload Zip and Render&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If your render is successful, you'll be taken back to the Sessions page where you can download the output file.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Using the API
&lt;/h2&gt;

&lt;p&gt;From here on we'll guide you through how to render a PPTX programmatically through the API.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create your API token&lt;/li&gt;
&lt;li&gt;Create a Session&lt;/li&gt;
&lt;li&gt;Upload your zip file&lt;/li&gt;
&lt;li&gt;Render and download output file&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Create your API token &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Authentication is done with a Bearer token in the HTTP header. Click &lt;strong&gt;Create New API Token&lt;/strong&gt; in the Dashboard. to get yours. Copy and paste this token somewhere safe, and make sure you don't share it with anyone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a Session &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The first thing to do is create a rendering Session. We'll refer to the created Session UUID when we upload, render, and download files for this particular rendering run.&lt;/p&gt;

&lt;p&gt;Issue a POST request like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; &lt;span class="s2"&gt;"POST"&lt;/span&gt; &lt;span class="s2"&gt;"https://slidepack.io/sessions"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer {api_token}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to get a response like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json-doc"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"session"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"uuid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"f0155f9f-d3f3-4fa9-9f8d-70f8fd2f9c36"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_rendered"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"created_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2020-08-13T13:14:32.000000Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"updated_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2020-08-13T13:14:32.000000Z"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"upload"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://slidepack-api.s3.ap-northeast-1.amazonaws.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"POST"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"enctype"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"multipart/form-data"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"acl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"private"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sessions/zip/f0155f9f-d3f3-4fa9-9f8d-70f8fd2f9c36.zip"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Content-Type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"application/zip"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"X-Amz-Security-Token"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"***"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"X-Amz-Credential"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"***"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"X-Amz-Algorithm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AWS4-HMAC-SHA256"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"X-Amz-Date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"20200813T131432Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Policy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"***"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"X-Amz-Signature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"***"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;session&lt;/code&gt; contains general info about this session along with its UUID. &lt;code&gt;upload&lt;/code&gt; contains parameters needed for the upload step.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upload your zip file &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;You'll be uploading your input zip file directly to SlidePack's S3 bucket using multipart/form-data.&lt;/p&gt;

&lt;p&gt;A minimum input zip needs to contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;template.pptx&lt;/strong&gt; - A PPTX file with placeholders&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;data.json&lt;/strong&gt; - Data to populate the template with&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can browse &lt;a href="https://docs.slidepack.io/en/examples"&gt;our examples&lt;/a&gt; to get started.&lt;/p&gt;

&lt;p&gt;All the information you need for this step is provided in the &lt;code&gt;upload&lt;/code&gt; field of the session data received in the previous step:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;upload.action&lt;/code&gt; is the URL you'll be POSTing to&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;upload.params&lt;/code&gt; is the form data to POST along with your file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We just need to add the actual file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; &lt;span class="s2"&gt;"POST"&lt;/span&gt; &lt;span class="s2"&gt;"https://slidepack-api.s3.ap-northeast-1.amazonaws.com/"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"acl=private"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"key=sessions/zip/{uuid}.zip"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type=application/zip"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"X-Amz-Security-Token=***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"X-Amz-Credential=***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"X-Amz-Algorithm=AWS4-HMAC-SHA256"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"X-Amz-Date=***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"Policy=***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"X-Amz-Signature=***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@/path/to/your/data.zip"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll get a &lt;code&gt;204 No Content&lt;/code&gt; if your upload is successful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Render and download output file &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Once uploading is done, we tell SlidePack to execute the render.&lt;/p&gt;

&lt;p&gt;We do this by POSTing to &lt;code&gt;https://slidepack.io/sessions/{uuid}/render&lt;/code&gt;, where &lt;code&gt;uuid&lt;/code&gt; is &lt;code&gt;session.uuid&lt;/code&gt; received in the session info.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; &lt;span class="s2"&gt;"POST"&lt;/span&gt; &lt;span class="s2"&gt;"https://slidepack.io/sessions/{uuid}/render"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer {api_token}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll get a response like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json-doc"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"session"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"uuid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"f0155f9f-d3f3-4fa9-9f8d-70f8fd2f9c36"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_rendered"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Render succeeded."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"created_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2020-08-13T13:14:32.000000Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"updated_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2020-08-13T13:17:43.000000Z"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"download_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://slidepack-api.s3.ap-northeast-1.amazonaws.com/..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now all you need to do is get the output file from the &lt;code&gt;download_url&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://slidepack-api.s3.ap-northeast-1.amazonaws.com/..."&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; output.pptx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Or, you can visit that URL in your browser.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback welcome!
&lt;/h2&gt;

&lt;p&gt;That's all for a quick run through the basics of SlidePack. Let us know in the comments if you get stuck or have any questions.&lt;/p&gt;

&lt;p&gt;We're not a well known service, but we've been serving non-trivial business uses for several years now.&lt;/p&gt;

&lt;p&gt;We are constantly adding and refining features too. Any feedback/feature requests are welcome!&lt;/p&gt;

&lt;p&gt;Contact form:  &lt;a href="https://slidepack.io/en/contact"&gt;https://slidepack.io/en/contact&lt;/a&gt;&lt;br&gt;
Our rep Satoshi Kita on twitter: &lt;a href="https://twitter.com/kitar"&gt;https://twitter.com/kitar&lt;/a&gt;&lt;/p&gt;

</description>
      <category>powerpoint</category>
      <category>tutorial</category>
      <category>productivity</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
