Skip to content
This repository was archived by the owner on Dec 30, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion configuration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,10 @@ resources:
# Enable/disable document upload
upload: true
# Enable/disable document print
print: true
print: true
# Set default document to view
defaultDocument: ''
# Enable/disable documents browse
browse: true
# Enable/disable HTMl rendering mode, false for image mode
htmlMode: true
36 changes: 36 additions & 0 deletions src/main/java/com/aliensoft/quickview/config/QuickViewConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,18 @@ public class Resources{
@JsonProperty
private boolean print;

@Valid
@JsonProperty
private String defaultDocument;

@Valid
@JsonProperty
private boolean browse;

@Valid
@JsonProperty
private boolean htmlMode;

public Boolean getRunAsService() {
return runAsService;
}
Expand Down Expand Up @@ -215,6 +227,30 @@ public boolean isPrint() {
public void setPrint(boolean print) {
this.print = print;
}

public String getDefaultDocument() {
return defaultDocument;
}

public void setDefaultDocument(String defaultDocument) {
this.defaultDocument = defaultDocument;
}

public boolean isBrowse() {
return browse;
}

public void setBrowse(boolean browse) {
this.browse = browse;
}

public boolean isHtmlMode() {
return htmlMode;
}

public void setHtmlMode(boolean htmlMode) {
this.htmlMode = htmlMode;
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
public class LoadedPageWrapper {
private String pageHtml;
private String angle;
private String pageImage;

public String getPageHtml() {
return pageHtml;
Expand All @@ -22,4 +23,12 @@ public String getAngle() {
public void setAngle(String angle) {
this.angle = angle;
}

public String getPageImage() {
return pageImage;
}

public void setPageImage(String pageImage) {
this.pageImage = pageImage;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,21 @@
import com.google.gson.Gson;
import com.groupdocs.viewer.config.ViewerConfig;
import com.groupdocs.viewer.converter.options.HtmlOptions;
import com.groupdocs.viewer.converter.options.ImageOptions;
import com.groupdocs.viewer.domain.FileDescription;
import com.groupdocs.viewer.domain.containers.DocumentInfoContainer;
import com.groupdocs.viewer.domain.containers.FileListContainer;
import com.groupdocs.viewer.domain.options.DocumentInfoOptions;
import com.groupdocs.viewer.domain.options.FileListOptions;
import com.groupdocs.viewer.domain.options.RotatePageOptions;
import com.groupdocs.viewer.handler.ViewerHtmlHandler;
import com.groupdocs.viewer.handler.ViewerImageHandler;
import com.groupdocs.viewer.licensing.License;
import io.dropwizard.jetty.ConnectorFactory;
import io.dropwizard.jetty.HttpConnectorFactory;
import io.dropwizard.server.SimpleServerFactory;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.eclipse.jetty.server.Request;
import org.json.JSONArray;
import org.json.JSONObject;
Expand Down Expand Up @@ -50,6 +53,7 @@
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Base64;

/**
* QuickView
Expand All @@ -61,6 +65,7 @@
public class QuickViewResource extends QuickViewResourcesBase{
private final QuickViewConfig quickViewConfig;
private final ViewerHtmlHandler viewerHtmlHandler;
private final ViewerImageHandler viewerImageHandler;

/**
* Constructor
Expand All @@ -84,6 +89,8 @@ public QuickViewResource(QuickViewConfig quickViewConfig) throws UnknownHostExce
license.setLicense(quickViewConfig.getApplication().getLicensePath());
// initialize viewer instance for the HTML mode
viewerHtmlHandler = new ViewerHtmlHandler(config);
// initialize viewer instance for the Image mode
viewerImageHandler = new ViewerImageHandler(config);
}

/**
Expand Down Expand Up @@ -164,14 +171,20 @@ public Object loadDocumentDescription(@Context HttpServletRequest request, @Cont
String requestBody = getRequestBody(request);
// get/set parameters
String documentGuid = getJsonString(requestBody, "guid");
boolean htmlMode = getJsonBoolean(requestBody, "htmlMode");
// check if documentGuid contains path or only file name
if(!Paths.get(documentGuid).isAbsolute()){
documentGuid = quickViewConfig.getApplication().getFilesDirectory() + "/" + documentGuid;
}
DocumentInfoContainer documentInfoContainer = new DocumentInfoContainer();
// get document info options
DocumentInfoOptions documentInfoOptions = new DocumentInfoOptions(documentGuid);
// get document info container
DocumentInfoContainer documentInfoContainer = viewerHtmlHandler.getDocumentInfo(documentGuid, documentInfoOptions);
if(htmlMode) {
documentInfoContainer = viewerHtmlHandler.getDocumentInfo(documentGuid, documentInfoOptions);
} else {
documentInfoContainer = viewerImageHandler.getDocumentInfo(documentGuid, documentInfoOptions);
}
// return document description
return objectToJson(documentInfoContainer.getPages());
}catch (Exception ex){
Expand Down Expand Up @@ -199,18 +212,33 @@ public Object loadDocumentPage(@Context HttpServletRequest request, @Context Htt
// get/set parameters
String documentGuid = getJsonString(requestBody, "guid");
int pageNumber = getJsonInteger(requestBody, "page");
boolean htmlMode = getJsonBoolean(requestBody, "htmlMode");
LoadedPageWrapper loadedPage = new LoadedPageWrapper();
String angle = "0";
// set options
HtmlOptions htmlOptions = new HtmlOptions();
htmlOptions.setPageNumber(pageNumber);
htmlOptions.setCountPagesToRender(1);
htmlOptions.setResourcesEmbedded(true);
// get page HTML
loadedPage.setPageHtml(viewerHtmlHandler.getPages(documentGuid, htmlOptions).get(0).getHtmlContent());
// get page rotation angle
String angle = String.valueOf(viewerHtmlHandler.getDocumentInfo(documentGuid).getPages().get(pageNumber - 1).getAngle());
if(htmlMode) {
HtmlOptions htmlOptions = new HtmlOptions();
htmlOptions.setPageNumber(pageNumber);
htmlOptions.setCountPagesToRender(1);
htmlOptions.setResourcesEmbedded(true);
// get page HTML
loadedPage.setPageHtml(viewerHtmlHandler.getPages(documentGuid, htmlOptions).get(0).getHtmlContent());
// get page rotation angle
angle = String.valueOf(viewerHtmlHandler.getDocumentInfo(documentGuid).getPages().get(pageNumber - 1).getAngle());
} else {
ImageOptions imageOptions = new ImageOptions();
imageOptions.setPageNumber(pageNumber);
imageOptions.setCountPagesToRender(1);
// get page image
byte[] bytes = IOUtils.toByteArray(viewerImageHandler.getPages(documentGuid, imageOptions).get(0).getStream());
// encode ByteArray into String
String incodedImage = new String(Base64.getEncoder().encode(bytes));
loadedPage.setPageImage(incodedImage);
// get page rotation angle
angle = String.valueOf(viewerImageHandler.getDocumentInfo(documentGuid).getPages().get(pageNumber - 1).getAngle());
}
loadedPage.setAngle(angle);
// return html
// return loaded page object
return objectToJson(loadedPage);
}catch (Exception ex){
// set response content type
Expand Down Expand Up @@ -240,6 +268,7 @@ public Object rotateDocumentPages(@Context HttpServletRequest request, @Context
String documentGuid = getJsonString(requestBody, "guid");
int angle = Integer.parseInt(getJsonString(requestBody, "angle"));
JSONArray pages = new JSONObject(requestBody).getJSONArray("pages");
boolean htmlMode = getJsonBoolean(requestBody, "htmlMode");
// a list of the rotated pages info
ArrayList<RotatedPageWrapper> rotatedPages = new ArrayList<RotatedPageWrapper>();
// rotate pages
Expand All @@ -249,11 +278,17 @@ public Object rotateDocumentPages(@Context HttpServletRequest request, @Context
int pageNumber = Integer.parseInt(pages.get(i).toString());
RotatePageOptions rotateOptions = new RotatePageOptions(pageNumber, angle);
// perform page rotation
viewerHtmlHandler.rotatePage(documentGuid, rotateOptions);
String resultAngle = "0";
if(htmlMode) {
viewerHtmlHandler.rotatePage(documentGuid, rotateOptions);
resultAngle = String.valueOf(viewerHtmlHandler.getDocumentInfo(documentGuid).getPages().get(pageNumber - 1).getAngle());
} else {
viewerImageHandler.rotatePage(documentGuid, rotateOptions);
resultAngle = String.valueOf(viewerImageHandler.getDocumentInfo(documentGuid).getPages().get(pageNumber - 1).getAngle());
}
// add rotated page number
rotatedPage.setPageNumber(pageNumber);
// add rotated page angle
String resultAngle = String.valueOf(viewerHtmlHandler.getDocumentInfo(documentGuid).getPages().get(pageNumber - 1).getAngle());
rotatedPage.setAngle(resultAngle);
// add rotated page object into resulting list
rotatedPages.add(rotatedPage);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,15 @@ protected int getJsonInteger(String json, String key){
return value;
}

protected boolean getJsonBoolean(String json, String key){
boolean value = true;
try {
JSONObject jsonObject = new JSONObject(json);
value = jsonObject.getBoolean(key);
} catch (JSONException e) {
e.printStackTrace();
}
return value;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@
rotate: ${config.resources.rotate?c},
download: ${config.resources.download?c},
upload: ${config.resources.upload?c},
print: ${config.resources.print?c}
print: ${config.resources.print?c},
defaultDocument: '${config.resources.defaultDocument}',
browse: ${config.resources.browse?c},
htmlMode: ${config.resources.htmlMode?c}
});
</script>
</body>
Expand Down