Chrome без головы выполнен на Java
В настоящее время я пытаюсь улучшить существующий PDF-сервис, написанный на Java, с помощью простой функции web-PDF с использованием безголового хрома.
У меня есть работающий прототип, и сейчас я пытаюсь разобраться с некоторыми деталями: есть ли способ, чтобы рендеринг PDF был только в памяти, а не сначала записывать его в файл? Если нужен временный файл, каков наилучший подход для временной папки, которая работает в системах Windows и NIX, когда я хочу сохранить свой исполняемый файл без дополнительного параметра?
Фрагмент кода (Windows):
private static final String HEADLES_PARAM = "--headless";
private static final String GPU_PARAM = "--disable-gpu";
private static final String PDF_PARAM = "--print-to-pdf";
private byte[] printToPDF(String path, String fileName) throws IOException, InterruptedException {
String filePath = "C:\\Users\\thomas.amsler\\Documents\\" + fileName;
String pdfParam = PDF_PARAM + "=" + filePath;
ProcessBuilder pb = new ProcessBuilder("chrome", HEADLES_PARAM, GPU_PARAM, pdfParam, path);
Process process = pb.start();
process.waitFor(TIMEOUT_IN_MS, TimeUnit.MILLISECONDS);
return Files.readAllBytes(Paths.get(filePath));
}
Дополнительный вопрос: есть ли способ поддерживать работу Chrome во время работы службы?