Arhn - архитектура программирования

Веб-сайт Azure и рабочая роль HTML в PDF

Я пробовал несколько библиотек .NET pdf для создания pdf-страницы из html-страницы.

Ну, в Azure это не работает для веб-сайта, потому что я получаю тайм-аут.

Я нашел в Интернете, что люди говорят о запуске преобразования PDF в качестве рабочей роли.

Кто-нибудь знает, как настроить рабочую роль для работы с веб-сайтом Azure.

Я не могу найти много информации в Интернете об этом. Является ли это возможным?


Ответы:


1

Вы путаете вещи. Веб-сайты Azure — это служба. Рабочая роль Azure — это виртуальная машина без отслеживания состояния, работающая в облачной службе. Это две отдельные вещи. Кроме того, вам не нужна рабочая роль для создания PDF-файлов (хотя это, безусловно, жизнеспособный вариант). Вам просто нужна возможность установить программное обеспечение для рендеринга PDF, будь то в Windows или в Linux.

Вы не сможете установить такое программное обеспечение на веб-сайтах Azure, но вы можете установить программное обеспечение в сетевых/рабочих ролях Azure (через сценарии запуска) или на виртуальных машинах (через ssh/rdp). Что вы выберете, а также библиотеку PDF, которую вы выберете, полностью зависит от вас (и здесь выходит за рамки, поскольку этот уровень архитектуры субъективен).

19.02.2015
  • Большое спасибо за твою помощь. Это имеет смысл для меня. Я понимаю, что я должен сделать сейчас. 19.02.2015
  • Пожалуйста, не забудьте отметить ответ, @Kurt. Добро пожаловать в StackOverflow. 19.02.2015

  • 2

    EVO предлагает решение для преобразования HTML в PDF на веб-сайтах Azure. Вот фрагмент кода для создания PDF из HTML на веб-сайтах Azure:

    protected void convertToPdfButton_Click(object sender, EventArgs e)
    {
        // Get the server IP and port
        String serverIP = textBoxServerIP.Text;
        uint serverPort = uint.Parse(textBoxServerPort.Text);
    
        // Create a HTML to PDF converter object with default settings
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(serverIP, serverPort);
    
        // Set optional service password
        if (textBoxServicePassword.Text.Length > 0)
            htmlToPdfConverter.ServicePassword = textBoxServicePassword.Text;
    
        // Set HTML Viewer width in pixels which is the equivalent in converter of the browser window width
        htmlToPdfConverter.HtmlViewerWidth = int.Parse(htmlViewerWidthTextBox.Text);
    
        // Set HTML viewer height in pixels to convert the top part of a HTML page 
        // Leave it not set to convert the entire HTML
        if (htmlViewerHeightTextBox.Text.Length > 0)
            htmlToPdfConverter.HtmlViewerHeight = int.Parse(htmlViewerHeightTextBox.Text);
    
        // Set PDF page size which can be a predefined size like A4 or a custom size in points 
        // Leave it not set to have a default A4 PDF page
        htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = SelectedPdfPageSize();
    
        // Set PDF page orientation to Portrait or Landscape
        // Leave it not set to have a default Portrait orientation for PDF page
        htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = SelectedPdfPageOrientation();
    
        // Set the maximum time in seconds to wait for HTML page to be loaded 
        // Leave it not set for a default 60 seconds maximum wait time
        htmlToPdfConverter.NavigationTimeout = int.Parse(navigationTimeoutTextBox.Text);
    
        // Set an adddional delay in seconds to wait for JavaScript or AJAX calls after page load completed
        // Set this property to 0 if you don't need to wait for such asynchcronous operations to finish
        if (conversionDelayTextBox.Text.Length > 0)
            htmlToPdfConverter.ConversionDelay = int.Parse(conversionDelayTextBox.Text);
    
        // The buffer to receive the generated PDF document
        byte[] outPdfBuffer = null;
    
        if (convertUrlRadioButton.Checked)
        {
            string url = urlTextBox.Text;
    
            // Convert the HTML page given by an URL to a PDF document in a memory buffer
            outPdfBuffer = htmlToPdfConverter.ConvertUrl(url);
        }
        else
        {
            string htmlString = htmlStringTextBox.Text;
            string baseUrl = baseUrlTextBox.Text;
    
            // Convert a HTML string with a base URL to a PDF document in a memory buffer
            outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlString, baseUrl);
        }
    
        // Send the PDF as response to browser
    
        // Set response content type
        Response.AddHeader("Content-Type", "application/pdf");
    
        // Instruct the browser to open the PDF file as an attachment or inline
        Response.AddHeader("Content-Disposition", String.Format("{0}; filename=Getting_Started.pdf; size={1}",
            openInlineCheckBox.Checked ? "inline" : "attachment", outPdfBuffer.Length.ToString()));
    
        // Write the PDF document buffer to HTTP response
        Response.BinaryWrite(outPdfBuffer);
    
        // End the HTTP response and stop the current page processing
        Response.End();
    }
    
    10.08.2015
  • Не могли бы вы объяснить мне, что такое IP-адрес сервера и номер порта? И как наш код будет выполняться на сервере? 07.06.2018

  • 3

    Я автор пакета Rotativa nuget. По соображениям политики безопасности и ограничениям ОС его нельзя использовать на веб-сайтах Azure. Чтобы решить эту проблему, я создал версию SaaS в Azure.

    Это очень простой в использовании API, просто установите специальный пакет nuget:

    PM> Install-Package RotativaHQ
    

    И создавайте PDF-файлы из Razor Views так же просто, как:

    return new ViewAsPdf(model);
    

    Не нужно ничего особенного в View/HTML. Нет необходимости в абсолютных URL-адресах в ссылках images/css/js. Работает и на локальном хосте (машина разработки).

    В настоящее время служба имеет конечные точки в 4 регионах Azure: Восток США, Запад США, Север ЕС и Юго-Восточная Азия.

    Это быстро, так как он использует проприетарный протокол для отправки содержимого веб-страницы в API для преобразования в PDF.

    Это надежно, потому что все конечные точки сбалансированы по нагрузке.

    Подробности на сайте:

    https://rotativahq.com

    01.06.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..