Поддерживается ли генератор PDF-файлов NReco в Azure? - PullRequest
1 голос
/ 22 апреля 2019

Я создал функцию C # Azure для генерации PDF-файлов и использую генератор PDF-файлов NReco, но он не работает в Aazure.

Не могли бы вы предложить метод, позволяющий запустить его в Azure?

Я установил генератор NReco Pdf через консоль диспетчера пакетов NuGet и получаю следующую ошибку:

«Доступ к пути» D: \ Program Files (x86) \ SiteExtensions \ Functions\ 1.0.12599 \ wkhtmltopdf 'запрещен.

Это генерируемая трассировка стека:

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
at System.IO.Directory.CreateDirectory(String path)
at NReco.PdfGenerator.HtmlToPdfConverter.EnsureWkHtmlLibs()
at NReco.PdfGenerator.HtmlToPdfConverter.GeneratePdfInternal(WkHtmlInput[] htmlFiles, String inputContent, String coverHtml, String outputPdfFilePath, Stream outputStream)
at NReco.PdfGenerator.HtmlToPdfConverter.GeneratePdfFromFile(String htmlFilePath, String coverHtml)
at VRProductions.Repository.PdfGenerationRepository.<SendMail>d__1.MoveNext()

Этот код используется для генерации PDF:

var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
var pdfBytes = htmlToPdf.GeneratePdfFromFile(blockBlob.Uri.AbsoluteUri, "");

1 Ответ

1 голос
/ 22 апреля 2019

Я могу сгенерировать pdf, используя следующий код функции ... см., Если это поможет ... Функции Azure V1

using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;

namespace FunctionApp41
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");


            var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
            var pdfBytes = htmlToPdf.GeneratePdfFromFile("<file_path_including_sas_token>", "");

            var response = req.CreateResponse(HttpStatusCode.OK);
            response.Content = new StreamContent(new MemoryStream(pdfBytes));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

            return response;
        }
    }
}

если вы запускаете эту функцию локально из visual studio..file будет сгенерирован и pdf будет загружен в браузер или будет предложено сохранить.

http://localhost:7071/api/Function1
...