Rails HTML в PDF с помощью кукловода (безголовый хром), как отправить HTML кукловоду - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть приложение rails, которое использует приведенный ниже код для загрузки PDF-файла с HTML-страницы.Работает нормально, но медленно, потому что загружает страницу перед ее сохранением в PDF.

Как я могу отправить HTML прямо с моего сервера Rails, чтобы не нужно было загружать URL?Есть ли какой-нибудь способ визуализации в строку и отправки через него?Или мне нужно сделать в файл, а затем отправить его путь через?

class PagesController < ApplicationController

  def pdf
    tmp = Tempfile.new("tmp/pdf-chrome-puppeteer")
    system("yarn createPDF #{Shellwords.escape("https://google.com")} #{Shellwords.escape(tmp.path)}")
    pdf_filename = "output.pdf"
    send_file(tmp.path, filename: pdf_filename, type: 'application/pdf', disposition: 'attachment')
  end
end

Мой JS:

#!/usr/bin/env node

const puppeteer = require("puppeteer");

const createPdf = async() => {
  const startTime = new Date().getTime();
  let browser;
  try {
    browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
    const page = await browser.newPage();
    await page.goto(process.argv[2], {timeout: 30000, waitUntil: 'networkidle2'});
    await page.pdf({
      path: process.argv[3],
      format: 'A4',
      margin: { top: 36, right: 36, bottom: 20, left: 36 },
      printBackground: true
    });
  } catch (err) {
      console.log(err.message);
  } finally {
    if (browser) {
      browser.close();
    }
    process.exit();
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...