Java IText:图像

时间:2020-01-09 10:36:09  来源:igfitidea点击:

我们可以对IText中的图像做很多事情,包括缩放,旋转,遮罩,绝对定位,边框,对齐等。

这是本文涵盖的主题列表:

  • 创建图像
  • 绝对定位
  • 缩放比例
  • 旋转

创建图像

com.itextpdf.text.Image用于将图像添加到IText PDF文档。我们可以从文件或者从URL加载图像,如下所示:

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;

public class ImageExample {
  public static void main(String[] args) {
    Document document = new Document();

    try {
        PdfWriter.getInstance(document,
                new FileOutputStream("Image.pdf"));
        document.open();

        Image image1 = Image.getInstance("watermark.png");
        document.add(image1);

        
            String imageUrl = "http://Hyman.com/images/" +
            "20081123-20081123-3E1W7902-small-portrait.jpg";

            Image image2 = Image.getInstance(new URL(imageUrl));
        document.add(image2);

        document.close();
    } catch(Exception e){
      e.printStackTrace();
    }
  }
}

绝对定位

我们可以使用setAbsolutePosition()方法设置图像的绝对位置。在将图像添加到文档之前,请执行此操作。该方法采用两个参数:图像左下角的X和Y坐标。还请记住,PDF文档中的原点坐标系是文档的左下角。而不是屏幕上方的左上角。

这是一个代码示例:

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.net.URL;

public class Image2Example {
    public static void main(String[] args) {
        Document document = new Document();

        try {
            PdfWriter.getInstance(document,
                    new FileOutputStream("Image2.pdf"));
            document.open();

            String imageUrl = "http://Hyman.com/images/" +
                    "20081123-20081123-3E1W7902-small-portrait.jpg";

            Image image = Image.getInstance(new URL(imageUrl));
            image.setAbsolutePosition(500f, 650f);
            document.add(image);

            document.close();
        } catch(Exception e){
            e.printStackTrace();
        }
    }
}

缩放比例

我们可以使用以下Image方法之一缩放图像:

scaleAbsolute()
scaleAbsoluteWidth()
scaleAbsoluteHeight()
scalePercentage()
scaleToFit()

这是一个简单的示例:

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.net.URL;

public class Image3Example {
  public static void main(String[] args) {
    Document document = new Document();

    try {
      PdfWriter.getInstance(document,
            new FileOutputStream("Image3.pdf"));
      document.open();

      String imageUrl = "http://Hyman.com/images/" +
              "20081123-20081123-3E1W7902-small-portrait.jpg";

      Image image = Image.getInstance(new URL(imageUrl));
      image.scaleAbsolute(150f, 150f);
      document.add(image);

      Image image2 = Image.getInstance(new URL(imageUrl));
      image2.scalePercent(300f);
      document.add(image2);

      document.close();
    } catch(Exception e){
       e.printStackTrace();
    }
  }
}

旋转

我们也可以使用以下方法旋转IText PDF文档中的图像:

setRotationDegrees()
setRotation()

这是一个简单的示例:

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.net.URL;

public class Image4Example {
  public static void main(String[] args) {
    Document document = new Document();

    try {
      PdfWriter.getInstance(document,
            new FileOutputStream("Image4.pdf"));
      document.open();

      String imageUrl = "http://Hyman.com/images/" +
              "20081123-20081123-3E1W7902-small-portrait.jpg";

      Image image = Image.getInstance(new URL(imageUrl));
      image.setRotationDegrees(45f);
      document.add(image);

      document.close();
    } catch(Exception e){
      e.printStackTrace();
    }
  }
}