Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Potongan kode berikut juga bekerja dengan pustaka Aspose.PDF.Drawing.
Topik ini menjelaskan cara menggunakan kelas operator dalam namespace Aspose.PDF yang menyediakan kemampuan untuk mendapatkan informasi resolusi dan dimensi tentang gambar tanpa harus mengekstraknya.
Ada berbagai cara untuk mencapai ini. Artikel ini menjelaskan cara menggunakan arraylist
dan kelas penempatan gambar.
// Draw some text
GSave
ConcatenateMatrix // rotate contents after the operator
// Some graphics work
ConcatenateMatrix // scale (with previous rotation) contents after the operator
// Some other graphics work
GRestore
// Draw some text
Sebagai hasilnya, teks digambar dalam bentuk biasa tetapi beberapa transformasi dilakukan di antara operator teks. Untuk menampilkan gambar atau menggambar objek dan gambar bentuk, kita perlu menggunakan operator Do.
Kami juga memiliki kelas bernama XImage yang menyediakan dua properti, Width dan Height, yang dapat digunakan untuk mendapatkan dimensi gambar.
Potongan kode berikut menunjukkan kepada Anda cara mendapatkan dimensi dan resolusi gambar tanpa mengekstrak gambar dari dokumen PDF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImageInformationFromPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ImageInformation.pdf"))
{
// Define the default resolution for image
int defaultResolution = 72;
var graphicsState = new Stack();
// Define list which will hold image names
var imageNames = new List<string>(document.Pages[1].Resources.Images.Names);
// Insert an object to stack
graphicsState.Push(new System.Drawing.Drawing2D.Matrix(1, 0, 0, 1, 0, 0));
// Get all the operators on first page of document
foreach (var op in document.Pages[1].Contents)
{
// Use GSave/GRestore operators to revert the transformations back to previously set
var opSaveState = op as Aspose.Pdf.Operators.GSave;
var opRestoreState = op as Aspose.Pdf.Operators.GRestore;
var opCtm = op as Aspose.Pdf.Operators.ConcatenateMatrix;
var opDo = op as Aspose.Pdf.Operators.Do;
if (opSaveState != null)
{
// Save previous state and push current state to the top of the stack
graphicsState.Push(((System.Drawing.Drawing2D.Matrix)graphicsState.Peek()).Clone());
}
else if (opRestoreState != null)
{
// Throw away current state and restore previous one
graphicsState.Pop();
}
else if (opCtm != null)
{
var cm = new System.Drawing.Drawing2D.Matrix(
(float)opCtm.Matrix.A,
(float)opCtm.Matrix.B,
(float)opCtm.Matrix.C,
(float)opCtm.Matrix.D,
(float)opCtm.Matrix.E,
(float)opCtm.Matrix.F);
// Multiply current matrix with the state matrix
((System.Drawing.Drawing2D.Matrix)graphicsState.Peek()).Multiply(cm);
continue;
}
else if (opDo != null)
{
// In case this is an image drawing operator
if (imageNames.Contains(opDo.Name))
{
var lastCTM = (System.Drawing.Drawing2D.Matrix)graphicsState.Peek();
// Create XImage object to hold images of first pdf page
var image = document.Pages[1].Resources.Images[opDo.Name];
// Get image dimensions
double scaledWidth = Math.Sqrt(Math.Pow(lastCTM.Elements[0], 2) + Math.Pow(lastCTM.Elements[1], 2));
double scaledHeight = Math.Sqrt(Math.Pow(lastCTM.Elements[2], 2) + Math.Pow(lastCTM.Elements[3], 2));
// Get Height and Width information of image
double originalWidth = image.Width;
double originalHeight = image.Height;
// Compute resolution based on above information
double resHorizontal = originalWidth * defaultResolution / scaledWidth;
double resVertical = originalHeight * defaultResolution / scaledHeight;
// Display Dimension and Resolution information of each image
Console.Out.WriteLine(
string.Format(dataDir + "image {0} ({1:.##}:{2:.##}): res {3:.##} x {4:.##}",
opDo.Name, scaledWidth, scaledHeight, resHorizontal,
resVertical));
}
}
}
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.