Skip to content

Commit

Permalink
Release GroupDocs.Viewer for Java v24.6 (#86)
Browse files Browse the repository at this point in the history
Co-authored-by: aleksey.permyakov <[email protected]>
  • Loading branch information
liosha2007 and oleksii-unnamed committed Jul 8, 2024
1 parent 516bb84 commit b6938f0
Show file tree
Hide file tree
Showing 29 changed files with 594 additions and 3 deletions.
6 changes: 3 additions & 3 deletions java/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ AddLibInfoScript: True
<img src="data:image/png;base64,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" alt="groupdocs-viewer-java-home" align="left" style="width:110px; margin: 0 30px 30px 0"/>

<dt class="flex flex-wrap align-center gdoc-props__meta">
<a href='https://releases.groupdocs.com/java/repo/com/groupdocs/groupdocs-viewer/23.4/' class="release-version-link">
<a href='https://releases.groupdocs.com/java/repo/com/groupdocs/groupdocs-viewer/24.6/' class="release-version-link">
<span class="gdoc-props__tag tip">Latest version
<i class="release-version-number">23.4</i>
<i class="release-version-month">(April 2023)</i>
<i class="release-version-number">24.6</i>
<i class="release-version-month">(June 2024)</i>
</span>
</a>
</dt>
Expand Down
122 changes: 122 additions & 0 deletions java/developer-guide/loading-documents/loading-external-resources.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
---
id: loading-external-resources
url: viewer/java/loading-external-resources
title: Loading of external resources containing by a document
weight: 5
keywords: set timeout, Groupdocs.Viewer
description: "This article explains how to manage loading of external resources contained by a document with GroupDocs.Viewer within your Java applications."
productName: GroupDocs.Viewer for Java
hideChildren: False
---

If the document contains external resources, such as images, GroupDocs.Viewer loads them when rendering a document. This allows the document to display correctly, but is a potential security risk.

GroupDocs.Viewer allows you to manage loading of external resources contained by a document. These features are supported for the following formats:
- [Word Processing File Formats](https://docs.fileformat.com/word-processing/)
- [Web File Formats](https://docs.fileformat.com/web/)
- [SpreadSheet File Formats](https://docs.fileformat.com/spreadsheet/)

Use the [LoadOptions](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/loadoptions/) object to manage loading of external resources.

## Skip loading of external resources

The following code snippet shows how to deny loading of external resources:

{{< tabs "example3">}}
{{< tab "Java" >}}
```java
LoadOptions loadOptions = new LoadOptions();
loadOptions.setSkipExternalResources(true); // Skip loading of external resources

try (Viewer viewer = new Viewer("business-flyer.docx", loadOptions)) {
HtmlViewOptions viewOptions = HtmlViewOptions.forEmbeddedResources();

viewer.view(viewOptions);
}
```
{{< /tab >}}
{{< tab "Kotlin">}}
```kotlin
val loadOptions = LoadOptions()
loadOptions.isSkipExternalResources = true // Skip loading of external resources

Viewer("business-flyer.docx", loadOptions).use { viewer ->
val viewOptions = HtmlViewOptions.forEmbeddedResources()

viewer.view(viewOptions)
}
```
{{< /tab >}}
{{< /tabs >}}

The following images show the output file with and without external resources (see top right corner):

| loadOptions.setSkipExternalResources(false) | loadOptions.setSkipExternalResources(true) |
|-----------------------------------------------------------|-------------------------------------------------------------|
| ![False](/viewer/java/images/with-external-resources.png) | ![True](/viewer/java/images/without-external-resources.png) |

## Manage a safelist for loading external resources

The following code snippet shows how to allow loading of external resources from specific URLs:

{{< tabs "example2">}}
{{< tab "Java" >}}
```java
LoadOptions loadOptions = new LoadOptions();
loadOptions.setSkipExternalResources(true); // Skip loading of all external resources
loadOptions.getWhitelistedResources().add("avatars.githubusercontent.com"); // Enable loading of external resources that has `avatars.githubusercontent.com` fragment in resource URL.

try (Viewer viewer = new Viewer("business-flyer.docx", loadOptions)) {
HtmlViewOptions viewOptions = HtmlViewOptions.forEmbeddedResources();
viewer.view(viewOptions);
}
```
{{< /tab >}}
{{< tab "Kotlin">}}
```kotlin
val loadOptions = LoadOptions()
loadOptions.isSkipExternalResources = true // Skip loading of all external resources
loadOptions.whitelistedResources.add("avatars.githubusercontent.com") // Enable loading of external resources that has `avatars.githubusercontent.com` fragment in resource URL.

val viewer = Viewer("business-flyer.docx", loadOptions)
val viewOptions = HtmlViewOptions.forEmbeddedResources()
viewer.use {
it.view(viewOptions)
}
```
{{< /tab >}}
{{< /tabs >}}

## Set timeout for loading of external resources

The default timeout is 10 seconds. GroupDocs.Viewer allows you to change this value.

The following code snippet shows how to set a timeout to load external resources:

{{< tabs "example1">}}
{{< tab "Java" >}}
```java
// Specify a timeout.
LoadOptions loadOptions = new LoadOptions();
loadOptions.setResourceLoadingTimeout(5000);
// Render a file.
try (Viewer viewer = new Viewer("sample.docx", loadOptions)) {
HtmlViewOptions viewOptions = HtmlViewOptions.forEmbeddedResources();
viewer.view(viewOptions);
}
```
{{< /tab >}}
{{< tab "Kotlin">}}
```kotlin
// Specify a timeout.
val loadOptions = LoadOptions()
loadOptions.setResourceLoadingTimeout(5000)
// Render a file.
Viewer("sample.docx", loadOptions).use { viewer ->
val viewOptions = HtmlViewOptions.forEmbeddedResources()
viewer.view(viewOptions)
}

```
{{< /tab >}}
{{< /tabs >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
id: optimization-pdf-options
url: viewer/java/optimization-pdf-options
title: Optimize the output PDF file
linkTitle: Optimize the output PDF file
weight: 6
description: "This topic describes how to optimize PDF file in the GroupDocs.Viewer Java API for web browser or to reduce size."
keywords: convert to pdf, optimize size, optimize browser, optimize web, pdf reduce size
productName: GroupDocs.Viewer for Java
hideChildren: False
toc: True
---
GroupDocs.Viewer allows you to optimize the output PDF file for a web browser or to reduce the file size by optimizing resources.

Optimization for a web allows a browser to display the first pages of a PDF file when you open the document, instead of waiting for the entire file to download.

Resource optimization allows you to reduce the size of the output PDF file. While optimizing, GroupDocs.Viewer may reduce the image size or quality, remove notes or form fields, remove objects, fonts, or personal information from a document, and so on.

You can also optimize an existing PDF file. To do this, open it, specify the optimization parameters, and save the output file.


Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
id: optimization-pdf-for-web
url: viewer/java/optimization-pdf-for-web
title: Optimize a PDF file for a browser
linkTitle: Optimize a PDF file for a browser
weight: 1
description: "This topic describes how to optimize PDF file using the GroupDocs.Viewer Java API for web browser or to reduce size."
keywords: convert to pdf, optimize browser, optimize web
productName: GroupDocs.Viewer for Java
hideChildren: False
toc: True
---
This optimization allows a browser to display the first pages of a PDF file when you open the document, instead of waiting for the entire file to download.

The following code snippet shows how to optimize a PDF file for browser:
{{< tabs "Example1">}}
{{< tab "Java" >}}
```java
try (Viewer viewer = new Viewer("sample.docx")) {
PdfViewOptions viewOptions = new PdfViewOptions();
viewOptions.setPdfOptimizationOptions(new PdfOptimizationOptions());
viewOptions.getPdfOptimizationOptions().setLinearize(true);

viewer.view(viewOptions);
}
```
{{</ tab >}}
{{</ tabs >}}


Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
id: optimization-pdf-resources
url: viewer/java/optimization-pdf-resources
title: Optimize the PDF file resources
linkTitle: Optimize the PDF file resources
weight: 2
description: "This topic describes how to optimize PDF file using the GroupDocs.Viewer Java API to reduce size."
keywords: convert to pdf, optimize size, pdf reduce size
productName: GroupDocs.Viewer for Java
hideChildren: False
toc: True
---
Resource optimization allows you to reduce the size of the output PDF file. While optimizing, GroupDocs.Viewer may reduce the image size or quality, remove notes or form fields, remove objects, fonts, or personal information from a document, and so on.

The following code snippet shows how to optimize the PDF file by default:

{{< tabs "Example1">}}
{{< tab "Java" >}}
```java
try (Viewer viewer = new Viewer("sample.docx")) {
PdfViewOptions viewOptions = new PdfViewOptions();
viewOptions.setPdfOptimizationOptions(new PdfOptimizationOptions());

viewer.view(viewOptions);
}
```
{{</ tab >}}
{{</ tabs >}}


Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
id: optimization-pdf-spreadsheets
url: viewer/java/optimization-pdf-spreadsheets
title: Optimize spreadsheets in a PDF file
linkTitle: Optimize spreadsheets in a PDF file
weight: 3
description: "This topic describes how to optimize spreadsheets in a PDF file using the GroupDocs.Viewer Java API."
keywords: convert to pdf, optimize browser, optimize web
productName: GroupDocs.Viewer for Java
hideChildren: False
toc: True
---
This optimization allows to reduce the output file size by setting up border lines. Besides that, it removes the Arial and Times New Roman characters of 32-127 codes.

The default value is `false`.


The following code snippet shows how to optimize spreadsheets in a PDF file:

{{< tabs "Example1">}}
{{< tab "Java" >}}
```java
try (Viewer viewer = new Viewer("invoice.xlsx")) {
PdfViewOptions viewOptions = new PdfViewOptions();
PdfOptimizationOptions optimizationOptions = new PdfOptimizationOptions();
optimizationOptions.setOptimizeSpreadsheets(true);
viewOptions.setPdfOptimizationOptions(optimizationOptions);
viewer.view(viewOptions);
}
```
{{</ tab >}}
{{</ tabs >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
id: optimize-content
url: viewer/java/optimize-content
title: Optimize content
weight: 5
description: "Optimize content of a PDF file using GroupDocs.Viewer for Java"
productName: GroupDocs.Viewer for Java
hideChildren: False
isMenuItemWithNoContent: True
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
id: optimization-pdf-remove-annotations
url: viewer/java/optimization-pdf-remove-annotations
title: Remove annotations
linkTitle: Remove annotations
weight: 1
description: "This topic describes how to remove annotations from PDF file using the GroupDocs.Viewer Java API."
keywords: convert to pdf, optimize size, pdf reduce size, remove annotations
productName: GroupDocs.Viewer for Java
hideChildren: False
toc: True
---
If the output PDF file contains annotations, you can remove them to reduce the file size.

To remove annotations, set the [setRemoveAnnotations](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions/#setRemoveAnnotations-boolean-) to `true`.

The following code snippet shows how to remove annotations from the file:

{{< tabs "Example1">}}
{{< tab "Java" >}}
```java
try (Viewer viewer = new Viewer("sample.docx")) {
PdfViewOptions viewOptions = new PdfViewOptions();
viewOptions.setPdfOptimizationOptions(new PdfOptimizationOptions());
viewOptions.getPdfOptimizationOptions().setRemoveAnnotations(true);

viewer.view(viewOptions);
}
```
{{</ tab >}}
{{</ tabs >}}

The following image demonstrates the result:

![Remove annotations](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-remove-annotations.png)
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
id: optimization-pdf-remove-fields
url: viewer/java/optimization-pdf-remove-fields
title: Remove form fields
linkTitle: Remove form fields
weight: 2
description: "This topic describes how to remove form fields from PDF file using the GroupDocs.Viewer Java API."
keywords: convert to pdf, optimize size, pdf reduce size, remove fields
productName: GroupDocs.Viewer for Java
hideChildren: False
toc: True
---
If the output PDF file contains form fields, you can flatten them to reduce the file size.

To remove form fields, set the `setRemoveFormFields()` property to `true` in [PdfOptimizationOptions](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions/).

The following code snippet shows how to flatten form fields in the file:

{{< tabs "Example1">}}
{{< tab "Java" >}}
```java
try (Viewer viewer = new Viewer("sample.docx")) {
PdfViewOptions viewOptions = new PdfViewOptions();
viewOptions.setPdfOptimizationOptions(new PdfOptimizationOptions());
viewOptions.getPdfOptimizationOptions().setRemoveFormFields(true);

viewer.view(viewOptions);
}
```
{{</ tab >}}
{{</ tabs >}}

The following image demonstrates the result:

![Remove fields](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-remove-fields.png)
Loading

0 comments on commit b6938f0

Please sign in to comment.