Przejdź do treści stopki
PORóWNANIA PRODUKTóW

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");
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");
Imports IronPdf

' Required for WebGL: GPU operations must complete in one process
IronPdf.Installation.SingleProcess = True
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Hardware

Dim renderer As New ChromePdfRenderer()

' Give the 3D scene time to load and render
renderer.RenderingOptions.WaitFor.RenderDelay(5000)

Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://docs.mapbox.com/mapbox-gl-js/example/geojson-layer-in-slot/")
pdf.SaveAs("webgl.pdf")
$vbLabelText   $csharpLabel

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.

Często Zadawane Pytania

Jaki jest cel użycia IronPDF do renderowania treści WebGL?

IronPDF jest używany do przechwytywania map WebGL przyspieszanych za pomocą GPU, paneli 3D i przeglądarek modeli jako statycznych PDF-ów w C#. Jest to niezbędne do tworzenia udostępnialnych, nieruchliwych wersji interaktywnych scen do raportów, zatwierdzeń i archiwów.

Dlaczego nie mogę użyć standardowego renderowania HTML-to-PDF dla treści WebGL?

Standardowe renderowanie HTML-to-PDF nie przechwytuje treści WebGL, ponieważ polega na GPU do przetwarzania. Rozwiązanie IronPDF obejmuje renderowanie przyspieszane za pomocą GPU, aby dokładnie przechwycić te złożone sceny.

Jakie są niezbędne konfiguracje do renderowania WebGL z IronPDF?

Aby renderować treści WebGL z IronPDF, należy włączyć tryb jednoprzepustowy i sprzętowy tryb GPU oraz dodać opóźnienie renderowania, aby scena mogła być w pełni wczytana przed przechwyceniem.

Dlaczego wymagany jest rzeczywisty GPU do renderowania treści WebGL z IronPDF?

Rzeczywisty GPU jest wymagany, ponieważ sprzętowy tryb GPU jest konieczny do obsługi shaderów, tekstur i transformacji 3D. Renderowanie programowe nie jest w stanie efektywnie przetwarzać tych elementów.

Czy mogę użyć Docker do renderowania treści WebGL z IronPDF?

Nie, Docker nie jest obsługiwany, ponieważ jest bezgłowy i ma ograniczony dostęp do GPU. Alternatywy to użycie VM, dedykowanego serwera z włączonym GPU lub wstępne renderowanie scen do statycznych obrazów.

Jak wygląda wynik z renderowania treści WebGL za pomocą IronPDF?

Wynik to statyczna migawka PDF, która zachowuje stan wizualny sceny WebGL w momencie renderowania. Nadaje się do dokumentacji i archiwizacji, ale nie zachowuje interaktywnych elementów jak przesuwanie czy przybliżanie.

Jak dostroić opóźnienie renderowania dla treści WebGL?

Opóźnienie renderowania należy ustawić pomiędzy 3000 a 10000 milisekund w zależności od złożoności sceny. Zapewnia to wystarczający czas na załadowanie sceny bez niepotrzebnego spowalniania procesu.

Jaki wpływ ma włączenie trybu jednoprzepustowego?

Włączenie trybu jednoprzepustowego jest konieczne do renderowania WebGL, ale wpływa na współbieżność. Ten kompromis powinien być rozważony, zwłaszcza w usługach o dużym obciążeniu.

Gdzie mogę znaleźć więcej informacji na temat konfigurowania IronPDF do renderowania WebGL?

Pełne kroki konfiguracji i rozwiązywania problemów można znaleźć w przewodniku po renderowaniu WebGL dostępnym na stronie internetowej IronPDF.

Curtis Chau
Autor tekstów technicznych

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ę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie