Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
다음 코드 스니펫은 Aspose.PDF.Drawing 라이브러리와 함께 작동합니다.
이 주제는 Aspose.PDF 네임스페이스의 연산자 클래스를 사용하는 방법을 설명하며, 이를 통해 이미지를 추출하지 않고도 해상도 및 크기 정보를 얻을 수 있는 기능을 제공합니다.
이를 달성하는 방법에는 여러 가지가 있습니다. 이 문서에서는 arraylist
와 이미지 배치 클래스를 사용하는 방법을 설명합니다.
// 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
결과적으로 텍스트는 일반 형태로 그려지지만 텍스트 연산자 사이에 일부 변환이 수행됩니다. 이미지를 표시하거나 형상 객체 및 이미지를 그리려면 Do 연산자를 사용해야 합니다.
우리는 또한 이미지 크기를 가져오는 데 사용할 수 있는 Width 및 Height라는 두 가지 속성을 제공하는 XImage라는 클래스를 가지고 있습니다.
다음 코드 스니펫은 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.