Jak uruchomić i wdrożyć IronPDF .NET w Azure Function

This article was translated from English: Does it need improvement?
Translated
View the article in English
Azure 1 related to Jak uruchomić i wdrożyć IronPDF .NET w Azure Function

Tak. IronPDF może być używany do generowania, manipulacji i odczytywania dokumentów PDF w Azure. IronPDF został gruntownie przetestowany na wielu platformach Azure, w tym na stronach internetowych MVC, Azure Functions i wielu innych.


Poradnik "Jak to zrobić"

Zainstaluj pakiet IronPDF

Aplikacje Azure Function mają trzy odrębne środowiska: Linux, Windows i Container. Ten artykul wyjasnia, jak skonfigurowac IronPDF we wszystkich trzech srodowiskach. Spośród nich, kontener Azure Function App jest rekomendowany, ponieważ zapewnia izolowane środowisko. Aby rozpocząć, wybierzmy odpowiedni pakiet do zainstalowania.

Azure Function App Container

Azure Function App Container wymaga minimalnego wysilku, co czyni go zalecanym sposobem wdrozenia IronPDF.

Install-Package IronPdf.Linux

Skonfiguruj plik Docker

Skonfiguruj plik Docker zgodnie z używaną dystrybucją Linux. Proszę zapoznać się z tym artykułem dla szczegółowych instrukcji.

Aplikacja Azure Function (Windows)

Aby uzyc standardowego pakietu IronPDF, upewnij się, że opcja Run from package file nie jest zaznaczona. Wlaczenie tej opcji powoduje wdrozenie projektu jako plik ZIP, co koliduje z konfiguracja plikow IronPDF. Jeśli wolisz włączyć opcję Run from package file, zainstaluj zamiast tego pakiet IronPdf.Slim.

Install-Package IronPdf
Azure Package File related to Aplikacja Azure Function (Windows)

Aplikacja funkcji Azure (Linux)

W przypadku Azure Function App (Linux), projekt jest domyślnie wdrażany jako plik ZIP i tego zachowania nie można wyłączyć. Jest to podobne do włączenia opcji Run from package file w Azure Function App (Windows).

Install-Package IronPdf.Slim

Wybierz odpowiednie opcje Azure

Wybór odpowiedniego poziomu hostingowego

Azure Basic B1 jest minimalnym poziomem hostingu wymaganym do potrzeb renderingu naszych użytkowników końcowych. Jeśli tworzysz system o dużej przepustowości, może wymagać aktualizacji.

OstrzeżenieUwaga: Niewybranie typu planu App service plan moze spowodowac, ze IronPDF nie bedzie w stanie renderowac dokumentow PDF.

Wybór odpowiedniego poziomu hostingu Azure Tier

Konfiguracja dla .NET 6

Microsoft niedawno usunął biblioteki obrazówania z .NET 6+, co spowodowało problemy z wieloma starszymi interfejsami API. W związku z tym konieczne jest skonfigurowanie projektu, aby nadal umożliwiał te wywołania interfejsu API.

  1. W systemie Linux ustaw Installation.LinuxAndDockerDependenciesAutoConfig=true;, aby upewnić się, że libgdiplus jest zainstalowany na komputerze
  2. Dodaj poniższe do pliku .csproj dla projektu .NET 6:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
XML
  1. Utwórz w swoim projekcie plik o nazwie runtimeconfig.template.json i wprowadź do niego następujące treści:
{
  "configProperties": {
    "System.Drawing.EnableUnixSupport": true
  }
}
  1. Na koniec dodaj poniższą linię na początku programu:
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", True)
$vbLabelText   $csharpLabel

Przykład kodu Azure Function

Ten przykład konwertuje HTML na PDF i automatycznie wysyła wpisy dziennika do wbudowanego rejestratora Azure (zobacz ILogger log).

[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;

    // Configure IronPdf settings
    IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
    IronPdf.Installation.AutomaticallyDownloadNativeBinaries = true;
    IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
    IronPdf.Installation.CustomDeploymentDirectory = "/tmp";

    try
    {
        log.LogInformation("About to render PDF...");
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        // Render PDF from a URL
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
        log.LogInformation("Finished rendering PDF...");
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering PDF");
        return new OkObjectResult($"Error while rendering PDF: {e}");
    }
}
[FunctionName("PrintPdf")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log, ExecutionContext context)
{
    log.LogInformation("Entered PrintPdf API function...");

    // Apply license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable logging
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom;
    IronPdf.Logging.Logger.CustomLogger = log;

    // Configure IronPdf settings
    IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
    IronPdf.Installation.AutomaticallyDownloadNativeBinaries = true;
    IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
    IronPdf.Installation.CustomDeploymentDirectory = "/tmp";

    try
    {
        log.LogInformation("About to render PDF...");
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        // Render PDF from a URL
        var pdf = renderer.RenderUrlAsPdf("https://www.google.com/");
        log.LogInformation("Finished rendering PDF...");
        return new FileContentResult(pdf.BinaryData, "application/pdf") { FileDownloadName = "google.pdf" };
    }
    catch (Exception e)
    {
        log.LogError(e, "Error while rendering PDF");
        return new OkObjectResult($"Error while rendering PDF: {e}");
    }
}
<FunctionName("PrintPdf")>
Public Shared Async Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger, ByVal context As ExecutionContext) As Task(Of IActionResult)
	log.LogInformation("Entered PrintPdf API function...")

	' Apply license key
	IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

	' Enable logging
	IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.Custom
	IronPdf.Logging.Logger.CustomLogger = log

	' Configure IronPdf settings
	IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
	IronPdf.Installation.AutomaticallyDownloadNativeBinaries = True
	IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
	IronPdf.Installation.CustomDeploymentDirectory = "/tmp"

	Try
		log.LogInformation("About to render PDF...")
		Dim renderer As New ChromePdfRenderer()
		' Render PDF from a URL
		Dim pdf = renderer.RenderUrlAsPdf("https://www.google.com/")
		log.LogInformation("Finished rendering PDF...")
		Return New FileContentResult(pdf.BinaryData, "application/pdf") With {.FileDownloadName = "google.pdf"}
	Catch e As Exception
		log.LogError(e, "Error while rendering PDF")
		Return New OkObjectResult($"Error while rendering PDF: {e}")
	End Try
End Function
$vbLabelText   $csharpLabel

Utworzenie projektu za pomocą szablonu Azure Function w Visual Studio może skutkować nieznacznie innym kodem. Z powodu tych różnic, nawet z tym samym zainstalowanym pakietem, jeden projekt może działać, podczas gdy inny nie. Jeśli tak się stanie, proszę ustawić właściwość CustomDeploymentDirectory na "/tmp".

Zrozumienie każdej konfiguracji instalacji

  • LinuxAndDockerDependenciesAutoConfig: To ustawienie sprawdza i próbuje pobrać wszystkie niezbędne zależności dla silnika Chrome. Jest wymagane przy używaniu systemów bez GUI, takich jak Linux. W systemach kontenerowych, zależności są zazwyczaj wymienione w pliku Dockerfile; dlatego można ustawić to na false.
  • AutomaticallyDownloadNativeBinaries: Ta opcja pobiera natywną bibliotekę Chrome w trakcie działania. Jest wymagana przy używaniu pakietu IronPdf.Slim.
  • CustomDeploymentDirectory: To ustawienie jest wymagane dla systemów z ograniczonym dostępem do zapisu.

Znane problemy

Renderowanie czcionek SVG nie jest dostępne w planach hostingu wspólnionego

Jednym z ograniczeń, na które napotkaliśmy, jest to, że platforma hostingowa Azure nie wspiera serwerów ładujących czcionki SVG, takie jak Google Fonts, w ich tańszych wspólnionych planach aplikacji internetowych. Dzieje się tak, ponieważ te wspólne platformy hostingowe nie mają dostępu do obiektów graficznych Windows GDI+ ze względów bezpieczeństwa.

Zalecamy używanie Windows lub Linux Docker Container lub może VPS na Azure, aby obejść ten problem, gdy wymagana jest najlepsza jakość renderowania czcionek.

Hosting w ramach darmowego tieru Azure jest wolny

Darmowe i współdzielone poziomy Azure oraz plan zużycia nie są odpowiednie do renderowania PDF. Zalecamy hosting Azure B1/plan Premium, którego sami używamy. Proces HTML to PDF stanowi znaczne "obciążenie" dla każdego komputera — podobne do otwierania i renderowania strony internetowej na własnym komputerze. Wykorzystywany jest prawdziwy silnik przeglądarki, dlatego musimy odpowiednio się przygotować i spodziewać się czasu renderowania podobnego do tego na komputerze stacjonarnym o podobnej mocy.

Tworzenie zgłoszenia wsparcia inżynieryjnego

Aby utworzyć zgłoszenie, zapoznaj się z przewodnikiem 'Jak złożyć zgłoszenie wsparcia inżynieryjnego dla IronPDF'

Często Zadawane Pytania

Jak mogę hostować bibliotekę do generowania plików PDF w Azure?

Bibliotekę do generowania plików PDF, taką jak IronPDF, można hostować na platformie Azure, konfigurując funkcję Azure Function lub witrynę internetową MVC. Należy upewnić się, że zainstalowano niezbędne pakiety z NuGet i skonfigurować środowisko zgodnie z wymaganiami biblioteki.

Które środowiska Azure są kompatybilne z biblioteką PDF?

IronPDF jest kompatybilny z wieloma środowiskami Azure, w tym ze stronami internetowymi MVC i Azure Functions. Został zaprojektowany tak, aby płynnie działać na różnych platformach oferowanych przez Azure.

Jakie są wymagania dotyczące hostingu biblioteki PDF w Azure?

Aby uzyskać optymalną wydajność podczas korzystania z IronPDF na platformie Azure, zaleca się korzystanie z co najmniej poziomu hostingu Azure Basic B1. Zapewnia to wystarczające zasoby do wydajnego renderowania plików PDF.

Jak skonfigurować bibliotekę PDF dla aplikacji Azure Function App w systemie Linux?

Aby skonfigurować IronPDF dla aplikacji Azure Function App w systemie Linux, zainstaluj pakiet IronPdf.Slim. Wdróż projekt jako plik ZIP i upewnij się, że wszystkie konfiguracje są prawidłowo ustawione dla środowiska Linux.

Jakie konfiguracje są wymagane dla .NET 6 podczas korzystania z biblioteki PDF w Azure?

Korzystając z IronPDF z .NET 6 na platformie Azure, zaktualizuj ustawienia projektu, aby zezwolić na wywołania starszych interfejsów API. Ustaw Installation.LinuxAndDockerDependenciesAutoConfig=true i dołącz niezbędne konfiguracje do plików projektu.

Dłączego do renderowania plików PDF w Azure zaleca się użycie kontenera Docker?

Do renderowania plików PDF w Azure zaleca się użycie kontenera Docker, ponieważ zapewnia on bardziej kontrolowane środowisko, obsługuje lepsze renderowanie czcionek i pozwala uniknąć ograniczeń związanych z planami hostingu współdzielonego.

Co może powodować powolne renderowanie plików PDF w ramach bezpłatnego pakietu Azure?

Renderowanie plików PDF w ramach bezpłatnego pakietu Azure Free Tier przebiega wolno ze względu na ograniczone zasoby obliczeniowe. Proces ten wymaga znacznej mocy obliczeniowej, podobnie jak renderowanie strony internetowej, dlatego bardziej odpowiednie są plany wyższych poziomów, takie jak B1 lub Premium.

Jak mogę rozwiązać problem z niedziałającym projektem Azure Function z biblioteką PDF?

Jeśli projekt Azure Function z IronPDF nie działa, sprawdź, czy właściwość CustomDeploymentDirectory jest ustawiona na „/tmp”, oraz upewnij się, że wszystkie niezbędne pakiety i konfiguracje są poprawnie zainstalowane i ustawione.

Jakie opcje wsparcia są dostępne przy wdrażaniu biblioteki PDF w Azure?

Aby uzyskać pomoc w zakresie wdrażania IronPDF na platformie Azure, zapoznaj się z przewodnikiem „Jak złożyć zgłoszenie do pomocy technicznej dotyczące IronPDF” na stronie internetowej IronPDF, gdzie znajdziesz szczegółowe informacje.

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
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 18,926,724 | Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.