Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
この章では、PDF文書内のベクターグラフィックスと対話するために強力なGraphicsAbsorber
クラスを使用する方法を探ります。グラフィックスを移動、削除、または追加する必要がある場合、このガイドではこれらのタスクを効果的に実行する方法を示します。
ベクターグラフィックスは、多くの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);
// Step 5: 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は、これを達成するための2つのメソッドを提供します:
// 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");
}
}
1ページから吸収されたグラフィックスは、同じ文書内の別のページに追加できます。これを達成するための2つの方法は次のとおりです:
// 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.