Bekerja dengan vektor grafik di Java

Aspose.PDF for Java mengekspos konten vektor melalui objek GraphicsAbsorber dan GraphicElement. Ini memungkinkan Anda memeriksa elemen vektor tingkat rendah pada sebuah halaman dan kemudian memperbarui, menghapus, menyalin, atau mengekspornya.

Memeriksa grafik vektor pada halaman

Gunakan contoh ini ketika Anda perlu mengenumerasi elemen vektor dan memeriksa halaman, posisi, serta jumlah operatornya.

  1. Buka PDF sumber Document.
  2. Buat GraphicsAbsorber dan kunjungi halaman target.
  3. Iterasikan melalui yang diserap objek GraphicElement dan keluarkan properti mereka.
public static void usingGraphicsAbsorber(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
        try {
            Page page = document.getPages().get_Item(1);
            graphicsAbsorber.visit(page);
            for (GraphicElement element : graphicsAbsorber.getElements()) {
                System.out.println("Page Number: " + element.getSourcePage().getNumber());
                System.out.println("Position: (" + element.getPosition().getX() + ", "
                        + element.getPosition().getY() + ")");
                System.out.println("Number of Operators: " + element.getOperators().size());
            }
        } finally {
            graphicsAbsorber.dispose();
        }
    }
}

Memindahkan grafik vektor pada halaman

Gunakan contoh ini ketika semua elemen vektor yang terdeteksi harus dipindahkan ke posisi baru.

  1. Buka PDF sumber Document.
  2. Kunjungi halaman target dengan GraphicsAbsorber dan sementara menonaktifkan pembaruan.
  3. Ubah posisi setiap elemen yang diserap, lanjutkan pembaruan, dan simpan dokumen.
public static void moveGraphics(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
        try {
            Page page = document.getPages().get_Item(1);
            graphicsAbsorber.visit(page);
            graphicsAbsorber.suppressUpdate();
            for (GraphicElement element : graphicsAbsorber.getElements()) {
                Point position = element.getPosition();
                element.setPosition(new Point(position.getX() + 150, position.getY() - 10));
            }
            graphicsAbsorber.resumeUpdate();
        } finally {
            graphicsAbsorber.dispose();
        }
        document.save(outputFile.toString());
    }
    System.out.println("Vector graphics moved in " + outputFile);
}

Menghapus grafik vektor berdasarkan posisi dengan penghapusan elemen

Gunakan contoh ini ketika elemen vektor di dalam persegi panjang tertentu harus dihapus satu per satu.

  1. Buka PDF sumber Document.
  2. Kunjungi halaman dengan GraphicsAbsorber dan definisikan Rectangle target.
  3. Hapus elemen yang cocok, lanjutkan pembaruan, dan simpan dokumen.
public static void removeGraphicsMethod1(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
        try {
            Page page = document.getPages().get_Item(1);
            Rectangle rectangle = new Rectangle(70, 248, 170, 252, true);
            graphicsAbsorber.visit(page);
            graphicsAbsorber.suppressUpdate();
            for (GraphicElement element : graphicsAbsorber.getElements()) {
                if (rectangle.contains(element.getPosition(), false)) {
                    element.remove();
                }
            }
            graphicsAbsorber.resumeUpdate();
        } finally {
            graphicsAbsorber.dispose();
        }
        document.save(outputFile.toString());
    }
    System.out.println("Vector graphics removed with method 1 in " + outputFile);
}

Menghapus grafik vektor dengan menghapus koleksi

Gunakan contoh ini ketika elemen vektor yang cocok harus dikumpulkan terlebih dahulu dan kemudian dihapus dalam satu operasi halaman.

  1. Buka PDF sumber Document.
  2. Kunjungi halaman dengan GraphicsAbsorber dan kumpulkan elemen yang cocok.
  3. Hapus grafik yang terkumpul dari konten halaman dan simpan dokumen yang telah diperbarui.
public static void removeGraphicsMethod2(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
        try {
            Page page = document.getPages().get_Item(1);
            Rectangle rectangle = new Rectangle(70, 248, 170, 252, true);
            graphicsAbsorber.visit(page);
            GraphicElementCollection removedElements = new GraphicElementCollection();
            for (GraphicElement element : graphicsAbsorber.getElements()) {
                if (rectangle.contains(element.getPosition(), false)) {
                    removedElements.add(element);
                }
            }
            page.getContents().suppressUpdate();
            page.deleteGraphics(removedElements);
            page.getContents().resumeUpdate();
        } finally {
            graphicsAbsorber.dispose();
        }
        document.save(outputFile.toString());
    }
    System.out.println("Vector graphics removed with method 2 in " + outputFile);
}

Menyalin grafik vektor ke elemen halaman lain elemen demi elemen

Gunakan contoh ini ketika setiap elemen vektor yang diserap harus ditambahkan secara individu ke halaman baru.

  1. Buka PDF sumber Document dan tambahkan halaman tujuan.
  2. Kunjungi halaman sumber dengan GraphicsAbsorber.
  3. Tambahkan masing-masing GraphicElement ke halaman tujuan dan simpan dokumen.
public static void addToAnotherPageMethod1(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
        try {
            Page page1 = document.getPages().get_Item(1);
            Page page2 = document.getPages().add();
            graphicsAbsorber.visit(page1);
            page2.getContents().suppressUpdate();
            for (GraphicElement element : graphicsAbsorber.getElements()) {
                element.addOnPage(page2);
            }
            page2.getContents().resumeUpdate();
        } finally {
            graphicsAbsorber.dispose();
        }
        document.save(outputFile.toString());
    }
    System.out.println("Vector graphics copied with method 1 in " + outputFile);
}

Menyalin grafik vektor ke halaman lain sebagai koleksi

Gunakan contoh ini ketika seluruh koleksi grafis vektor yang diserap harus disalin ke halaman baru dalam satu panggilan.

  1. Buka PDF sumber Document dan tambahkan halaman tujuan.
  2. Kunjungi halaman sumber dengan GraphicsAbsorber.
  3. Tambahkan koleksi grafik yang diserap ke halaman tujuan dan simpan dokumen.
public static void addToAnotherPageMethod2(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        GraphicsAbsorber graphicsAbsorber = new GraphicsAbsorber();
        try {
            Page page1 = document.getPages().get_Item(1);
            Page page2 = document.getPages().add();
            graphicsAbsorber.visit(page1);
            page2.getContents().suppressUpdate();
            page2.addGraphics(graphicsAbsorber.getElements());
            page2.getContents().resumeUpdate();
        } finally {
            graphicsAbsorber.dispose();
        }
        document.save(outputFile.toString());
    }
    System.out.println("Vector graphics copied with method 2 in " + outputFile);
}