forked from kklisura/chrome-devtools-java-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIncreasedIncomingBufferInTyrusExample.java
124 lines (108 loc) · 4.17 KB
/
IncreasedIncomingBufferInTyrusExample.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package com.github.kklisura.cdt.examples;
import com.github.kklisura.cdt.launch.ChromeLauncher;
import com.github.kklisura.cdt.protocol.commands.Page;
import com.github.kklisura.cdt.protocol.types.page.PrintToPDF;
import com.github.kklisura.cdt.protocol.types.page.PrintToPDFTransferMode;
import com.github.kklisura.cdt.services.ChromeDevToolsService;
import com.github.kklisura.cdt.services.ChromeService;
import com.github.kklisura.cdt.services.factory.impl.DefaultWebSocketContainerFactory;
import com.github.kklisura.cdt.services.types.ChromeTab;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Base64;
/**
* This example demonstrates how to increase incoming buffer size in Tyrus client. Use the following
* example to fix the issues with Tyrus Buffer overflow. This issue occurs when the incoming message
* size is larger than the incoming buffer in Tyrus client at which the client disconnects.
*
* @author Kenan Klisura
*/
public class IncreasedIncomingBufferInTyrusExample {
static {
// Set the incoming buffer to 24MB
System.setProperty(
DefaultWebSocketContainerFactory.WEBSOCKET_INCOMING_BUFFER_PROPERTY,
Long.toString((long) DefaultWebSocketContainerFactory.MB * 24));
}
public static void main(String[] args) {
// Create chrome launcher.
final ChromeLauncher launcher = new ChromeLauncher();
// Launch chrome either as headless (true) - PDF printing is only supported on Chrome headless
// at the moment
final ChromeService chromeService = launcher.launch(true);
// Create empty tab ie about:blank.
final ChromeTab tab = chromeService.createTab();
// Get DevTools service to this tab
final ChromeDevToolsService devToolsService = chromeService.createDevToolsService(tab);
// Get individual commands
final Page page = devToolsService.getPage();
page.enable();
// Navigate to github.com.
page.navigate("https://github.com");
page.onLoadEventFired(
loadEventFired -> {
System.out.println("Printing to PDF...");
final String outputFilename = "test.pdf";
Boolean landscape = false;
Boolean displayHeaderFooter = false;
Boolean printBackground = false;
Double scale = 1d;
Double paperWidth = 8.27d; // A4 paper format
Double paperHeight = 11.7d; // A4 paper format
Double marginTop = 0d;
Double marginBottom = 0d;
Double marginLeft = 0d;
Double marginRight = 0d;
String pageRanges = "";
Boolean ignoreInvalidPageRanges = false;
String headerTemplate = "";
String footerTemplate = "";
Boolean preferCSSPageSize = false;
PrintToPDFTransferMode mode = PrintToPDFTransferMode.RETURN_AS_BASE_64;
dump(
outputFilename,
devToolsService
.getPage()
.printToPDF(
landscape,
displayHeaderFooter,
printBackground,
scale,
paperWidth,
paperHeight,
marginTop,
marginBottom,
marginLeft,
marginRight,
pageRanges,
ignoreInvalidPageRanges,
headerTemplate,
footerTemplate,
preferCSSPageSize,
mode));
System.out.println("Done!");
devToolsService.close();
});
devToolsService.waitUntilClosed();
}
private static void dump(String fileName, PrintToPDF data) {
FileOutputStream fileOutputStream = null;
try {
File file = new File(fileName);
fileOutputStream = new FileOutputStream(file);
fileOutputStream.write(Base64.getDecoder().decode(data.getData()));
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}