У меня есть список HTML размером 10. Некоторые HTML содержат SVG-контент. Я пытаюсь сгенерировать PDF, объединив все HTML-файлы с помощью iText 7.
Когда я пытаюсь выполнить последовательное / нормальное выполнение, генерация PDF занимает около 1 минуты 30 секунд, поскольку содержимое SVG находится в процессе. обрабатывается с использованием Apache Batik отдельно для преобразования в PDF, а затем объединяется с его отдельным родительским PDF.
Позже я попытался использовать многопоточный подход с использованием службы executor с функцией callable, но производительность не улучшилась, поскольку для создания PDF-файла также требуется около 1 минуты 30 секунд. Ниже приведен код. Может кто-нибудь, пожалуйста, дайте мне знать, правильно ли я использую многопоточность?
//List<HtmlTemplateBean> htmlSources is the input
List<ByteArrayOutputStream> pdfDocumentList= new ArrayList<ByteArrayOutputStream>();
List<Future<ByteArrayOutputStream>> futureList= new ArrayList<Future<ByteArrayOutputStream>>();
ExecutorService executorService = Executors.newFixedThreadPool(htmlSources.size());
Vector<Callable<ByteArrayOutputStream>> callables = new Vector<Callable<ByteArrayOutputStream>>();
for (HtmlTemplateBean htmlTemplateBean : htmlSources) {
callables.add(new PDFGenerator(htmlTemplateBean,userData,headerData,baseUri,tokenName,tokenValue));
}
try {
futureList = executorService.invokeAll(callables);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
for(Future<ByteArrayOutputStream> future : futureList){
ByteArrayOutputStream bytesData = null;
try {
try {
bytesData = future.get(60,TimeUnit.SECONDS);
} catch (TimeoutException e) {
LOGGER.error("TimeoutException : " , e.getMessage());
e.printStackTrace();
}
System.out.println("Task Done : " + future.isDone());
} catch (InterruptedException | ExecutionException e) {
LOGGER.error("InterruptedException | ExecutionException : " , e.getMessage());
e.printStackTrace();
}
pdfDocumentList.add(bytesData);
}
executorService.shutdown();
//pdfDocumentList will be used to generate the Merged PDF