Advertisement
andruhovski

Untitled

Jun 30th, 2021
723
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.69 KB | None | 0 0
  1. package com.aspose.pdf.examples;
  2.  
  3. import java.awt.image.BufferedImage;
  4. import java.io.ByteArrayInputStream;
  5. import java.io.ByteArrayOutputStream;
  6. import java.io.File;
  7. import java.io.FileInputStream;
  8. import java.io.FileNotFoundException;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11.  
  12. import javax.imageio.ImageIO;
  13.  
  14. import com.aspose.pdf.*;
  15. import com.aspose.pdf.facades.PdfFileMend;
  16. import com.aspose.pdf.operators.*;
  17.  
  18. public class ExampleAddImages {
  19.  
  20.     private static String _dataDir = "/home/aspose/pdf-examples/Samples/";
  21.  
  22.     public static void AddImageToExistingPDF() throws IOException {
  23.         // Open a document
  24.         Document pdfDocument1 = new Document(_dataDir + "sample.pdf");
  25.  
  26.         // Set coordinates
  27.         int lowerLeftX = 50;
  28.         int lowerLeftY = 750;
  29.         int upperRightX = 100;
  30.         int upperRightY = 800;
  31.  
  32.         // Get the page you want to add the image to
  33.         Page page = pdfDocument1.getPages().get_Item(1);
  34.  
  35.         // Load image into stream
  36.         java.io.FileInputStream imageStream = new java.io.FileInputStream(new java.io.File(_dataDir + "logo.png"));
  37.  
  38.         // Add an image to the Images collection of the page resources
  39.         page.getResources().getImages().add(imageStream);
  40.  
  41.         // Using the GSave operator: this operator saves current graphics state
  42.         page.getContents().add(new GSave());
  43.  
  44.         // Create Rectangle and Matrix objects
  45.         Rectangle rectangle = new Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
  46.         Matrix matrix = new Matrix(new double[] { rectangle.getURX() - rectangle.getLLX(), 0, 0,
  47.                 rectangle.getURY() - rectangle.getLLY(), rectangle.getLLX(), rectangle.getLLY() });
  48.  
  49.         // Using ConcatenateMatrix (concatenate matrix) operator: defines how image must
  50.         // be placed
  51.         page.getContents().add(new ConcatenateMatrix(matrix));
  52.         XImage ximage = page.getResources().getImages().get_Item(page.getResources().getImages().size());
  53.  
  54.         // Using Do operator: this operator draws image
  55.         page.getContents().add(new Do(ximage.getName()));
  56.  
  57.         // Using GRestore operator: this operator restores graphics state
  58.         page.getContents().add(new GRestore());
  59.  
  60.         // Save the new PDF
  61.         pdfDocument1.save(_dataDir + "updated_document.pdf");
  62.  
  63.         // Close image stream
  64.         imageStream.close();
  65.     }
  66.  
  67.     public static void AddingImageAndPreserveAspectRatioIntoPDF() throws IOException {
  68.         InputStream imageStream = new FileInputStream("anyImage.jpg");
  69.         BufferedImage originalImage = ImageIO.read(imageStream);
  70.         int width = originalImage.getWidth();
  71.         int height = originalImage.getHeight();
  72.  
  73.         Document pdfDocument = new Document();
  74.         Page page = pdfDocument.getPages().add();
  75.         int scaledWidth = 400;
  76.         int scaledHeight = scaledWidth * height / width;
  77.  
  78.  
  79.         page.addImage(imageStream, new Rectangle(10,10,  ));
  80.     }
  81.  
  82.     public static void AddingImageFromBufferedImageIntoPDF() throws IOException {
  83.         BufferedImage originalImage = ImageIO.read(new File("anyImage.jpg"));
  84.         Document pdfDocument = new Document();
  85.         Page page = pdfDocument.getPages().add();
  86.         page.getResources().getImages().add(originalImage);
  87.     }
  88.  
  89.     public static void AddingImageFromBufferedImageIntoPDF2() throws IOException {
  90.         BufferedImage originalImage = ImageIO.read(new File("anyImage.jpg"));
  91.         ByteArrayOutputStream baos = new ByteArrayOutputStream();
  92.  
  93.         Document pdfDocument = new Document();
  94.         ImageIO.write(originalImage, "jpg", baos);
  95.         baos.flush();
  96.         Page page = pdfDocument.getPages().get_Item(1);
  97.         page.getResources().getImages().add(new ByteArrayInputStream(baos.toByteArray()));
  98.     }
  99.  
  100.     public static void AddImageInAnExistingPDFFile_Facades() {
  101.         // Open document
  102.         PdfFileMend mender = new PdfFileMend();
  103.  
  104.         // Create PdfFileMend object to add text
  105.         mender.bindPdf(_dataDir + "AddImage.pdf");
  106.  
  107.         // Add image in the PDF file
  108.         mender.addImage(_dataDir + "aspose-logo.jpg", 1, 100, 600, 200, 700);
  109.  
  110.         // Save changes
  111.         mender.save(_dataDir + "AddImage_out.pdf");
  112.  
  113.         // Close PdfFileMend object
  114.         mender.close();
  115.     }
  116.  
  117.     public static void AddReferenceOfaSingleImageMultipleTimes() throws FileNotFoundException {
  118.         Rectangle imageRectangle = new Rectangle(0, 0, 30, 15);
  119.         Document document = new Document(_dataDir + "sample.pdf");
  120.         document.getPages().add();
  121.         document.getPages().add();
  122.         java.io.FileInputStream imageStream = new java.io.FileInputStream(
  123.                 new java.io.File(_dataDir + "aspose-logo.png"));
  124.  
  125.         XImage image = null;
  126.  
  127.         for (Page page : document.getPages()) {
  128.             WatermarkAnnotation annotation = new WatermarkAnnotation(page, page.getRect());
  129.             XForm form = annotation.getAppearance().get_Item("N");
  130.             form.setBBox(page.getRect());
  131.             String name;
  132.             if (image == null) {
  133.                 name = form.getResources().getImages().add(imageStream);
  134.                 image = form.getResources().getImages().get_Item(name);
  135.             } else {
  136.                 name = form.getResources().getImages().add(image);
  137.             }
  138.             form.getContents().add(new GSave());
  139.             form.getContents().add(new ConcatenateMatrix(
  140.                     new Matrix(imageRectangle.getWidth(), 0, 0, imageRectangle.getHeight(), 0, 0)));
  141.             form.getContents().add(new Do(name));
  142.             form.getContents().add(new GRestore());
  143.             page.getAnnotations().add(annotation, false);
  144.             imageRectangle = new Rectangle(0, 0, imageRectangle.getWidth() * 1.01, imageRectangle.getHeight() * 1.01);
  145.         }
  146.         document.save(_dataDir + "output.pdf");
  147.     }
  148.  
  149.     public static void CheckColors() {
  150.  
  151.         Document document = new Document(_dataDir + "test4.pdf");
  152.         try {
  153.             // iterate through all pages of PDF file
  154.             for (Page page : (Iterable<Page>) document.getPages()) {
  155.                 // create Image Placement Absorber instance
  156.                 ImagePlacementAbsorber abs = new ImagePlacementAbsorber();
  157.                 page.accept(abs);
  158.                 for (ImagePlacement ia : (Iterable<ImagePlacement>) abs.getImagePlacements()) {
  159.                     /* ColorType */
  160.                     int colorType = ia.getImage().getColorType();
  161.                     switch (colorType) {
  162.                     case ColorType.Grayscale:
  163.                         System.out.println("Grayscale Image");
  164.                         break;
  165.                     case ColorType.Rgb:
  166.                         System.out.println("Colored Image");
  167.                         break;
  168.                     }
  169.                 }
  170.             }
  171.         } catch (Exception ex) {
  172.             System.out.println("Error reading file = " + document.getFileName());
  173.         }
  174.     }
  175.  
  176.     public static void ControlImageQuality() {
  177.         Document pdfDocument = new Document(_dataDir + "sample_with_images.pdf");
  178.         for (Page page : pdfDocument.getPages()) {
  179.             int idx = 1;
  180.             for (XImage image : page.getResources().getImages()) {
  181.                 ByteArrayOutputStream imageStream = new ByteArrayOutputStream();
  182.                 ByteArrayInputStream inStream = new ByteArrayInputStream(imageStream.toByteArray());
  183.                 image.save(imageStream, ImageType.getJpeg());
  184.                 page.getResources().getImages().replace(idx, inStream, 80);
  185.                 idx = idx + 1;
  186.             }
  187.         }
  188.         pdfDocument.save(_dataDir + "sample_with_images_out.pdf");
  189.     }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement