# API do generowania PDF z HTML dla dokumentów jednostronicowych

> Certyfikaty, bilety, identyfikatory, etykiety i jednostronicowe faktury jako wektorowe PDF-y z szablonu HTML — jedno zapytanie albo cały plik CSV naraz.

Opublikowano 2026-11-04 · https://shareglint.com/pl/pdf-generation-api

API Shareglint zamienia szablon HTML i CSS w **jednostronicowy, wektorowy PDF**: certyfikat, bilet na wydarzenie, identyfikator, etykietę wysyłkową, jednostronicową fakturę albo kupon. Projekt zapisujesz raz, a potem każdy PDF to jedno zapytanie HTTP z polami, które się zmieniają — albo jedno zlecenie hurtowe dla całego arkusza. Zakres jest celowo wąski: **każdy PDF z szablonu ma dokładnie jedną stronę** o rozmiarze szablonu, bez podziału na strony, nagłówków i stopek. Jeśli potrzebujesz raportu na 12 stron, to nie jest właściwe narzędzie — niżej piszemy, czego użyć zamiast niego.

## Co dostajesz

- **Jedna strona o rozmiarze szablonu.** Strona ma szerokość i wysokość szablonu w pikselach CSS przy 96 px na cal, bez marginesów i z wydrukowanymi tłami. Szablon 1123×794 to A4 w poziomie, 794×1123 to A4 w pionie, 816×1056 to US Letter. Bok szablonu może mieć do 4 000 px.
- **Tekst wektorowy.** Twój HTML drukuje Chrome, więc tekst jest ostry przy każdym powiększeniu, da się go zaznaczyć i przeszukać. Zdjęcia i logotypy zostają obrazkami w swojej rozdzielczości.
- **Ten sam szablon jako PNG.** Poproś o `"format": "png"`, a ten sam projekt wróci jako obrazek do maila albo posta w social media; `pdf` daje wersję do druku. Każdy format to osobny plik i osobny render.
- **Jeden limit.** PDF zużywa jeden render, tak jak obrazek. Te same wartości w tym samym formacie nie kosztują nic: wraca istniejący plik.

Formaty dostępne na każdym koncie: PNG, JPEG, WebP, PDF, GIF, MP4. Znak wodny planu Free trafia też do PDF-ów; plany płatne od $9 miesięcznie go nie mają.

## Jeden PDF na zapytanie

Zapisz szablon raz — własny HTML i CSS z polami `{{ field }}`, kopię wbudowanego szablonu albo projekt z edytora wizualnego — a potem go renderuj:

```bash
curl -X POST "https://shareglint.com/v1/images?wait=true" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "template": "certificate",
    "format": "pdf",
    "modifications": {
      "name": "Amelia Nowak",
      "course": "Projektowanie API — kurs zaawansowany",
      "date": "4 listopada 2026",
      "issuer": "Daniel Okafor"
    }
  }'
```

Z `?wait=true` odpowiedź zawiera `url` gotowego pliku (z końcówką `.pdf`, serwowanego jako `application/pdf`); bez tego parametru dostajesz `id` do odpytywania albo webhook po zakończeniu. Wbudowane szablony `certificate`, `event-ticket` i `event-badge` renderują się w każdym presecie rozmiaru, ale do druku zwykle przyda się własny szablon w rozmiarze papieru.

Szablon na A4 w poziomie zaczyna się tak — rozmiar strony to rozmiar szablonu, więc CSS układa tylko to, co ma się na niej znaleźć:

```html
<div class="page">
  <p class="kicker">Certificate of completion</p>
  <h1 data-autofit>{{ name }}</h1>
  <p>has completed <strong>{{ course }}</strong> on {{ date }}.</p>
  <p class="sign">{{ issuer }}</p>
</div>
```

```css
.page { width: 1123px; height: 794px; padding: 72px; box-sizing: border-box;
        font-family: Roboto, sans-serif; background: #fffaf2; color: #1f2937; }
h1 { font-size: 64px; }
```

Zapisz go przez `POST /v1/templates` z `width: 1123` i `height: 794`. `data-autofit` zmniejsza długie nazwisko tak, żeby zmieściło się w swoim polu, zamiast zawijać je na podpis. Kroje pisma to rodziny zainstalowane na naszym rendererze (`GET /v1/fonts`); własnego pliku z fontem nie wgrasz.

## Cały arkusz naraz

Dla grupy 300 kursantów albo konferencji na 2000 osób wyślij jedno zlecenie hurtowe zamiast 300 zapytań:

```bash
curl -X POST "https://shareglint.com/v1/batches" \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "template": "certificate",
    "format": "pdf",
    "csv_url": "https://docs.google.com/spreadsheets/d/…/edit?usp=sharing"
  }'
```

Kolumny trafiają do pól po nazwie (wielkość liter i spacje nie mają znaczenia; można je też przypisać jawnie przez `columns`). Kolumna `filename` nadaje nazwę każdemu plikowi w ZIP-ie, a kolumna `id` wraca przy wyniku każdego wiersza. Wiersze renderują się w tle; `GET /v1/batches/{id}` pokazuje postęp, a na końcu adres każdego PDF-a i jedno archiwum ZIP. Limit wierszy na zlecenie według planu: Free 50, Starter 500, Pro 1 000, Scale 2 000, Business 5 000. Każdy wiersz to jeden render, a wiersze już wyrenderowane z tymi samymi wartościami są darmowe. Strona Bulk w panelu robi to samo z wgranego pliku CSV, z darmowym podglądem pierwszych wierszy. Formaty CSV i mapowanie kolumn opisuje [poradnik o renderowaniu hurtowym](https://shareglint.com/en/guides/bulk-og-images-from-csv-google-sheets) (po angielsku).

## Linki zamiast plików

Podpisany adres renderuje PDF przy pierwszym otwarciu: `https://shareglint.com/i/{account}/{template}.pdf?name=…&s=…`, gdzie `s` to HMAC liczony twoim sekretem do podpisów. Rozszerzenie jest częścią podpisu, więc link podpisany dla `.png` nie otworzy PDF-a. To dobre rozwiązanie dla linków „pobierz bilet” w mailu: żaden plik nie powstaje, dopóki odbiorca nie kliknie, a drugie kliknięcie obsługuje pamięć podręczna.

## Czego nie robi

Precyzja w sprawie ograniczeń oszczędzi ci później migracji:

- **Żadnych dokumentów wielostronicowych z szablonów.** Nie ma podziału na strony, powtarzanych nagłówków, numerów stron ani tabel przelewających się na drugą stronę. Treść, która nie mieści się w wysokości szablonu, zostaje ucięta, a nie przeniesiona na kolejną stronę.
- **PDF-y ze zrzutów to wycinki, nie dokumenty.** `POST /v1/screenshots` z `"format": "pdf"` i `full_page` drukuje publiczną stronę internetową jako kilka stron wielkości okna przeglądarki. To wystarczy, żeby zarchiwizować wygląd strony, ale nie jest dokumentem podzielonym na strony.
- **Bez formularzy, podpisów, PDF/A i łączenia plików.** Wynikiem jest wydrukowana strona, a nie formularz do wypełnienia, i nie łączymy plików.
- **Bez własnych krojów pisma.** Tylko zainstalowane rodziny.

Do długich dokumentów użyj usługi stworzonej do paginacji — [DocRaptor](https://docraptor.com/), [PDFShift](https://pdfshift.io/) czy plany PDF APITemplate.io obsługują podział na strony i nagłówki — albo zrób to sam przez [`page.pdf()`](https://pptr.dev/api/puppeteer.page.pdf) z Puppeteera, z opcjami `format`, `margin` i `displayHeaderFooter` oraz regułami CSS `@page` — [poradnik o PDF w Puppeteerze](https://shareglint.com/en/guides/puppeteer-pdf) (po angielsku) omawia podziały stron, powtarzane nagłówki tabel i stopki z numerami stron. Puppeteer steruje tym samym silnikiem drukowania Chrome, którego używamy my; po prostu pozwala dokumentowi zająć tyle stron, ile potrzebuje.

## Kiedy to właściwe narzędzie

API szablonów sprawdza się najlepiej przy jednostronicowych dokumentach robionych masowo z danych: każdy certyfikat, bilet czy etykieta ma ten sam układ i inne pola, projekt żyje w HTML-u, który możesz wersjonować, a każdy plik kosztuje jeden render. Typowe zastosowania:

- **Certyfikaty ukończenia kursu** wystawiane, gdy kursant kończy kurs, i wysyłane mailem jako link do PDF-a — zobacz [certyfikaty](https://shareglint.com/pl/use-cases/certificates) i [szablon certyfikatu](https://shareglint.com/pl/templates/certificate).
- **Bilety i identyfikatory na wydarzenia** drukowane z eksportu rejestracji, z kodem QR każdego uczestnika (obrazkiem, który generujesz sam) w polu na obrazek.
- **Etykiety wysyłkowe i produktowe** w rozmiarze etykiety, prosto z systemu zamówień.
- **Jednostronicowe faktury i paragony**, w których pozycje mieszczą się na jednej stronie.

Ten sam projekt jako PNG obsłuży podgląd w mailu albo post, który go ogłasza. Plany i ceny za 1000 renderów są w [cenniku](https://shareglint.com/pl/pricing); [dokumentacja API](https://shareglint.com/pl/docs) opisuje każde pole, a strona [API HTML do obrazka](https://shareglint.com/pl/html-to-image) ma darmowy plac zabaw, w którym wypróbujesz układ, zanim go zapiszesz. Kilka certyfikatów bez kodu zrobisz w darmowym [generatorze certyfikatów](https://shareglint.com/pl/tools/certificate-generator).

## FAQ

### Czy API zrobi PDF na kilka stron?

Nie z szablonu: PDF z szablonu ma zawsze dokładnie jedną stronę o rozmiarze szablonu. Zrzut strony internetowej w formacie PDF z full_page może zająć kilka stron wielkości okna przeglądarki, ale to wycinki ekranu, a nie dokument z podziałem na strony, nagłówkami czy stopkami. Do raportów i długich faktur użyj wyspecjalizowanej usługi HTML do PDF albo page.pdf z Puppeteera.

### Czy tekst w PDF-ie jest wektorowy, czy to obrazek?

Wektorowy. PDF drukuje Chrome z twojego HTML-a i CSS razem z tłami, więc tekst jest ostry przy każdym powiększeniu, da się go zaznaczyć i przeszukać. Zdjęcia w projekcie zostają obrazkami rastrowymi w swojej rozdzielczości.

### Jaki rozmiar strony ma PDF?

Dokładnie rozmiar szablonu w pikselach CSS, przy 96 pikselach na cal, bez marginesów. Szablon 1123×794 to A4 w poziomie z dokładnością do ułamka milimetra; wbudowany szablon 1200×630 daje stronę 900×472,5 pt.

### Ile kosztuje jeden PDF?

Jeden render z miesięcznego limitu, tyle samo co PNG. Ponowny render z tymi samymi wartościami w tym samym formacie zwraca istniejący plik za darmo. W planie Free znak wodny trafia także do PDF-ów.

### Czy mogę zrobić setki PDF-ów z arkusza?

Tak. POST /v1/batches przyjmuje szablon, link do CSV lub Arkuszy Google (albo tablicę wierszy w JSON) i format pdf, renderuje każdy wiersz i zwraca adres każdego pliku oraz jedno archiwum ZIP ze wszystkimi.
