# Efficient Way to Generate PDFs from Glide Table Without High Update Usage

**URL:** <https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793>\
**Category:** Ask for Help\
**Created:** [May 8, 2025, 9:12pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793 "2025-05-08T21:12:34Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 8, 2025, 9:12pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/1 "2025-05-08T21:12:34Z")

</div>

Hello everyone,  
I’m working with a Glide table that includes several columns such as product description, quantity, price, total amount, and 5-6 images. I’d like to generate a PDF containing this information. It should be dynamic, as the data in the document will keep changing — this PDF is meant for work order management, and each work order needs its own PDF document.

I’m fine with a process that requires a couple of extra clicks, like using a print option and then saving as PDF. Could anyone guide me on how to achieve this?

Please note: I prefer not to use services like PDFMonkey or DocsAutomator, as they consume multiple updates (about 3 updates per PDF), and my app needs to generate a large number of PDFs.

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 8, 2025, 9:59pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/2 "2025-05-08T21:59:03Z")

</div>

You might love Gideon’s video !

> [@How to Generate PDF Orders in Glide](https://community.glideapps.com/t/how-to-generate-pdf-orders-in-glide/81447):
>
> Want to create PDF orders directly in your Glide app? This new tutorial shows exactly how to do it – using only native Glide features. books In this step-by-step guide, you’ll learn how to: white_check_mark Generate unique order numbers white_check_mark Auto-fill product names, quantities, and prices white_check_mark Design a clean HTML layout for your order white_check_mark Convert it into a downloadable PDF – all inside Glide! No external tools. Just smart logic and native act…

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 9, 2025, 10:59am UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/3 "2025-05-09T10:59:57Z")

</div>

Hi Maxime,  
Thanks for the reference, video helped me out a lot

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 9, 2025, 11:45am UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/4 "2025-05-09T11:45:24Z")

</div>

I am glad it helped! Thanks to @Gideon_Lahav_Busines !

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 9, 2025, 8:50pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/5 "2025-05-09T20:50:15Z")

</div>

Hello again,

I’ve completed about 90% of the document following the video tutorial, but I’m struggling with adding images. My Glide table has a column with multiple images, and I need to incorporate these dynamic images into my HTML document.

For single images, there’s no problem. However, I’m having difficulty with the multiple dynamic images. I’ve tried using split column functions, then attempted using a joined list followed by split column, but I’ve encountered Glide restrictions each time.

Could someone please help me resolve this issue of adding multiple dynamic images from my Glide table to my HTML document?

Thank you.

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 9, 2025, 9:07pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/6 "2025-05-09T21:07:17Z")

</div>

What have you done so far?

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 9, 2025, 9:17pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/7 "2025-05-09T21:17:44Z")

</div>

I’m developing a work order management app that needs to generate PDFs after each completed task. These PDFs need to include all data from the work order table, which contains columns like:

- Dates
- Customer names
- Assignee information
- Services and products (as dynamic inline lists that can vary per work order)
- Customer and assignee signatures

I’ve completed most of the functionality, but I’m currently stuck on handling multiple dynamic images in the PDF generation process.

Specifically, I’m using Glide’s native multiple image column, which I need to split up individually. However, I can’t split it directly using the split column feature. My current approach is:

1. First, using a joined list to convert the images to text format
2. Then using split column on that text
3. But I can’t use split column in the template, so I’m trying to use joined list again
4. Then sourcing that to a template column

This is where I get lost and stuck. I need a solution to properly handle these multiple dynamic images in my PDF generation workflow.

 ![glide community](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/e/b/eb6631f770fc55bcfdd3ad7186705ab420cfa1bf.png)

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 9, 2025, 10:03pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/8 "2025-05-09T22:03:23Z")

</div>

You could use JavaScript to handle the joined list and convert it to valid HTML and then use the return in your template. Would that work for you?

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 9, 2025, 10:15pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/9 "2025-05-09T22:15:34Z")

</div>

Although I don’t have coding skills, I’ve attempted to use JavaScript (with ChatGPT’s help) to solve my image display problem, but I couldn’t get it working or fully understand how to implement it. A simple JavaScript solution that could convert joined list of image URLs into proper HTML that would work.

Here’s the code ChatGPT suggested, which I’ve tried:

javascript

```auto
// First attempt:
let images = Array.isArray(p1) ? p1 : (p1 ? p1.split(",") : []);
return images.map(img => `<img src="${img}" style="width:100%;max-width:300px;margin-bottom:10px;">`).join('');

// Second attempt:
let images = p1 ? p1.split(",") : [];
return images.map(img => `<img src="${img}" style="width:100%;max-width:300px;margin-bottom:10px;">`).join('');

```

I’m hoping for a straightforward solution that can take joined list of image URLs and convert them to HTML that would display properly in my PDF template.

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 9, 2025, 10:29pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/10 "2025-05-09T22:29:24Z")

</div>

> [@Mehmet\_Karaja](#):
>
> ```auto
> let images = p1 ? p1.split(",") : [];
> return images.map(img => `<img src="${img}" style="width:100%;max-width:300px;margin-bottom:10px;">`).
> 
> ```

You could actually just set:

```js
const images = p1 ? p1.split(",") : [];
return images.map(img => `<img src="${img}" style="width:100%;max-width:300px;margin-bottom:10px;">`).join('');

```

It all depends on what should your final HTML look like. What is your final HTML template that you have and/or want to get?

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 9, 2025, 10:41pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/12 "2025-05-09T22:41:00Z")

</div>

````html
<!DOCTYPE html>
<html>
<head>
  <style>
    body {
      font-family: Arial, sans-serif;
    }
    table {
      width: 100%;
      border-collapse: collapse;
      margin-bottom: 20px;
    }
    th, td {
      border: 1px solid #ddd;
      padding: 8px;
      vertical-align: top;
      min-height: 20px;
      min-width: 100px;
      word-break: break-word;
    }
    th {
      background-color: #f2f2f2;
      text-align: left;
    }
    .title {
      background-color: #f2f2f2;
    }
    .header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding-bottom: 50px; /* Added padding below header */
    }
    .header-left img {
      max-height: 60px;
    }
    .header-right {
      text-align: right;
    }
    .header-right h2 {
      margin: 0;
    }
    .company-info {
      font-size: 14px;
      margin-top: 5px;
    }
    .wo-images {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 10px;
      margin-top: 10px;
    }
    .wo-images img {
      width: 100%;
      height: auto;
      max-height: 250px;
      object-fit: contain;
      border: 1px solid #ddd;
      padding: 4px;
      background-color: #fff;
    }
  </style>
</head>
<body>

<!-- Header row -->
<div class="header">
  <div class="header-left">
    <img src="{{logo}}" alt="Logo">
  </div>
  <div class="header-right">
    <h2>SERVİS FORMU</h2>
    <p class="company-info">
      Tel: &nbsp; &nbsp; 
    </p>
  </div>
</div>

<!-- Customer and Service Info -->
<table>
  <tr>
    <th colspan="2">MÜŞTERİ BİLGİLERİ</th>
    <th colspan="2">SERVİS BİLGİLERİ</th>
  </tr>
  <tr>
    <td class="title">Müşteri Adı</td>
    <td>{{customer_name}}&nbsp;</td>
    <td class="title">Tarih</td>
    <td>{{date}}&nbsp;</td>
  </tr>
  <tr>
    <td class="title">Yetkili Kişi</td>
    <td>{{contact_person}}&nbsp;</td>
    <td class="title">Servis No</td>
    <td>{{form_number}}&nbsp;</td>
  </tr>
  <tr>
    <td class="title">Telefon Numarası</td>
    <td>{{telephone}}&nbsp;</td>
    <td class="title">Teknisyen Adı</td>
    <td>{{user_1}}&nbsp;</td>
  </tr>
  <tr>
    <td class="title">Adres Bilgisi</td>
    <td>{{address}}&nbsp;</td>
    <td class="title">Adres Bilgisi</td>
    <td>Kadıköy Mah. Bağdat Cad. No:102/A İzmit/Kocaeli</td>
  </tr>
</table>

<!-- Job Info -->
<table>
  <tr>
    <th colspan="4">İŞ BİLGİLERİ</th>
  </tr>
  <tr>
    <td class="title">İş Türü</td>
    <td>{{title}}&nbsp;</td>
    <td class="title">Cihaz Tipi</td>
    <td>{{product_type}}&nbsp;</td>
  </tr>
  <tr>
    <td class="title">Marka</td>
    <td>{{brand}}&nbsp;</td>
    <td class="title">Model</td>
    <td>{{model}}&nbsp;</td>
  </tr>
</table>

<!-- Customer Report -->
<table>
  <tr>
    <th colspan="2">MÜŞTERİ BİLDİRİMİ</th>
  </tr>
  <tr>
    <td colspan="2">{{details}}&nbsp;</td>
  </tr>
</table>

<!-- Product/Service Table -->
<table>
  <tr>
    <th style="width: 50%;">ÜRÜN / HİZMET</th>
    <th style="width: 10%;">MİKTAR</th>
    <th style="width: 20%;">B.FİYAT</th>
    <th style="width: 20%;">TOPLAM TUTAR</th>
  </tr>

  {{table_rows1}}
  {{table_rows2}}

</table>

<!-- Total Row -->
<table style="width: 100%; border-collapse: collapse; margin-bottom: 20px;">
  <tr>
    <td style="font-size: 12px; font-style: italic; font-weight: normal; text-align: left; border: none;">
      Fiyatlarımıza KDV dahil değildir
    </td>
    <td style="text-align: right; border: none; padding-right: 120px;">
      <strong>GENEL TOPLAM: {{grand_total}} </strong>
    </td>
  </tr>
</table>

<!-- Technician Notes -->
<table>
  <tr>
    <th colspan="2">TEKNİSYEN AÇIKLAMALARI</th>
  </tr>
  <tr>
    <td colspan="2">{{user_notes}}&nbsp;</td>
  </tr>
</table>

<!-- Signatures -->
<table>
  <tr>
    <th>SERVİS TEKNİSYENİ İMZA / KAŞE</th>
    <th>MÜŞTERİ İMZA / KAŞE</th>
  </tr>
  <tr>
    <td>
      <img src="{{image_usersignature}}" alt="Teknisyen İmza" style="max-height: 80px;">
    </td>
    <td>
      <img src="{{image_cussignature}}" alt="Müşteri İmza" style="max-height: 80px;">
    </td>
  </tr>
</table>

<!-- Work Order Images -->
{{image_rows}}

</body>
</html>

script

 “```”

At the bottom {{image_rows}} i am intending to show all the images
````

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 9, 2025, 10:52pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/13 "2025-05-09T22:52:31Z")

</div>

Edit your message and add

````auto
```html

````

at the beginning. And “```” at the end

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 9, 2025, 11:00pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/14 "2025-05-09T23:00:56Z")

</div>

![glide23](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/7/4/74266398c54615b845f85eef738e57d6771852a4.png)

 ![Glide30](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/2/f/2fef3a829116b18fed9f89aea2426b0a23cf746c.jpeg)

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 9, 2025, 11:27pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/15 "2025-05-09T23:27:20Z")

</div>

You can use the JavaScript I gave you and use that column in your template to replace {{image\_rows}}.

Ask your chat GPT prompt to make it fit in your existing HTML code. I am sure it will make a beautiful container for the images.

Show me what it gives you 😉

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 9, 2025, 11:31pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/16 "2025-05-09T23:31:53Z")

</div>

it is very late night here in my country (2:30 AM) Tomorrow morning i will try again and let you know.

Thanks a lot for your time

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 9, 2025, 11:38pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/17 "2025-05-09T23:38:11Z")

</div>

You can ping me anytime!

There are also a lot of people here to help in this wonderful community.

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 10, 2025, 9:21am UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/18 "2025-05-10T09:21:50Z")

</div>

Hi Maxime,

I cannot thank you enough for your help - you truly saved my day! Your code worked perfectly; I only needed to add a bit more padding on both sides.  
Everything else functioned exactly as expected.

 ![glıde community](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/f/1/f1d9bca5eefb034de3bafba6c83d203f7185fa66.jpeg)

---

<div class="post-metadata">

**Author:** ![MaximeBaker](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/maximebaker/32/80877_2.png) [@MaximeBaker](https://community.glideapps.com/u/MaximeBaker)\
**Post date:** [May 10, 2025, 10:49am UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/19 "2025-05-10T10:49:30Z")

</div>

The result is beautiful! 🥳

---

<div class="post-metadata">

**Author:** ![Kyle\_Brabec](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kyle_brabec/32/87373_2.png) [@Kyle\_Brabec](https://community.glideapps.com/u/Kyle_Brabec)\
**Post date:** [May 13, 2025, 4:56pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/20 "2025-05-13T16:56:18Z")

</div>

How were you able to have the signature save down onto your pdf? I’m trying to build a very simple “docusign” like structure. I have used Appscript for the pdf creation and send a link back to Glide. Now I have the url of my pdf but I’d like a way that can sign it then have it placed on the pdf. Then have the url replaced with a pdf of a signed document.

---

<div class="post-metadata">

**Author:** ![Mehmet\_Karaja](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mehmet_karaja/32/87257_2.png) [@Mehmet\_Karaja](https://community.glideapps.com/u/Mehmet_Karaja)\
**Post date:** [May 13, 2025, 6:02pm UTC](https://community.glideapps.com/t/efficient-way-to-generate-pdfs-from-glide-table-without-high-update-usage/81793/21 "2025-05-13T18:02:03Z")

</div>

My structure is different from yours — I don’t have a URL for the PDF, and I’m using Glide’s default tables, whereas I believe you’re working with Google Sheets. Unfortunately, I don’t have much experience with that workflow. In Glide Tables, it’s quite straightforward: I store the signatures in a single image column and reference that column in my HTML using a Template column.
