Delphi 7-13 i C++ Builder Bez DLL

sgcPDF, biblioteka PDF w czystym Object Pascalu dla Delphi i C++ Builder

Twórz, edytuj, wyświetlaj, renderuj, wyodrębniaj, szyfruj, podpisuj, utajniaj i waliduj pliki PDF za pomocą komponentów napisanych w całości w Object Pascalu. Nie ma żadnej DLL do wdrożenia ani zewnętrznego silnika PDF: parser, zapis, czcionki, dekodery obrazów, renderery i kryptografia są wkompilowane w Twoją aplikację. Rdzeń działa w systemach Windows, Linux, macOS, iOS i Android, z kontrolką przeglądarki VCL, przeglądarką FireMonkey i rasterowym silnikiem renderującym dla serwerów. Dołączony jest pełny kod źródłowy.

Pełny kod źródłowy
Windows, Linux, macOS, iOS & Android
Delphi 7 → 13, C++ Builder
Wersja .NET na NuGet
Zero zewnętrznych zależności
20 komponentów sgcPDF_*.pas PDF 1.0-2.0, odczyt i zapis, w czystym Object Pascalu.
Twórz TsgcPDFDocument
Edytuj TsgcPDFEditor
Podgląd TsgcPDFViewerControl
Wyodrębnij TsgcPDFTextExtractor
Podpisz PAdES B-B to B-LTA
PDF/A & PDF/UA TsgcPDFAValidator
Utajniaj TsgcPDFRedactor
20 Komponenty palety Dokument, edytor, przeglądarki, ekstraktory, podpisywanie
0 DLL do wdrożenia Parser, renderer, czcionki i kryptografia w Pascalu
5 Systemy operacyjne Windows, Linux, macOS, iOS, Android
8 Poziomy zgodności PDF/A PDF/A-1, 2 i 3 (poziomy a i b), PDF/A-4 i 4f oraz PDF/UA-1 i PDF/UA-2

Trzy rzeczy, które warto wiedzieć na początek

Nic do zainstalowania na maszynie docelowej

sgcPDF nie jest nakładką na PDFium, Ghostscript, serwer COM ani żadną inną bibliotekę natywną. Parsowanie, zapis, osadzanie i tworzenie podzbiorów czcionek, dekodowanie obrazów, renderowanie, szyfrowanie i podpisywanie są zaimplementowane w jednostkach sgcPDF_*.pas, więc Twój plik wykonywalny stanowi całe wdrożenie.

Jednostki rdzenia nie mają zależności od VCL ani FMX, dzięki czemu ten sam kod działa w narzędziu konsolowym, usłudze Windows, demonie Linux lub serwerze WWW.

Zakres platform

Które części działają gdzie

Tworzenie, edycja, ekstrakcja tekstu i obrazów, formularze, szyfrowanie, podpisy, utajnianie, PDF/A oraz renderer rastrowy kompilują się dla Windows i Linux64 oraz dla macOS, iOS i Android. Renderer GDI, eksporter i kontrolki przeglądarki VCL są dostępne tylko w Windows, a TsgcPDFViewerFMX jest przeznaczony dla Windows, macOS, iOS i Android. W .NET kontrolki przeglądarki są dostępne dla WinForms, WPF i Avalonia.

Zaawansowane podpisy

PAdES przez sgcSign, podstawowe podpisywanie wbudowane

sgcPDF samodzielnie podpisuje i weryfikuje pliki PDF za pomocą certyfikatu PFX. Dla poziomów bazowych PAdES B-B, B-T, B-LT i B-LTA oraz dla kluczy przechowywanych na kartach inteligentnych, w magazynie certyfikatów Windows lub w chmurowych modułach HSM, opcjonalny mostek TsgcPDFPAdESSigner korzysta z dostawców kluczy sgcSign, licencjonowanego osobno.

Jedna biblioteka na cały cykl życia PDF

Od pierwszej napisanej strony aż po podpisany, zarchiwizowany i utajniony plik, który przekazujesz dalej, każdy krok działa w tej samej bazie kodu Object Pascal.

Twórz: dokumenty z kodu, HTML lub płótna

Strony, tekst w 14 standardowych czcionkach lub osadzone i tworzone jako podzbiór czcionki TrueType i OpenType, obrazy (JPEG, PNG, BMP, TIFF), linie, krzywe, gradienty, tabele przepływające między stronami, kody kreskowe i kody QR, adnotacje i komentarze z odpowiedziami w wątkach, zakładki i opcjonalne warstwy treści. Użytkownicy końcowi mogą też dodawać i edytować adnotacje oraz odpowiadać na nie myszą, bezpośrednio w przeglądarkach. TsgcPDFHTMLRenderer zamienia HTML z CSS na paginowany PDF, a TsgcPDFCanvas i odtwarzanie EMF konwertują istniejący kod rysujący.

Zobacz funkcje →

Edytuj: zmieniaj pliki, których nie utworzyłeś

Znaki wodne, nagłówki, stopki, numery stron i pieczęcie, łączenie i dzielenie, wyodrębnianie, wstawianie, usuwanie, obracanie i zmiana kolejności stron. Zapis przyrostowy dodaje nową wersję do oryginalnego pliku, dzięki czemu wcześniejsze podpisy pozostają ważne.

Zobacz funkcje →

Podgląd i renderowanie: przeglądarki VCL, FMX, WinForms, WPF i Avalonia oraz renderer serwerowy

Kontrolka przeglądarki VCL z miniaturami, konspektem, panelem komentarzy, zaznaczaniem tekstu, wyszukiwaniem, wypełnianiem formularzy i drukowaniem, przeglądarka FireMonkey dla Windows, macOS, iOS i Android z powiększaniem ramką, przeglądarki .NET dla WinForms, WPF i Avalonia oraz rasterowy renderer w czystym Object Pascalu, który zamienia strony na PNG na serwerach Windows i Linux bez GDI.

Zobacz funkcje →

Wyodrębnij: tekst, pozycje i obrazy

Zwykły tekst dla strony lub całego dokumentu, fragmenty tekstu ze współrzędnymi, czcionką i rozmiarem oraz obrazy strony zdekodowane do PNG, JPEG lub BMP. Dekodery obejmują Flate, LZW, ASCII85, RunLength, JPEG (baseline i progresywny), JPEG 2000, CCITT G3/G4 i JBIG2.

Zobacz funkcje →

Zabezpiecz i podpisz: szyfrowanie, podpisy, utajnianie

Szyfrowanie hasłem RC4 40/128, AES-128 i AES-256, szyfrowanie certyfikatem (klucz publiczny), podpisy cyfrowe z widocznymi polami i znacznikami czasu, PAdES B-B, B-T, B-LT i B-LTA przez mostek sgcSign, weryfikacja podpisów oraz prawdziwe utajnianie usuwające treść zamiast ją zasłaniać.

Zobacz funkcje →

Zgodność: PDF/A, PDF/UA, otagowany PDF, Factur-X

Wyjście PDF/A-1, PDF/A-2 i PDF/A-3 w poziomach a i b oraz PDF/A-4 i PDF/A-4f z wbudowanym walidatorem, otagowany PDF z drzewem struktury i tekstem alternatywnym, wyjście i kontrole PDF/UA-1 i PDF/UA-2, osadzone pliki z relacjami PDF/A-3 i PDF/A-4f oraz osadzanie e-faktur Factur-X, ZUGFeRD i XRechnung.

Zobacz funkcje →

Druk: ramki strony, impozycja, znaczniki

Ramki Media, Crop, Bleed, Trim i Art, strony innych dokumentów umieszczane jako formularze do impozycji, znaczniki cięcia, spadów i pasowania, kolory Separation i DeviceN, podgląd nadruku oraz output intent PDF/X, w Delphi i .NET.

Zobacz funkcje →

Kilka linijek Delphi

Każdy przykład na tej stronie pochodzi z programu skompilowanego ze źródłami sgcPDF i uruchomionego. Współrzędne są podane w punktach PDF (1/72 cala), z początkiem układu w lewym dolnym rogu strony.

procedure CreateHelloPDF(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
  oPage: TsgcPDFPage;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.Info.Title := 'Hello sgcPDF';
    // A4 portrait: 595 x 842 points, origin at the bottom left corner
    oPage := oPDF.AddPage(595, 842);
    oPage.DrawTextColor('Hello sgcPDF', 50, 780, sfHelveticaBold, 24, 0, 0.2, 0.6);
    oPage.DrawLine(50, 770, 545, 770, 1.5);
    oPage.DrawText('A PDF written in pure Pascal.', 50, 740, sfHelvetica, 12);
    oPDF.SaveToFile(AFileName);
  finally
    oPDF.Free;
  end;
end;
procedure StampExistingPDF(const AInput, AOutput: string);
var
  oEditor: TsgcPDFEditor;
  oWatermark: TsgcPDFWatermarkOptions;
begin
  oEditor := TsgcPDFEditor.Create;
  try
    oEditor.LoadFromFile(AInput);
    oWatermark.Text := 'CONFIDENTIAL';
    oWatermark.Font := sfHelveticaBold;
    oWatermark.FontSize := 48;
    oWatermark.Rotation := 45;
    oWatermark.Opacity := 0.3;
    oWatermark.R := 0.5;
    oWatermark.G := 0.5;
    oWatermark.B := 0.5;
    oEditor.AddWatermarkAllPages(oWatermark);
    oEditor.AddPageNumbers(sfHelvetica, 10, 'Page %d of %d');
    oEditor.SaveToFile(AOutput);
  finally
    oEditor.Free;
  end;
end;
procedure PrintAllText(const AFileName: string);
var
  oPDF: TsgcPDFDocument;
  i: Integer;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.LoadFromFile(AFileName);
    for i := 0 to oPDF.PageCount - 1 do
      WriteLn(string(oPDF.ExtractTextW(i)));
  finally
    oPDF.Free;
  end;
end;
procedure RenderPageToPNG(const APDFFile, APNGFile: string; ADPI: Integer);
var
  oPDF: TsgcPDFDocument;
  oRenderer: TsgcPDFRendererRaster;
  oPage: TsgcPDFPage;
begin
  oPDF := TsgcPDFDocument.Create;
  try
    oPDF.LoadFromFile(APDFFile);
    oPage := oPDF.Pages[0];
    // pure Pascal rasterizer: no GDI, runs on Windows and Linux servers
    oRenderer := TsgcPDFRendererRaster.Create;
    try
      oRenderer.RenderPageToPNG(oPDF.Parser, oPage.PageDict,
        Round(oPage.Width * ADPI / 72), Round(oPage.Height * ADPI / 72),
        APNGFile);
    finally
      oRenderer.Free;
    end;
  finally
    oPDF.Free;
  end;
end;
procedure CreateTicketPDF(const aFileName: string);
var
  oPDF: TsgcPDFDocument;
  oPage: TsgcPDFPage;
  oSymbol: TsgcPDFBarcodeSymbol;
begin
  oPDF := TsgcPDFDocument.Create(nil);
  oSymbol := TsgcPDFBarcodeSymbol.Create;
  try
    oPDF.Info.Title := 'Ticket';
    oPage := oPDF.AddPage(595, 842);
    oPage.DrawText('Ticket 2026-001', 50, 780, sfHelveticaBold, 24);
    oPage.DrawLine(50, 770, 545, 770, 1.5);
    // Code 128 barcode in a 250 x 60 point box, black on white
    oSymbol.Symbology := bcCode128;
    oSymbol.Text := 'TKT-2026-001';
    oSymbol.DrawToPDF(oPage, 50, 680, 250, 60, $000000, $FFFFFF);
    // QR Code in a 120 x 120 point box
    oSymbol.Symbology := bcQRCode;
    oSymbol.QRErrorLevel := qrecQ;
    oSymbol.Text := 'https://www.esegece.com';
    oSymbol.DrawToPDF(oPage, 50, 540, 120, 120, $000000, $FFFFFF);
    oPDF.SaveToFile(aFileName);
  finally
    oSymbol.Free;
    oPDF.Free;
  end;
end;

Kod kreskowy jest rysowany jako grafika wektorowa bezpośrednio na stronie. Jednostki: sgcPDF_Document, sgcPDF_Barcodes, sgcPDF_Barcode_Symbol. Zobacz TsgcPDFBarcodeSymbol oraz przewodnik po kodach kreskowych.

#include <System.hpp>
#include "sgcPDF_Document.hpp"
#include "sgcPDF_Barcodes.hpp"
#include "sgcPDF_Barcode_Symbol.hpp"

void __fastcall CreateTicketPDF(const String aFileName)
{
  TsgcPDFDocument *oPDF = new TsgcPDFDocument(NULL);
  TsgcPDFBarcodeSymbol *oSymbol = new TsgcPDFBarcodeSymbol();
  try
  {
    oPDF->Info->Title = "Ticket";
    TsgcPDFPage *oPage = oPDF->AddPage(595, 842);
    oPage->DrawText("Ticket 2026-001", 50, 780, sfHelveticaBold, 24);
    oPage->DrawLine(50, 770, 545, 770, 1.5);
    // Code 128 barcode in a 250 x 60 point box, black on white
    oSymbol->Symbology = bcCode128;
    oSymbol->Text = "TKT-2026-001";
    oSymbol->DrawToPDF(oPage, 50, 680, 250, 60, 0x000000, 0xFFFFFF);
    // QR Code in a 120 x 120 point box
    oSymbol->Symbology = bcQRCode;
    oSymbol->QRErrorLevel = qrecQ;
    oSymbol->Text = "https://www.esegece.com";
    oSymbol->DrawToPDF(oPage, 50, 540, 120, 120, 0x000000, 0xFFFFFF);
    oPDF->SaveToFile(aFileName);
  }
  __finally
  {
    delete oSymbol;
    delete oPDF;
  }
}

Skompilowano z nagłówkami C++ Builder wygenerowanymi ze źródeł sgcPDF. Zobacz temat TsgcPDFBarcodeSymbol oraz uwagi o C++ Builder.

using System;
using esegece.sgcPDF;

class Program
{
    static void Main()
    {
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            oDoc.Info.Title = "Ticket";
            TsgcPDFPage oPage = oDoc.AddPage(595, 842);
            oPage.DrawText("Ticket 2026-001", 50, 780, TsgcPDFStandardFont.sfHelveticaBold, 24);
            oPage.DrawLine(50, 770, 545, 770, 1.5);

            // Code 128 barcode in a 250 x 60 point box, black on white
            TsgcPDFBarcodeSymbol oSymbol = new TsgcPDFBarcodeSymbol();
            oSymbol.Symbology = TsgcPDFBarcodeType.bcCode128;
            oSymbol.Text = "TKT-2026-001";
            oSymbol.DrawToPDF(oPage, 50, 680, 250, 60, 0x000000, 0xFFFFFF);

            // QR Code in a 120 x 120 point box
            oSymbol.Symbology = TsgcPDFBarcodeType.bcQRCode;
            oSymbol.QRErrorLevel = TsgcPDFQRErrorLevel.qrecQ;
            oSymbol.Text = "https://www.esegece.com";
            oSymbol.DrawToPDF(oPage, 50, 540, 120, 120, 0x000000, 0xFFFFFF);

            oDoc.SaveToFile("ticket.pdf");
        }
    }
}

Klasa .NET nie zależy od WinForms ani GDI, więc działa także na serwerach i w narzędziach konsolowych. Zobacz różnice API .NET.

using System;
using esegece.sgcPDF;

class Program
{
    static void Main()
    {
        // Create a one page A4 document and save it
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            TsgcPDFPage oPage = oDoc.AddPage(595, 842);
            oPage.DrawText("Hello from sgcPDF", 50, 780, TsgcPDFStandardFont.sfHelveticaBold, 24);
            oPage.DrawLine(50, 770, 545, 770, 1.0);
            oPage.DrawText("Created with sgcPDF .NET.", 50, 740, TsgcPDFStandardFont.sfHelvetica, 12);
            oDoc.SaveToFile("hello.pdf");
        }

        // Load it again and extract the text of every page
        using (TsgcPDFDocument oDoc = new TsgcPDFDocument())
        {
            oDoc.LoadFromFile("hello.pdf");
            for (int i = 0; i < oDoc.PageCount(); i++)
                Console.WriteLine(oDoc.ExtractTextW(i));
        }
    }
}
TsgcPDFBarcodeControl z symbolami Code 128, Code 39, EAN-13, EAN-8, UPC-A, ITF, Codabar, QR Code, DataMatrix, PDF417 i GS1-128
Jedna kontrolka kodów kreskowych, jedenaście symbologii, w tym QR Code, DataMatrix i PDF417

20 komponentów na palecie sgcPDF

Umieść je na formularzu lub module danych, albo utwórz je w kodzie. Każdy komponent można też użyć bez formularza, z aplikacji konsolowych i usług.

Wszystkie komponenty

Wersja próbna i licencje

sgcPDF jest licencjonowany samodzielnie, już od €249 dla jednego programisty. Każda licencja zawiera pełny kod źródłowy, 1 rok aktualizacji i od 50% do 70% rabatu na odnowienie. Aby go najpierw wypróbować, pobierz bezpłatną wersję próbną. sgcPDF wchodzi też w skład sgcUI Enterprise i pakietu All-Access.

sgcPDF

€249

Dostępne licencje Single, Team i Site.

  • Wszystkie 20 komponentów i jednostki sgcPDF_*.pas
  • Delphi 7-13 i C++ Builder
  • Windows, Linux, macOS, iOS i Android
  • Pełny kod źródłowy
  • 1 rok aktualizacji

sgcPDF .NET

€249

Dostępne licencje Single, Team i Site.

  • NuGet: esegece.sgcPDF
  • .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9, .NET 10
  • Pełny kod źródłowy
  • 1 rok aktualizacji

sgcPDF dla .NET

sgcPDF jest również dostępny dla .NET jako w pełni zarządzany port w C#, z tymi samymi nazwami klas co biblioteka Delphi. Jest dostarczany jako pakiety NuGet dla .NET Standard 2.0, .NET Framework 4.7.2, .NET 6, .NET 8, .NET 9 i .NET 10, bez natywnej DLL.

esegece.sgcPDF

Biblioteka: model dokumentu, parser, writer, edytor, rdzeń renderowania, czcionki, obrazy, formularze, podpisy, szyfrowanie, ekstrakcja tekstu i obrazów, przygotowanie do druku, PDF/A (w tym PDF/A-4) i PDF/UA-2.

esegece.sgcPDF.WinForms

Dodatek Windows Forms: renderer GDI i kanwa, odtwarzanie EMF, eksport stron do obrazów oraz kontrolki TsgcPDFViewerControl (z interaktywnymi adnotacjami i odpowiedziami na komentarze), TsgcPDFThumbnailView i TsgcPDFOutlineView, z ramkami strony i narzędziem pomiaru.

esegece.sgcPDF.Wpf

Przeglądarka WPF: TsgcWpfPDFViewer, TsgcWpfPDFThumbnailView i TsgcWpfPDFOutlineView, z trybami powiększenia, powiększaniem ramką, zaznaczaniem tekstu, wyszukiwaniem, łączami, ramkami strony i narzędziem pomiaru. Adnotacje i pola formularzy są wyświetlane.

esegece.sgcPDF.Avalonia

Przeglądarka Avalonia: TsgcAvaloniaPDFViewer, TsgcAvaloniaPDFThumbnailView i TsgcAvaloniaPDFOutlineView, z tymi samymi funkcjami podglądu co przeglądarka WPF oraz powiększaniem gestem szczypania.

esegece.sgcPDF.sgcSign

Opcjonalny mostek do sgcSign .NET: TsgcPDFPAdESSigner podpisuje w formatach PAdES B-B, B-T, B-LT i B-LTA z dowolnym dostawcą kluczy sgcSign.

dotnet add package esegece.sgcPDF
dotnet add package esegece.sgcPDF.WinForms
dotnet add package esegece.sgcPDF.Wpf
dotnet add package esegece.sgcPDF.Avalonia
dotnet add package esegece.sgcPDF.sgcSign

Każdy pakiet jest również dostępny jako darmowa edycja Community z sufiksem .Community, na przykład dotnet add package esegece.sgcPDF.Community. Obie edycje mają te same funkcje. Edycja Community jest darmowa dla osób prywatnych i organizacji o rocznym przychodzie brutto poniżej 1 mln EUR i nie więcej niż 5 programistach, i wyświetla krótkie powiadomienie przy starcie. Edycja zarejestrowana usuwa to powiadomienie i obejmuje licencję komercyjną.

Zobacz w NuGet Pobieranie .NET

sgcPDF wchodzi w skład sgcUI Enterprise

sgcPDF należy do pakietu sgcUI komponentów dla Delphi i C++ Builder i jest zawarty w edycji sgcUI Enterprise, razem z każdym innym produktem sgcUI. Jest też dostępny jako pojedynczy pakiet. Ceny znajdziesz na stronie cen sgcUI oraz na stronie cen sgcPDF.

sgcReports

Projektant i silnik raportów, który eksportuje gotowe raporty do PDF przez sgcPDF.

Poznaj sgcReports →

sgcGrid

Wydajna siatka danych dla Delphi i C++ Builder.

Poznaj sgcGrid →

sgcCharts

Wykresy dla pulpitów i raportów.

Poznaj sgcCharts →

sgcDashboard

Kafelki, wskaźniki KPI i układy dla pulpitów.

Poznaj sgcDashboard →

Pomoc online: wprowadzenie, szybki start, instalacja i instalacja .NET.

Inne produkty eSeGeCe

Łącz sgcPDF z naszymi innymi bibliotekami komponentów dla Delphi i C++ Builder.

sgcSign

Cyfrowe podpisy klasy enterprise. XAdES, PAdES, CAdES i ASiC z 10 dostawcami kluczy i 21 profilami krajów UE.

Dowiedz się więcej →

sgcWebSockets

Komponenty WebSocket, HTTP/2, MQTT, AMQP i WebRTC klasy enterprise dla Delphi, C++ Builder i .NET.

Dowiedz się więcej →

sgcHTML

Komponenty HTML i UI po stronie serwera dla Delphi i C++ Builder, oparte na Bootstrap i htmx.

Dowiedz się więcej →

sgcCrypto

Nowoczesna kryptografia w czystym Object Pascalu: AES-GCM, SHA-3, Ed25519, X.509 oraz post-kwantowe ML-KEM i ML-DSA.

Dowiedz się więcej →
3,000+Programistów
20+Lat
761+Komponentów
30+Integracji API
5Platform
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów

PDF bez DLL

Twórz, wyświetlaj, podpisuj i archiwizuj pliki PDF za pomocą posiadanego już kodu Delphi lub C++ Builder.