العمل مع الرسومات المتجهة في Java
Contents
[
Hide
]
Aspose.PDF for Java يكشف محتوى المتجهات عبر GraphicsAbsorber و الكائنات GraphicElement. يتيح لك هذا فحص عناصر المتجه منخفضة المستوى على صفحة ثم تحديثها أو إزالتها أو نسخها أو تصديرها.
فحص الرسومات المتجهية على صفحة
استخدم هذا المثال عندما تحتاج إلى تعداد عناصر المتجه وفحص صفحتها وموقعها وعدد المشغلات.
- افتح ملف PDF المصدر Document.
- أنشئ كائنًا من الفئة GraphicsAbsorber وزيارة الصفحة المستهدفة.
- مرّ على المستخلص الكائنات GraphicElement وعرض خصائصها.
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();
}
}
}
تحريك الرسوم المتجهة على الصفحة
استخدم هذا المثال عندما يجب إزاحة جميع عناصر المتجه المكتشفة إلى موضع جديد.
- افتح ملف PDF المصدر Document.
- زُر الصفحة المستهدفة باستخدام GraphicsAbsorber وإيقاف التحديثات مؤقتًا.
- غيّر موضع كل عنصر مُمتص، استأنف التحديثات، واحفظ المستند.
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);
}
إزالة الرسومات المتجهة حسب الموقع مع إزالة العنصر
استخدم هذا المثال عندما يجب حذف العناصر المتجهية داخل مستطيل محدد واحدةً تلو الأخرى.
- افتح ملف PDF المصدر Document.
- زُر الصفحة باستخدام GraphicsAbsorber وحدد الهدف Rectangle.
- أزل العناصر المطابقة، استئناف التحديثات، واحفظ المستند.
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);
}
إزالة الرسومات المتجهية عن طريق حذف مجموعة
استخدم هذا المثال عندما يجب جمع عناصر المتجه المطابقة أولاً ثم إزالتها في عملية صفحة واحدة.
- افتح ملف PDF المصدر Document.
- زُر الصفحة باستخدام GraphicsAbsorber واجمع العناصر المطابقة.
- احذف الرسومات المجمعة من محتويات الصفحة واحفظ المستند المحدث.
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);
}
انسخ الرسومات المتجهة إلى عنصر صفحة آخر عنصرًا بعنصر
استخدم هذا المثال عندما يجب إضافة كل عنصر متجه مُمتص بشكل فردي إلى صفحة جديدة.
- افتح ملف PDF المصدر Document وأضف صفحة وجهة.
- زُر صفحة المصدر باستخدام GraphicsAbsorber.
- أضف كل GraphicElement إلى الصفحة الوجهة واحفظ المستند.
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);
}
نسخ الرسومات المتجهية إلى صفحة أخرى كمجموعة
استخدم هذا المثال عندما يجب نسخ مجموعة الرسوم المتجهة الممتصة بالكامل إلى صفحة جديدة في استدعاء واحد.
- افتح ملف PDF المصدر Document وأضف صفحة وجهة.
- زُر صفحة المصدر باستخدام GraphicsAbsorber.
- أضف مجموعة الرسومات الممتصة إلى صفحة الوجهة واحفظ المستند.
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);
}