|
@@ -3,11 +3,7 @@ package com.github.jhonnymertz.wkhtmltopdf.wrapper;
|
|
|
import com.github.jhonnymertz.wkhtmltopdf.wrapper.configurations.FilenameFilterConfig;
|
|
|
import com.github.jhonnymertz.wkhtmltopdf.wrapper.configurations.WrapperConfig;
|
|
|
import com.github.jhonnymertz.wkhtmltopdf.wrapper.exceptions.PDFExportException;
|
|
|
-import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.BaseObject;
|
|
|
-import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.Cover;
|
|
|
-import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.Page;
|
|
|
-import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.SourceType;
|
|
|
-import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.TableOfContents;
|
|
|
+import com.github.jhonnymertz.wkhtmltopdf.wrapper.objects.*;
|
|
|
import com.github.jhonnymertz.wkhtmltopdf.wrapper.params.Param;
|
|
|
import com.github.jhonnymertz.wkhtmltopdf.wrapper.params.Params;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
@@ -26,11 +22,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
-import java.util.concurrent.Callable;
|
|
|
-import java.util.concurrent.ExecutorService;
|
|
|
-import java.util.concurrent.Executors;
|
|
|
-import java.util.concurrent.Future;
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.concurrent.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -320,7 +312,11 @@ public class Pdf {
|
|
|
Future<byte[]> inputStreamToByteArray = executor.submit(streamToByteArrayTask(process.getInputStream()));
|
|
|
Future<byte[]> outputStreamToByteArray = executor.submit(streamToByteArrayTask(process.getErrorStream()));
|
|
|
|
|
|
- process.waitFor();
|
|
|
+ if (!process.waitFor(this.timeout, TimeUnit.SECONDS)) {
|
|
|
+ process.destroy();
|
|
|
+ logger.error("PDF generation failed by defined timeout of {}s, command: {}", timeout, command);
|
|
|
+ throw new RuntimeException("PDF generation timeout by user. Try to increase the timeout.");
|
|
|
+ }
|
|
|
|
|
|
if (!successValues.contains(process.exitValue())) {
|
|
|
byte[] errorStream = getFuture(outputStreamToByteArray);
|