Azure에서 asp.net 코어로 PDF 파일 생성

5090 단어 aspnetpdfwebappazure
asp.net 핵심 웹 응용 프로그램용 PDF 파일을 생성하는 많은 라이브러리와 서비스가 있습니다. 훌륭한 상용 솔루션이 있지만 무료 솔루션이 필요한 경우에는 더 어려워집니다. 일부 라이브러리는 사용하기 어렵거나 다른 라이브러리는 기능이 제한됩니다. Azure Web App에서 PDF 파일을 생성하기 위해 사용하기 쉽고 빠른 무료 솔루션이 필요합니다.

보기가 PDF를 반환할 수 있습니까?



내가 필요한 것은 일반적으로 수행하는 HTML이 아닌 PDF를 반환하는 보기입니다. 표준 보기 사용의 장점은 웹 및 asp.net 핵심 지식을 사용하여 보기를 디자인할 수 있다는 것입니다. 이 경우 인보이스를 생성해야 합니다.

I'm using MVC as a pattern to structure my web project.



먼저 인보이스 컨트롤러와 상관 관계 보기를 생성하여 HTML로 인보이스를 디자인할 수 있습니다.

public class InvoiceController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}


HTML을 PDF로



다음으로 HTML(보기)을 PDF로 렌더링하는 방법이 필요합니다. 오픈 소스 명령줄 도구wkhtmltopdf를 사용합니다. 사용하기 쉽고 Azure Web Apps에서 실행할 수 있습니다.

wkhtmltopdf is an opensource (LGPLv3) command-line tool to render HTML into PDF using the Qt WebKit rendering engine. It runs entirely "headless."



Download wkhtmltopdf 파일을 프로젝트에 추가합니다. 내 솔루션에 폴더/wkhtmltopdf를 만들었습니다. 다운로드할 때 Azure Web App(Windows 또는 Linux)과 호환되는 올바른 버전을 선택하세요.
wkhtmltoimage.exe , wkhtmltopdf.exewkhtmltox.dll 파일을 솔루션에 추가하고 'Copy to Output Directory'를 'Copy always'로 변경합니다.



PDF 렌더링



wkhtmltopdf 명령줄 도구와 상호 작용하는 쉬운 방법은 NuGet의 Rotativa 라이브러리를 사용하는 것입니다.



먼저 wkhtmltopdf 도구를 찾을 위치를 Rotativa에 알려야 합니다. Startup.cs에 다음 줄을 추가합니다.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...

    RotativaConfiguration.Setup(env.ContentRootPath, "wkhtmltopdf");
}


다음으로 PDF 파일을 반환할 InvoiceController에 새 작업 결과를 만듭니다. 이 새로운 작업 결과 'IndexAsPDF'는 이미 생성한 보기를 재사용합니다.

public class InvoiceController : Controller
{
    ...

    public IActionResult Pdf()
    {
        return new ViewAsPdf("Index")
        {
            FileName = "Invoice.pdf",
            PageSize = Size.A4,
            MinimumFontSize = 16,
            ContentDisposition = ContentDisposition.Inline,
        };
    }
}


URLhttps://localhost:44349/Invoice/Index로 이동하면 인보이스의 HTML 버전이 표시되지만 https://localhost:44349/Invoice/Pdf로 이동하면 PDF 버전이 표시됩니다.

좋은 웹페이지 즐겨찾기