Menu
Załóż konto

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 4 listopada 2026 · 6 min czytania

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:

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źć:

<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>
.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ń:

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 (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, PDFShift czy plany PDF APITemplate.io obsługują podział na strony i nagłówki — albo zrób to sam przez page.pdf() z Puppeteera, z opcjami format, margin i displayHeaderFooter oraz regułami CSS @page — poradnik o PDF w Puppeteerze (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 i szablon certyfikatu.
  • 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; dokumentacja API opisuje każde pole, a strona API HTML do obrazka 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.

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.