11
11
import com .google .gson .Gson ;
12
12
import com .groupdocs .viewer .config .ViewerConfig ;
13
13
import com .groupdocs .viewer .converter .options .HtmlOptions ;
14
+ import com .groupdocs .viewer .converter .options .ImageOptions ;
14
15
import com .groupdocs .viewer .domain .FileDescription ;
15
16
import com .groupdocs .viewer .domain .containers .DocumentInfoContainer ;
16
17
import com .groupdocs .viewer .domain .containers .FileListContainer ;
17
18
import com .groupdocs .viewer .domain .options .DocumentInfoOptions ;
18
19
import com .groupdocs .viewer .domain .options .FileListOptions ;
19
20
import com .groupdocs .viewer .domain .options .RotatePageOptions ;
20
21
import com .groupdocs .viewer .handler .ViewerHtmlHandler ;
22
+ import com .groupdocs .viewer .handler .ViewerImageHandler ;
21
23
import com .groupdocs .viewer .licensing .License ;
22
24
import io .dropwizard .jetty .ConnectorFactory ;
23
25
import io .dropwizard .jetty .HttpConnectorFactory ;
24
26
import io .dropwizard .server .SimpleServerFactory ;
25
27
import org .apache .commons .io .FilenameUtils ;
28
+ import org .apache .commons .io .IOUtils ;
26
29
import org .eclipse .jetty .server .Request ;
27
30
import org .json .JSONArray ;
28
31
import org .json .JSONObject ;
50
53
import java .nio .file .Paths ;
51
54
import java .nio .file .StandardCopyOption ;
52
55
import java .util .ArrayList ;
56
+ import java .util .Base64 ;
53
57
54
58
/**
55
59
* QuickView
61
65
public class QuickViewResource extends QuickViewResourcesBase {
62
66
private final QuickViewConfig quickViewConfig ;
63
67
private final ViewerHtmlHandler viewerHtmlHandler ;
68
+ private final ViewerImageHandler viewerImageHandler ;
64
69
65
70
/**
66
71
* Constructor
@@ -84,6 +89,8 @@ public QuickViewResource(QuickViewConfig quickViewConfig) throws UnknownHostExce
84
89
license .setLicense (quickViewConfig .getApplication ().getLicensePath ());
85
90
// initialize viewer instance for the HTML mode
86
91
viewerHtmlHandler = new ViewerHtmlHandler (config );
92
+ // initialize viewer instance for the Image mode
93
+ viewerImageHandler = new ViewerImageHandler (config );
87
94
}
88
95
89
96
/**
@@ -164,14 +171,20 @@ public Object loadDocumentDescription(@Context HttpServletRequest request, @Cont
164
171
String requestBody = getRequestBody (request );
165
172
// get/set parameters
166
173
String documentGuid = getJsonString (requestBody , "guid" );
174
+ boolean htmlMode = getJsonBoolean (requestBody , "htmlMode" );
167
175
// check if documentGuid contains path or only file name
168
176
if (!Paths .get (documentGuid ).isAbsolute ()){
169
177
documentGuid = quickViewConfig .getApplication ().getFilesDirectory () + "/" + documentGuid ;
170
178
}
179
+ DocumentInfoContainer documentInfoContainer = new DocumentInfoContainer ();
171
180
// get document info options
172
181
DocumentInfoOptions documentInfoOptions = new DocumentInfoOptions (documentGuid );
173
182
// get document info container
174
- DocumentInfoContainer documentInfoContainer = viewerHtmlHandler .getDocumentInfo (documentGuid , documentInfoOptions );
183
+ if (htmlMode ) {
184
+ documentInfoContainer = viewerHtmlHandler .getDocumentInfo (documentGuid , documentInfoOptions );
185
+ } else {
186
+ documentInfoContainer = viewerImageHandler .getDocumentInfo (documentGuid , documentInfoOptions );
187
+ }
175
188
// return document description
176
189
return objectToJson (documentInfoContainer .getPages ());
177
190
}catch (Exception ex ){
@@ -199,18 +212,33 @@ public Object loadDocumentPage(@Context HttpServletRequest request, @Context Htt
199
212
// get/set parameters
200
213
String documentGuid = getJsonString (requestBody , "guid" );
201
214
int pageNumber = getJsonInteger (requestBody , "page" );
215
+ boolean htmlMode = getJsonBoolean (requestBody , "htmlMode" );
202
216
LoadedPageWrapper loadedPage = new LoadedPageWrapper ();
217
+ String angle = "0" ;
203
218
// set options
204
- HtmlOptions htmlOptions = new HtmlOptions ();
205
- htmlOptions .setPageNumber (pageNumber );
206
- htmlOptions .setCountPagesToRender (1 );
207
- htmlOptions .setResourcesEmbedded (true );
208
- // get page HTML
209
- loadedPage .setPageHtml (viewerHtmlHandler .getPages (documentGuid , htmlOptions ).get (0 ).getHtmlContent ());
210
- // get page rotation angle
211
- String angle = String .valueOf (viewerHtmlHandler .getDocumentInfo (documentGuid ).getPages ().get (pageNumber - 1 ).getAngle ());
219
+ if (htmlMode ) {
220
+ HtmlOptions htmlOptions = new HtmlOptions ();
221
+ htmlOptions .setPageNumber (pageNumber );
222
+ htmlOptions .setCountPagesToRender (1 );
223
+ htmlOptions .setResourcesEmbedded (true );
224
+ // get page HTML
225
+ loadedPage .setPageHtml (viewerHtmlHandler .getPages (documentGuid , htmlOptions ).get (0 ).getHtmlContent ());
226
+ // get page rotation angle
227
+ angle = String .valueOf (viewerHtmlHandler .getDocumentInfo (documentGuid ).getPages ().get (pageNumber - 1 ).getAngle ());
228
+ } else {
229
+ ImageOptions imageOptions = new ImageOptions ();
230
+ imageOptions .setPageNumber (pageNumber );
231
+ imageOptions .setCountPagesToRender (1 );
232
+ // get page image
233
+ byte [] bytes = IOUtils .toByteArray (viewerImageHandler .getPages (documentGuid , imageOptions ).get (0 ).getStream ());
234
+ // encode ByteArray into String
235
+ String incodedImage = new String (Base64 .getEncoder ().encode (bytes ));
236
+ loadedPage .setPageImage (incodedImage );
237
+ // get page rotation angle
238
+ angle = String .valueOf (viewerImageHandler .getDocumentInfo (documentGuid ).getPages ().get (pageNumber - 1 ).getAngle ());
239
+ }
212
240
loadedPage .setAngle (angle );
213
- // return html
241
+ // return loaded page object
214
242
return objectToJson (loadedPage );
215
243
}catch (Exception ex ){
216
244
// set response content type
@@ -240,6 +268,7 @@ public Object rotateDocumentPages(@Context HttpServletRequest request, @Context
240
268
String documentGuid = getJsonString (requestBody , "guid" );
241
269
int angle = Integer .parseInt (getJsonString (requestBody , "angle" ));
242
270
JSONArray pages = new JSONObject (requestBody ).getJSONArray ("pages" );
271
+ boolean htmlMode = getJsonBoolean (requestBody , "htmlMode" );
243
272
// a list of the rotated pages info
244
273
ArrayList <RotatedPageWrapper > rotatedPages = new ArrayList <RotatedPageWrapper >();
245
274
// rotate pages
@@ -249,11 +278,17 @@ public Object rotateDocumentPages(@Context HttpServletRequest request, @Context
249
278
int pageNumber = Integer .parseInt (pages .get (i ).toString ());
250
279
RotatePageOptions rotateOptions = new RotatePageOptions (pageNumber , angle );
251
280
// perform page rotation
252
- viewerHtmlHandler .rotatePage (documentGuid , rotateOptions );
281
+ String resultAngle = "0" ;
282
+ if (htmlMode ) {
283
+ viewerHtmlHandler .rotatePage (documentGuid , rotateOptions );
284
+ resultAngle = String .valueOf (viewerHtmlHandler .getDocumentInfo (documentGuid ).getPages ().get (pageNumber - 1 ).getAngle ());
285
+ } else {
286
+ viewerImageHandler .rotatePage (documentGuid , rotateOptions );
287
+ resultAngle = String .valueOf (viewerImageHandler .getDocumentInfo (documentGuid ).getPages ().get (pageNumber - 1 ).getAngle ());
288
+ }
253
289
// add rotated page number
254
290
rotatedPage .setPageNumber (pageNumber );
255
291
// add rotated page angle
256
- String resultAngle = String .valueOf (viewerHtmlHandler .getDocumentInfo (documentGuid ).getPages ().get (pageNumber - 1 ).getAngle ());
257
292
rotatedPage .setAngle (resultAngle );
258
293
// add rotated page object into resulting list
259
294
rotatedPages .add (rotatedPage );
0 commit comments