Azure Function에서 IronPDF .NET을 실행 및 배포하는 방법

This article was translated from English: Does it need improvement?
Translated
View the article in English
Azure 1 related to Azure Function에서 IronPDF .NET을 실행 및 배포하는 방법

예. IronPDF는 Azure에서 PDF 문서를 생성, 조작 및 읽는 데 사용할 수 있습니다. IronPDF는 MVC 웹사이트, Azure Functions 등 다양한 Azure 플랫폼에서 철저한 테스트를 거쳤습니다.


튜토리얼 사용법

IronPdf 패키지 설치

Azure Function Apps에는 Linux , Windows컨테이너 라는 세 가지 환경이 있습니다. 이 문서에서는 세 가지 환경 모두에서 IronPdf를 설정하는 방법을 설명합니다. 이 중에서 Azure Function App Container는 격리된 환경을 제공하므로 권장됩니다. 먼저 설치할 적절한 패키지를 선택해 보겠습니다.

Azure Function App 컨테이너

Azure Function App 컨테이너는 최소한의 번거로움만으로 IronPdf를 배포할 수 있도록 권장되는 방법입니다.

Install-Package IronPdf.Linux

Docker 파일 구성

사용 중인 Linux 배포판에 따라 Docker 파일을 구성하십시오. 자세한 지침은 이 글 을 참조하십시오.

Azure Function App(Windows)

표준 IronPdf 패키지를 사용하려면 "패키지 파일에서 실행" 옵션이 선택 해제되어 있는지 확인하십시오. 이 옵션을 활성화하면 프로젝트가 ZIP 파일로 배포되는데, 이로 인해 IronPdf의 파일 구성과 충돌이 발생합니다. 패키지 파일에서 실행 옵션을 사용하려면 IronPdf.Slim 패키지를 설치하십시오.

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

Azure Function App(리눅스)

Azure Function App(Linux)의 경우 프로젝트는 기본적으로 ZIP 파일로 배포되며, 이 동작은 비활성화할 수 없습니다. 이는 Azure Function App(Windows)에서 패키지 파일에서 실행 옵션을 활성화하는 것과 유사합니다.

Install-Package IronPdf.Slim

올바른 Azure 옵션을 선택하세요

올바른 호스팅 등급 선택하기

Azure Basic B1 은 최종 사용자의 렌더링 요구 사항을 충족하는 데 필요한 최소 호스팅 수준입니다. 높은 처리량을 가진 시스템을 구축하는 경우, 이를 업그레이드해야 할 수도 있습니다.

경고 참고 : 앱 서비스 플랜 유형을 선택하지 않으면 IronPdf에서 PDF 문서를 렌더링하지 못할 수 있습니다.

올바른 호스팅 레벨(Azure Tier) 선택하기

.NET 6용 구성

최근 마이크로소프트는 .NET 6 이상 버전에서 이미지 처리 라이브러리를 제거하여 많은 기존 API가 더 이상 작동하지 않게 되었습니다. 따라서 이러한 기존 API 호출을 계속 사용할 수 있도록 프로젝트를 구성해야 합니다.

  1. Linux 시스템에서 Installation.LinuxAndDockerDependenciesAutoConfig=true;를 설정하여 libgdiplus가 시스템에 설치되도록 하십시오.
  2. .NET 6 프로젝트의 .csproj 파일에 다음 내용을 추가하세요.
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
XML
  1. 프로젝트에 runtimeconfig.template.json라는 파일을 생성하고 다음 내용을 입력하세요.
{
  "configProperties": {
    "System.Drawing.EnableUnixSupport": true
  }
}
  1. 마지막으로 프로그램 시작 부분에 다음 줄을 추가하세요.
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true);
$vbLabelText   $csharpLabel

Azure Functions 코드 예제

이 예제는 HTML을 PDF로 변환하고 내장된 Azure 로거에 로그 항목을 자동으로 출력합니다(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}");
    }
}
$vbLabelText   $csharpLabel

Visual Studio에서 Azure Function 템플릿을 사용하여 프로젝트를 생성하면 코드가 약간 다르게 생성될 수 있습니다. 이러한 차이점 때문에 동일한 패키지가 설치되어 있더라도 한 프로젝트는 작동하지만 다른 프로젝트는 작동하지 않을 수 있습니다. 이러한 현상이 발생하면 CustomDeploymentDirectory 속성을 "/tmp" 로 설정하십시오.

각 설치 구성 이해하기

  • LinuxAndDockerDependenciesAutoConfig : 이 설정은 Chrome 엔진에 필요한 모든 종속성을 확인하고 다운로드를 시도합니다. Linux와 같은 비GUI 시스템을 사용할 때 필요합니다. 컨테이너 시스템에서는 일반적으로 Dockerfile에 종속성이 나열되어 있으므로 이 값을 false로 설정할 수 있습니다.
  • AutomaticallyDownloadNativeBinaries : 이 옵션은 런타임에 네이티브 Chrome 바이너리를 다운로드합니다. IronPdf.Slim 패키지를 사용할 때 필수적입니다.
  • CustomDeploymentDirectory : 이 설정은 쓰기 권한이 제한된 시스템에 필요합니다.

알려진 문제점

공유 호스팅 플랜에서는 SVG 글꼴 렌더링을 사용할 수 없습니다.

한 가지 제한 사항은 Azure 호스팅 플랫폼이 저렴한 공유 웹 애플리케이션 계층에서 Google Fonts와 같은 SVG 글꼴을 로드하는 서버를 지원하지 않는다는 점입니다. 이는 보안상의 이유로 이러한 공유 호스팅 플랫폼이 Windows GDI+ 그래픽 객체에 접근할 수 없기 때문입니다.

최상의 글꼴 렌더링이 필요한 경우 , Windows 또는 Linux Docker 컨테이너 나 Azure VPS를 사용하여 이 문제를 해결하는 것을 권장합니다.

Azure 무료 티어 호스팅 속도가 느립니다.

Azure의 무료 및 공유 계층과 사용량 기반 요금제는 PDF 렌더링에 적합하지 않습니다. 저희가 직접 사용하고 있는 Azure B1 호스팅/프리미엄 플랜을 추천합니다. HTML to PDF 처리 과정은 모든 컴퓨터에 상당한 부담을 줍니다. 이는 사용자의 컴퓨터에서 웹 페이지를 열고 렌더링하는 것과 유사합니다. 실제 브라우저 엔진이 사용되므로 그에 맞춰 시스템을 최적화해야 하며, 비슷한 성능의 데스크톱 컴퓨터에서와 유사한 렌더링 시간을 예상해야 합니다.

엔지니어링 지원 요청 티켓 생성

지원 요청 티켓을 생성하려면 ' IronPDF 엔지니어링 지원 요청 방법 ' 가이드를 참조하십시오.

자주 묻는 질문

Azure에 PDF 생성 라이브러리를 호스팅하려면 어떻게 해야 하나요?

Azure Function 또는 MVC 웹사이트를 설정하여 IronPDF와 같은 PDF 생성 라이브러리를 Azure에서 호스팅할 수 있습니다. NuGet에서 필요한 패키지가 설치되어 있는지 확인하고 라이브러리 요구 사항에 따라 환경을 구성하십시오.

PDF 라이브러리와 호환되는 Azure 환경은 무엇입니까?

IronPDF는 MVC 웹 사이트 및 Azure Functions를 포함한 다양한 Azure 환경과 호환됩니다. Azure에서 제공하는 다양한 플랫폼에서 원활하게 작동하도록 설계되었습니다.

Azure에서 PDF 라이브러리를 호스팅하기 위한 요구 사항은 무엇입니까?

Azure에서 IronPDF를 사용할 때 최적의 성능을 얻으려면 최소한 Azure Basic B1 호스팅 계층을 사용하는 것이 좋습니다. 이렇게 하면 PDF를 효율적으로 렌더링하는 데 필요한 충분한 리소스를 확보할 수 있습니다.

Linux 환경의 Azure Function App에서 PDF 라이브러리를 설정하는 방법은 무엇인가요?

Linux 환경의 Azure Function App에 IronPDF를 설정하려면 IronPdf.Slim 패키지를 설치하세요. 프로젝트를 ZIP 파일로 배포하고 Linux 환경에 맞게 모든 구성이 올바르게 설정되었는지 확인하세요.

Azure에서 PDF 라이브러리를 사용할 때 .NET 6에 필요한 구성은 무엇입니까?

Azure에서 .NET 6과 함께 IronPDF를 사용할 때는 레거시 API 호출을 허용하도록 프로젝트 설정을 업데이트해야 합니다. `Installation.LinuxAndDockerDependenciesAutoConfig=true` 설정하고 필요한 구성을 프로젝트 파일에 포함시키세요.

Azure에서 PDF 렌더링에 Docker 컨테이너를 권장하는 이유는 무엇입니까?

Azure에서 PDF를 렌더링할 때는 Docker 컨테이너를 사용하는 것이 좋습니다. Docker 컨테이너는 보다 통제된 환경을 제공하고, 더 나은 글꼴 렌더링을 지원하며, 공유 호스팅 플랜의 제약을 피할 수 있기 때문입니다.

Azure 무료 티어에서 PDF 렌더링 속도가 느려지는 원인은 무엇일까요?

Azure 무료 등급에서는 컴퓨팅 리소스가 제한되어 PDF 렌더링 속도가 느립니다. 웹 페이지 렌더링과 마찬가지로 PDF 렌더링에는 상당한 컴퓨팅 성능이 필요하므로 B1 또는 Premium과 같은 상위 등급 플랜이 더 적합합니다.

PDF 라이브러리를 사용하는 Azure Function 프로젝트가 작동하지 않을 때 어떻게 문제를 해결할 수 있나요?

IronPDF를 사용하는 Azure Function 프로젝트가 제대로 작동하지 않는 경우, `CustomDeploymentDirectory` 속성이 '/tmp'로 설정되어 있는지 확인하고 필요한 모든 패키지와 구성이 올바르게 설치 및 설정되었는지 확인하십시오.

Azure에 PDF 라이브러리를 배포할 때 사용할 수 있는 지원 옵션은 무엇인가요?

Azure에 IronPDF를 배포하는 데 대한 지원이 필요하시면 IronPDF 웹사이트의 'IronPDF 엔지니어링 지원 요청 방법' 가이드를 참조하여 자세한 도움을 받으세요.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 17,527,568 | 버전: 2026.2 방금 출시되었습니다