diff --git a/java/_index.md b/java/_index.md index a513044..b370fc7 100644 --- a/java/_index.md +++ b/java/_index.md @@ -13,10 +13,10 @@ AddLibInfoScript: True groupdocs-viewer-java-home
- + Latest version - 23.4 - (April 2023) + 24.6 + (June 2024)
diff --git a/java/developer-guide/loading-documents/loading-external-resources.md b/java/developer-guide/loading-documents/loading-external-resources.md new file mode 100644 index 0000000..ffa1a2f --- /dev/null +++ b/java/developer-guide/loading-documents/loading-external-resources.md @@ -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 >}} diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/_index.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/_index.md new file mode 100644 index 0000000..bfc7e70 --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/_index.md @@ -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. + + diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-for-web.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-for-web.md new file mode 100644 index 0000000..7acb67b --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-for-web.md @@ -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); +} +``` +{{}} +{{}} + + diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-resources.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-resources.md new file mode 100644 index 0000000..afd0885 --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-resources.md @@ -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); +} +``` +{{}} +{{}} + + diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-spreadsheets.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-spreadsheets.md new file mode 100644 index 0000000..bfc4942 --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimization-pdf-spreadsheets.md @@ -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); +} +``` +{{}} +{{}} diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/_index.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/_index.md new file mode 100644 index 0000000..44eaaec --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/_index.md @@ -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 +--- diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/optimization-pdf-remove-annotations.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/optimization-pdf-remove-annotations.md new file mode 100644 index 0000000..1be0524 --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/optimization-pdf-remove-annotations.md @@ -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); +} +``` +{{}} +{{}} + +The following image demonstrates the result: + +![Remove annotations](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-remove-annotations.png) diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/optimization-pdf-remove-fields.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/optimization-pdf-remove-fields.md new file mode 100644 index 0000000..c81bb58 --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-content/optimization-pdf-remove-fields.md @@ -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); +} +``` +{{}} +{{}} + +The following image demonstrates the result: + +![Remove fields](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-remove-fields.png) \ No newline at end of file diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-fonts/_index.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-fonts/_index.md new file mode 100644 index 0000000..806bf2d --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-fonts/_index.md @@ -0,0 +1,10 @@ +--- +id: optimize-fonts +url: viewer/java/optimize-fonts +title: Optimize fonts +weight: 6 +description: "This guide shows you how to use the power of Java and GroupDocs.Viewer to optimize your fonts in files." +productName: GroupDocs.Viewer for Java +hideChildren: False +isMenuItemWithNoContent: True +--- diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-fonts/optimization-pdf-subset-fonts.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-fonts/optimization-pdf-subset-fonts.md new file mode 100644 index 0000000..60af698 --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-fonts/optimization-pdf-subset-fonts.md @@ -0,0 +1,42 @@ +--- +id: optimization-pdf-subset-fonts +url: viewer/java/optimization-pdf-subset-fonts +title: Subset fonts +linkTitle: Subset fonts +weight: 2 +description: "This topic describes how to subset fonts in PDF file using the GroupDocs.Viewer Java API." +keywords: convert to pdf, optimize size, pdf reduce size, subset fonts +productName: GroupDocs.Viewer for Java +hideChildren: False +toc: True +--- +Optimization resources. SubsetFonts optimization option +Fonts will be converted into subsets if set to true + +If the file uses embedded fonts, it contains all font data. GroupDocs.Viewer can subset embedded fonts to reduce the file size. + +To subset fonts in a PDF file, use the [setSubsetFonts](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions/#setSubsetFonts-boolean-) method and set it to `true`. + +The following code snippet shows how to subset fonts in a PDF file: + +{{< tabs "Example1">}} +{{< tab "Java" >}} +```java +try (Viewer viewer = new Viewer("sample.docx")) { + PdfViewOptions viewOptions = new PdfViewOptions(); + viewOptions.setPdfOptimizationOptions(new PdfOptimizationOptions()); + viewOptions.getPdfOptimizationOptions().setSubsetFonts(true); + + viewer.view(viewOptions); +} +``` +{{}} +{{}} + +The following image demonstrates the result. There is no difference in appearance: + +![No difference in appearance](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-subset-fonts-appearance.png) + +But there is the significant difference in size: + +![Significant difference in size](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-subset-fonts-size.png) diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/_index.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/_index.md new file mode 100644 index 0000000..822d38f --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/_index.md @@ -0,0 +1,10 @@ +--- +id: optimize-images +url: viewer/java/optimize-images +title: Optimize images in Java +weight: 4 +description: "Optimize images in a PDF file using GroupDocs.Viewer for Java" +productName: GroupDocs.Viewer for Java +hideChildren: False +isMenuItemWithNoContent: True +--- diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-convert-grayscale.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-convert-grayscale.md new file mode 100644 index 0000000..818b13c --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-convert-grayscale.md @@ -0,0 +1,35 @@ +--- +id: optimization-pdf-convert-grayscale +url: viewer/java/optimization-pdf-convert-grayscale +title: Convert to grayscale +linkTitle: Convert to grayscale +weight: 3 +description: "This topic describes how to convert PDF file to grayscale using the GroupDocs.Viewer Java API." +keywords: convert to pdf, optimize size, pdf reduce size, convert to grayscale +productName: GroupDocs.Viewer for Java +hideChildren: False +toc: True +--- +To speed up the printing of a PDF file and reduce its size, you can convert it from RGB color space to grayscale. + +To convert a PDF file to grayscale, set the [setConvertToGrayScale()](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/Pdfoptimizationoptions/#setConvertToGrayScale-boolean-) method to `true`. + +The following code snippet shows how to convert a PDF file to grayscale: + +{{< tabs "Example1">}} +{{< tab "Java" >}} +```java +try (Viewer viewer = new Viewer("sample.docx")) { + PdfViewOptions viewOptions = new PdfViewOptions(); + viewOptions.setPdfOptimizationOptions(new PdfOptimizationOptions()); + viewOptions.getPdfOptimizationOptions().setConvertToGrayScale(true); + + viewer.view(viewOptions); +} +``` +{{}} +{{}} + +The following image demonstrates the result: + +![Convert to grayscale](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-convert-grayscale.png) diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-reduce-image-quality.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-reduce-image-quality.md new file mode 100644 index 0000000..6d5c213 --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-reduce-image-quality.md @@ -0,0 +1,39 @@ +--- +id: optimization-pdf-reduce-image-quality +url: viewer/java/optimization-pdf-reduce-image-quality +title: Reduce image quality +linkTitle: Reduce image quality +weight: 1 +description: "This topic describes how to compress images in PDF file using the GroupDocs.Viewer Java API." +keywords: convert to pdf, optimize size, pdf reduce size, compress images +productName: GroupDocs.Viewer for Java +hideChildren: False +toc: True +--- + +If the output PDF file contains images, you can reduce its size using image compression. + +To enable image compression, set the [setCompressImages()](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions/#setCompressImages-boolean-) method to `true`. The GroupDocs.Viewer compresses all images in the file. + +The [setImageQuality()](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions/#setImageQuality-int-) method determines the compression ratio. It is a quality value in percent. 100% means original quality. + +The following code snippet shows how to compress images 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().setCompressImages(true); + viewOptions.getPdfOptimizationOptions().setImageQuality(50); + + viewer.view(viewOptions); +} +``` +{{}} +{{}} + +The following image demonstrates the result: + +![Reduce image quality](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-reduce-image-quality.png) diff --git a/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-set-max-resolution.md b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-set-max-resolution.md new file mode 100644 index 0000000..ebb0944 --- /dev/null +++ b/java/developer-guide/rendering-documents/rendering-to-pdf/optimization-pdf-options/optimize-images/optimization-pdf-set-max-resolution.md @@ -0,0 +1,40 @@ +--- +id: optimization-pdf-set-max-resolution +url: viewer/java/optimization-pdf-set-max-resolution +title: Set image resolution +linkTitle: Set image resolution +weight: 2 +description: "This topic describes how to set image resolution in PDF file using the GroupDocs.Viewer Java API." +keywords: convert to pdf, optimize size, pdf reduce size, set resolution +productName: GroupDocs.Viewer for Java +hideChildren: False +toc: True +--- +If the output PDF file contains images, you can reduce its resolution. + +To allow changing the image resolution, set the [setCompressImages()](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions/#setCompressImages-boolean-) and [setResizeImages()](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions/#setResizeImages-boolean-) setters to `true` in the [PdfOptimizationOptions](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions). The GroupDocs.Viewer compresses all images in the file. The [setMaxResolution()](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptimizationoptions/#setMaxResolution-int-) property determines the maximum resolution. + +The following code snippet shows how to reduce image resolution in the file: + +{{< tabs "Example1">}} +{{< tab "Java" >}} +```java +try (Viewer viewer = new Viewer("sample.docx")) { + PdfViewOptions viewOptions = new PdfViewOptions(); + PdfOptimizationOptions optimizationOptions = new PdfOptimizationOptions(); + + optimizationOptions.setCompressImages(true); + optimizationOptions.setImageQuality(50); + optimizationOptions.setResizeImages(true); + optimizationOptions.setMaxResolution(100); + + viewOptions.setPdfOptimizationOptions(optimizationOptions); + viewer.view(viewOptions); +} +``` +{{}} +{{}} + +The following image demonstrates the result: + +![Set max resolution](/viewer/java/images/pdf-rendering/optimization/optimization-pdf-set-max-resolution.png) diff --git a/java/developer-guide/retrieving-document-information/get-pdf-output-file-info.md b/java/developer-guide/retrieving-document-information/get-pdf-output-file-info.md new file mode 100644 index 0000000..ace3cf6 --- /dev/null +++ b/java/developer-guide/retrieving-document-information/get-pdf-output-file-info.md @@ -0,0 +1,39 @@ +--- +id: get-pdf-output-file-info +url: viewer/java/get-pdf-output-file-info +title: Get the PDF output file information +weight: 6 +description: "This article explains how to get the PDF output file information using Java with GroupDocs.Viewer for Java." +keywords: +productName: GroupDocs.Viewer for Java +hideChildren: False +--- + +You can get the information about the PDF output file using the [getViewInfo](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer/viewer/#getViewInfo-com.groupdocs.viewer.options.ViewInfoOptions-) method that returns a [ViewInfo](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.results/viewinfo/) object. The object contains the [Pages](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.results/viewinfo/#getPages--) collection that represents each [Page](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.results/page/) of the document. + +The following code snippet shows how to get the page count and the width and height of each document page: + +{{< tabs "example1">}} +{{< tab "Java" >}} +```java +try (Viewer viewer = new Viewer("sample.pdf")) { + // Get file information. + ViewInfoOptions viewInfoOptions = ViewInfoOptions.forPdfView(); + ViewInfo viewInfo = viewer.getViewInfo(viewInfoOptions); + + // Display page count. + System.out.println("Pages count: " + viewInfo.getPages().size()); + + // Display width and height of each page + for (Page page : viewInfo.getPages()) { + System.out.println("Page: " + page.getNumber() + "; Width: " + page.getWidth() + ", pixels"); + System.out.println("Page: " + page.getNumber() + "; Height: " + page.getHeight() + ", pixels"); + } +} +``` +{{< /tab >}} +{{< /tabs >}} + +The following image shows a sample console output: + +![](/viewer/java/images/get_pdf_output_file_info.png) diff --git a/java/images/get_pdf_output_file_info.png b/java/images/get_pdf_output_file_info.png new file mode 100644 index 0000000..d2b2079 Binary files /dev/null and b/java/images/get_pdf_output_file_info.png differ diff --git a/java/images/pdf-rendering/optimization/optimization-pdf-convert-grayscale.png b/java/images/pdf-rendering/optimization/optimization-pdf-convert-grayscale.png new file mode 100644 index 0000000..a4ceeff Binary files /dev/null and b/java/images/pdf-rendering/optimization/optimization-pdf-convert-grayscale.png differ diff --git a/java/images/pdf-rendering/optimization/optimization-pdf-reduce-image-quality.png b/java/images/pdf-rendering/optimization/optimization-pdf-reduce-image-quality.png new file mode 100644 index 0000000..aadf10c Binary files /dev/null and b/java/images/pdf-rendering/optimization/optimization-pdf-reduce-image-quality.png differ diff --git a/java/images/pdf-rendering/optimization/optimization-pdf-remove-annotations.png b/java/images/pdf-rendering/optimization/optimization-pdf-remove-annotations.png new file mode 100644 index 0000000..3d08136 Binary files /dev/null and b/java/images/pdf-rendering/optimization/optimization-pdf-remove-annotations.png differ diff --git a/java/images/pdf-rendering/optimization/optimization-pdf-remove-fields.png b/java/images/pdf-rendering/optimization/optimization-pdf-remove-fields.png new file mode 100644 index 0000000..cdcab39 Binary files /dev/null and b/java/images/pdf-rendering/optimization/optimization-pdf-remove-fields.png differ diff --git a/java/images/pdf-rendering/optimization/optimization-pdf-set-max-resolution.png b/java/images/pdf-rendering/optimization/optimization-pdf-set-max-resolution.png new file mode 100644 index 0000000..902bb24 Binary files /dev/null and b/java/images/pdf-rendering/optimization/optimization-pdf-set-max-resolution.png differ diff --git a/java/images/pdf-rendering/optimization/optimization-pdf-subset-fonts-appearance.png b/java/images/pdf-rendering/optimization/optimization-pdf-subset-fonts-appearance.png new file mode 100644 index 0000000..91937d1 Binary files /dev/null and b/java/images/pdf-rendering/optimization/optimization-pdf-subset-fonts-appearance.png differ diff --git a/java/images/pdf-rendering/optimization/optimization-pdf-subset-fonts-size.png b/java/images/pdf-rendering/optimization/optimization-pdf-subset-fonts-size.png new file mode 100644 index 0000000..72dffa1 Binary files /dev/null and b/java/images/pdf-rendering/optimization/optimization-pdf-subset-fonts-size.png differ diff --git a/java/images/rendering-basics/render-pdf-documents/resume.pdf b/java/images/rendering-basics/render-pdf-documents/resume.pdf new file mode 100644 index 0000000..a74e387 Binary files /dev/null and b/java/images/rendering-basics/render-pdf-documents/resume.pdf differ diff --git a/java/images/rendering-basics/render-pdf-documents/wrap-images-in-svg.png b/java/images/rendering-basics/render-pdf-documents/wrap-images-in-svg.png new file mode 100644 index 0000000..b68e61d Binary files /dev/null and b/java/images/rendering-basics/render-pdf-documents/wrap-images-in-svg.png differ diff --git a/java/images/with-external-resources.png b/java/images/with-external-resources.png new file mode 100644 index 0000000..087b7d7 Binary files /dev/null and b/java/images/with-external-resources.png differ diff --git a/java/images/without-external-resources.png b/java/images/without-external-resources.png new file mode 100644 index 0000000..66dcdba Binary files /dev/null and b/java/images/without-external-resources.png differ diff --git a/java/rendering-basics/render-pdf-documents.md b/java/rendering-basics/render-pdf-documents.md index 82860d6..aabbf5d 100644 --- a/java/rendering-basics/render-pdf-documents.md +++ b/java/rendering-basics/render-pdf-documents.md @@ -397,3 +397,64 @@ try (Viewer viewer = new Viewer("sample.pdf")) { {{< /tabs >}} ![Extract and display PDF text](/viewer/java/images/rendering-basics/render-pdf-documents/extract-pdf-text.png) + +## Skip font license verification when rendering XPS and OXPS files + +If an XPS or OXPS file contains a font that cannot be embedded due to licensing restrictions, GroupDocs.Viewer throws an exception at runtime. If you have a license for this font, enable the [PdfOptions#setDisableFontLicenseVerifications(true)](https://reference.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptions/#setDisableFontLicenseVerifications-boolean-) option to skip font license verification. + +{{< tabs "example15">}} +{{< tab "Java" >}} +```java +try (Viewer viewer = new Viewer("resume.oxps")) { + HtmlViewOptions viewOptions = HtmlViewOptions.forEmbeddedResources(); + viewOptions.getPdfOptions().setDisableFontLicenseVerifications(true); + viewer.view(viewOptions); +} +``` +{{< /tab >}} +{{< tab "Kotlin">}} +```kotlin +Viewer("resume.oxps").use { viewer -> + val viewOptions = HtmlViewOptions.forEmbeddedResources() + viewOptions.pdfOptions.disableFontLicenseVerifications = true + viewer.view(viewOptions) +} + +``` +{{< /tab >}} +{{< /tabs >}} + +## Enclose images in SVG when rendering PDF and Page Layout files + +By default, when rendering to the PDF and Page Layout file formats, all images are combined into a single PNG file, which serves as the background for the output HTML document. + +The [PdfOptions#setWrapImagesInSvg(...)](https://reference2.groupdocs.com/viewer/java/com.groupdocs.viewer.options/pdfoptions/#setWrapImagesInSvg-boolean-) option allows you to wrap each image in the output HTML document with an SVG tag to improve output quality. + +This option is available when rendering PDF and Page Layout file formats to HTML with embedded or external resources. + +{{< tabs "example16">}} +{{< tab "Java" >}} +```java +try (Viewer viewer = new Viewer("resume.pdf")) { + HtmlViewOptions viewOptions = HtmlViewOptions.forEmbeddedResources(); + viewOptions.getPdfOptions().setWrapImagesInSvg(true); + + viewer.view(viewOptions); +} +``` +{{< /tab >}} +{{< tab "Kotlin">}} +```kotlin +Viewer("resume.pdf").use { viewer -> + val viewOptions = HtmlViewOptions.forEmbeddedResources() + viewOptions.pdfOptions.isWrapImagesInSvg = true + viewer.view(viewOptions) +} + +``` +{{< /tab >}} +{{< /tabs >}} + +The following image shows the rendering [resume.pdf](/viewer/java/images/rendering-basics/render-pdf-documents/resume.pdf) with the disabled (left) and enabled (right) `WrapImagesInSvg` option: + +![Images as background vs embedded in SVG](/viewer/java/images/rendering-basics/render-pdf-documents/wrap-images-in-svg.png)