Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
在本章中,我们将探讨如何使用强大的 GraphicsAbsorber
类与 PDF 文档中的矢量图形进行交互。无论您需要移动、删除还是添加图形,本指南将向您展示如何有效地执行这些任务。
矢量图形是许多 PDF 文档的重要组成部分,用于表示图像、形状和其他图形元素。Aspose.PDF 提供了 GraphicsAbsorber
类,允许开发人员以编程方式访问和操作这些图形。通过使用 GraphicsAbsorber
的 Visit
方法,您可以从指定页面提取矢量图形并执行各种操作,例如移动、删除或将它们复制到其他页面。
GraphicsAbsorber
提取图形处理矢量图形的第一步是从 PDF 文档中提取它们。以下是使用 GraphicsAbsorber
类进行提取的方法:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void UsingGraphicsAbsorber()
{
// The path to the document directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open the document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentWithVectorGraphics.pdf"))
{
// Create an instance of GraphicsAbsorber
using (var graphicsAbsorber = new Aspose.Pdf.Vector.GraphicsAbsorber())
{
// Select the first page of the document
var page = document.Pages[1];
// Use the `Visit` method to extract graphics from the page
graphicsAbsorber.Visit(page);
// Display information about the extracted elements
foreach (var element in graphicsAbsorber.Elements)
{
Console.WriteLine($"Page Number: {element.SourcePage.Number}");
Console.WriteLine($"Position: ({element.Position.X}, {element.Position.Y})");
Console.WriteLine($"Number of Operators: {element.Operators.Count}");
}
}
}
}
Document
对象。GraphicsAbsorber
实例:该类捕获指定页面上的所有图形元素。Visit
方法,允许 GraphicsAbsorber
吸收矢量图形。一旦提取了图形,您可以将它们移动到同一页面上的不同位置。以下是实现此目的的方法:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void MoveGraphics()
{
// The path to the document directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentWithVectorGraphics.pdf"))
{
// Create a GraphicsAbsorber instance
using (var graphicsAbsorber = new Aspose.Pdf.Vector.GraphicsAbsorber())
{
// Select the first page of the document
var page = document.Pages[1];
// Extract graphic elements from the page
graphicsAbsorber.Visit(page);
// Temporarily suspend updates to improve performance
graphicsAbsorber.SuppressUpdate();
// Loop through each extracted graphic element and shift its position
foreach (var element in graphicsAbsorber.Elements)
{
var position = element.Position;
// Move graphics by shifting its X and Y coordinates
element.Position = new Aspose.Pdf.Point(position.X + 150, position.Y - 10);
}
// Resume updates and apply changes
graphicsAbsorber.ResumeUpdate();
}
// Save PDF document
document.Save(dataDir + "DocumentWithVectorGraphics_out.pdf");
}
}
X
和 Y
坐标来调整其位置。在某些情况下,您可能希望从页面中删除特定图形。Aspose.PDF 提供了两种方法来实现这一点:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void RemoveGraphicsMethod1()
{
// The path to the document directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentWithVectorGraphics.pdf"))
{
// Create GraphicsAbsorber
using (var graphicsAbsorber = new Aspose.Pdf.Vector.GraphicsAbsorber())
{
// Get the first page of the document
var page = document.Pages[1];
// Extract graphic elements from the page
graphicsAbsorber.Visit(page);
// Define the rectangle where graphics will be removed
var rectangle = new Aspose.Pdf.Rectangle(70, 248, 170, 252);
// Temporarily suspend updates for better performance
graphicsAbsorber.SuppressUpdate();
// Iterate through the extracted graphic elements and remove elements inside the rectangle
foreach (var element in graphicsAbsorber.Elements)
{
// Check if the graphic's position falls within the rectangle
if (rectangle.Contains(element.Position))
{
// Remove the graphic element
element.Remove();
}
}
// Resume updates and apply changes
graphicsAbsorber.ResumeUpdate();
}
// Save PDF document
document.Save(dataDir + "DocumentWithVectorGraphics_out.pdf");
}
}
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void RemoveGraphicsMethod2()
{
// The path to the document directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentWithVectorGraphics.pdf"))
{
// Create GraphicsAbsorber
using (var graphicsAbsorber = new Aspose.Pdf.Vector.GraphicsAbsorber())
{
// Get the first page of the document
var page = document.Pages[1];
// Define the rectangle where graphics will be removed
var rectangle = new Aspose.Pdf.Rectangle(70, 248, 170, 252);
// Extract graphic elements from the page
graphicsAbsorber.Visit(page);
// Create a collection for the removed elements
var removedElementsCollection = new Aspose.Pdf.Vector.GraphicElementCollection();
// Add elements within the rectangle to the collection
foreach (var item in graphicsAbsorber.Elements.Where(el => rectangle.Contains(el.Position)))
{
removedElementsCollection.Add(item);
}
// Temporarily suppress updates for better performance
page.Contents.SuppressUpdate();
// Delete the selected graphic elements
page.DeleteGraphics(removedElementsCollection);
// Resume updates and apply changes
page.Contents.ResumeUpdate();
}
// Save PDF document
document.Save(dataDir + "DocumentWithVectorGraphics_out.pdf");
}
}
从一页吸收的图形可以添加到同一文档中的另一页。以下是实现此目的的两种方法:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddToAnotherPageMethod1()
{
// The path to the document directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentWithVectorGraphics.pdf"))
{
// Create GraphicsAbsorber
using (var graphicsAbsorber = new Aspose.Pdf.Vector.GraphicsAbsorber())
{
// Get the first and second pages
var page1 = document.Pages[1];
var page2 = document.Pages[2];
// Extract graphic elements from the first page
graphicsAbsorber.Visit(page1);
// Temporarily suppress updates for better performance
page2.Contents.SuppressUpdate();
// Add each graphic element from the first page to the second page
foreach (var element in graphicsAbsorber.Elements)
{
element.AddOnPage(page2); // Add each graphic element to the second page.
}
// Resume updates and apply changes
page2.Contents.ResumeUpdate();
}
// Save PDF document
document.Save(dataDir + "DocumentWithVectorGraphics_out.pdf");
}
}
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddToAnotherPageMethod2()
{
// The path to the document directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentWithVectorGraphics.pdf"))
{
// Create GraphicsAbsorber
using (var graphicsAbsorber = new Aspose.Pdf.Vector.GraphicsAbsorber())
{
// Get the first and second pages
var page1 = document.Pages[1];
var page2 = document.Pages[2];
// Extract graphic elements from the first page
graphicsAbsorber.Visit(page1);
// Temporarily suppress updates for better performance
page2.Contents.SuppressUpdate();
// Add all graphics at once from the first page to the second page
page2.AddGraphics(graphicsAbsorber.Elements);
// Resume updates and apply changes
page2.Contents.ResumeUpdate();
}
// Save PDF document
document.Save(dataDir + "DocumentWithVectorGraphics_out.pdf");
}
}
AddOnPage
进行单独添加,使用 AddGraphics
进行批量添加。Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.