|
3 | 3 | import com.github.jhonnymertz.wkhtmltopdf.wrapper.configurations.FilenameFilterConfig; |
4 | 4 | import com.github.jhonnymertz.wkhtmltopdf.wrapper.configurations.WrapperConfig; |
5 | 5 | import com.github.jhonnymertz.wkhtmltopdf.wrapper.exceptions.PDFExportException; |
6 | | -import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.BaseObject; |
7 | | -import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.Cover; |
8 | | -import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.Page; |
9 | | -import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.SourceType; |
10 | | -import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.TableOfContents; |
| 6 | +import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.*; |
11 | 7 | import com.github.jhonnymertz.wkhtmltopdf.wrapper.params.Param; |
12 | 8 | import com.github.jhonnymertz.wkhtmltopdf.wrapper.params.Params; |
13 | 9 | import org.apache.commons.io.FileUtils; |
|
26 | 22 | import java.util.Arrays; |
27 | 23 | import java.util.Collections; |
28 | 24 | import java.util.List; |
29 | | -import java.util.concurrent.Callable; |
30 | | -import java.util.concurrent.ExecutorService; |
31 | | -import java.util.concurrent.Executors; |
32 | | -import java.util.concurrent.Future; |
33 | | -import java.util.concurrent.TimeUnit; |
| 25 | +import java.util.concurrent.*; |
34 | 26 | import java.util.stream.Collectors; |
35 | 27 |
|
36 | 28 | /** |
@@ -320,7 +312,11 @@ public byte[] getPDF() throws IOException, InterruptedException, PDFExportExcept |
320 | 312 | Future<byte[]> inputStreamToByteArray = executor.submit(streamToByteArrayTask(process.getInputStream())); |
321 | 313 | Future<byte[]> outputStreamToByteArray = executor.submit(streamToByteArrayTask(process.getErrorStream())); |
322 | 314 |
|
323 | | - process.waitFor(); |
| 315 | + if (!process.waitFor(this.timeout, TimeUnit.SECONDS)) { |
| 316 | + process.destroy(); |
| 317 | + logger.error("PDF generation failed by defined timeout of {}s, command: {}", timeout, command); |
| 318 | + throw new RuntimeException("PDF generation timeout by user. Try to increase the timeout."); |
| 319 | + } |
324 | 320 |
|
325 | 321 | if (!successValues.contains(process.exitValue())) { |
326 | 322 | byte[] errorStream = getFuture(outputStreamToByteArray); |
|
0 commit comments