Generowanie PDF w ASP.NET MVC: Przewodnik iTextSharp vs. IronPDF
Interaktywne mapy, pulpity 3D i przeglądarki modelu zbudowane z WebGL wyglądają świetnie w przeglądarce, ale interesariusze często potrzebują ustalonej, możliwej do udostępnienia wersji: zrzut mapy w raporcie, projekt 3D w zestawie do zatwierdzenia, wynik symulacji w archiwum. IronPDF przechwytuje przyspieszaną przez GPU treść WebGL jako statyczny plik PDF w C#, zachowując wizualny stan sceny w momencie jej renderowania.
Problem biznesowy
Narzędzie logistyczne pokazuje trasy na mapie Mapbox, aplikacja nieruchomości wyświetla teren 3D, aplikacja inżynierska renderuje model CAD w przeglądarce. Każdy potrzebuje wersji PDF do raportu, zapisu lub odbiorcy, który nie ma dostępu do aplikacji na żywo. Normalny zrzut ekranu jest niskiej jakości i ręczny, a standardowe renderowanie HTML do PDF nie przechwytuje WebGL, który zależy od GPU.
Konfigurowanie renderowania
Przechwytywanie WebGL wymaga trzech ustawień: trybu jednego procesu, trybu sprzętowego GPU i opóźnienia, aby scena zdążyła się wyrenderować przed przechwyceniem.
using IronPdf;
// Required for WebGL: GPU operations must complete in one process
IronPdf.Installation.SingleProcess = true;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Hardware;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Give the 3D scene time to load and render
renderer.RenderingOptions.WaitFor.RenderDelay(5000);
PdfDocument pdf = renderer.RenderUrlAsPdf("https://docs.mapbox.com/mapbox-gl-js/example/geojson-layer-in-slot/");
pdf.SaveAs("webgl.pdf");
Wynik przechwytuje mapę, wykres lub model dokładnie w takiej formie, w jakiej się pojawiły, odpowiednio do dokumentacji, raportów i archiwizacji.
Punkty do zaplanowania
Ta funkcja wymaga rzeczywistych wymagań środowiskowych, a one decydują, czy pasuje do danego wdrożenia.
- Wymagany jest rzeczywisty GPU: tryb sprzętowy GPU jest obowiązkowy. Renderowanie programowe nie radzi sobie z shaderami, teksturami i transformacjami 3D, więc host potrzebuje zgodnego GPU z aktualnymi sterownikami.
- Docker nie jest obsługiwany: renderowanie WebGL nie działa w standardowych kontenerach Docker, które są bezgłowe i mają ograniczony dostęp do GPU. Obejścia to VM lub serwer dedykowany z obsługą GPU, mikroserwis działający na hoście GPU, lub wcześniejsze renderowanie scen do statycznych obrazów.
- Wynik jest zrzutem: PDF zachowuje wizualny stan w momencie renderowania. Przewijanie, powiększanie i inne interaktywności nie są zachowane, co sprawia, że nadaje się to do dokumentacji i archiwizacji, a nie dostarczania interaktywnego.
- Dopasuj opóźnienie renderowania: Złożone sceny potrzebują czasu na załadowanie. Wartości pomiędzy 3000 a 10000 milisekund to rozsądny zakres do testowania, ponieważ zbyt krótki czas przerywa renderowanie, a zbyt długi trwoni czas.
- Tryb pojedynczego procesu jest globalny: Jest tutaj wymagany, ale wpływa na współbieżność, co warto rozważyć w usługach o wysokim wolumenie.
Wynik
Przy włączonym trybie GPU i odpowiednim hoście, zespoły przekształcają mapy WebGL na żywo, pulpity i modele 3D w statyczne pliki PDF, które trafiają do raportów i archiwów. Pełna konfiguracja i kroki rozwiązywania problemów są w przewodniku renderowania WebGL.

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.