Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
모든 PDF 페이지는 리소스 및 콘텐츠 속성을 포함합니다. 리소스는 이미지 및 양식과 같은 요소일 수 있으며, 콘텐츠는 PDF 연산자의 집합으로 표현됩니다. 각 연산자는 이름과 인수를 가지고 있습니다. 이 예제에서는 연산자를 사용하여 PDF 파일에 이미지를 추가합니다.
다음 코드 조각은 Aspose.PDF.Drawing 라이브러리와 함께 작동합니다.
기존 PDF 파일에 이미지를 추가하려면:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddImageToPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "AddImage.pdf"))
{
// Set coordinates for the image placement
int lowerLeftX = 100;
int lowerLeftY = 100;
int upperRightX = 200;
int upperRightY = 200;
// Get the page where image needs to be added
var page = document.Pages[1];
// Load image into stream
using (var imageStream = new FileStream(dataDir + "AddImage.jpg", FileMode.Open))
{
// Add image to Images collection of Page Resources
page.Resources.Images.Add(imageStream);
// Using GSave operator: this operator saves the current graphics state
page.Contents.Add(new Aspose.Pdf.Operators.GSave());
// Create Rectangle and Matrix objects to define image positioning
var rectangle = new Aspose.Pdf.Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
var matrix = new Aspose.Pdf.Matrix(new double[] { rectangle.URX - rectangle.LLX, 0, 0, rectangle.URY - rectangle.LLY, rectangle.LLX, rectangle.LLY });
// Using ConcatenateMatrix operator: defines how the image must be placed
page.Contents.Add(new Aspose.Pdf.Operators.ConcatenateMatrix(matrix));
// Retrieve the added image and use Do operator to draw it
var ximage = page.Resources.Images[page.Resources.Images.Count];
page.Contents.Add(new Aspose.Pdf.Operators.Do(ximage.Name));
// Using GRestore operator: this operator restores the graphics state
page.Contents.Add(new Aspose.Pdf.Operators.GRestore());
}
// Save PDF document
document.Save(dataDir + "AddImage_out.pdf");
}
}
PDF 파일에 이미지를 추가하는 더 쉽고 대안적인 방법도 있습니다. PdfFileMend 클래스의 AddImage 메서드를 사용할 수 있습니다. AddImage 메서드는 추가할 이미지, 이미지를 추가할 페이지 번호 및 좌표 정보를 요구합니다. 그 후 Close 메서드를 사용하여 업데이트된 PDF 파일을 저장합니다. 다음 코드 조각은 기존 PDF 파일에 이미지를 추가하는 방법을 보여줍니다.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddImageToPDFUsingPdfFileMender()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_WorkingDocuments();
// Define image file and output PDF file paths
var imageFileName = Path.Combine(dataDir, "Images", "Sample-01.jpg");
// Create PDF document
using (var document = new Aspose.Pdf.Document())
{
// Add first page with specified size
var page = document.Pages.Add();
page.SetPageSize(Aspose.Pdf.PageSize.A3.Height, Aspose.Pdf.PageSize.A3.Width);
// Add second page
page = document.Pages.Add();
// Create PdfFileMend object
var mender = new Aspose.Pdf.Facades.PdfFileMend(document);
// Add image to the first page using the mender
mender.AddImage(imageFileName, 1, 0, 0, (float)page.CropBox.Width, (float)page.CropBox.Height);
// Save PDF document
document.Save(dataDir + "AddImageMender_out.pdf");
}
}
때때로 PDF에 삽입하기 전에 이미지를 자르는 것이 필요합니다. AddImage()
메서드를 사용하여 자른 이미지를 추가할 수 있습니다:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddCroppedImageToPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Define image file and output PDF file paths
var imageFileName = Path.Combine(dataDir, "Images", "Sample-01.jpg");
var outputPdfFileName = dataDir + "Example-add-image-mender.pdf";
// Open PDF document
using (var document = new Aspose.Pdf.Document())
{
// Open image stream
using (var imgStream = File.OpenRead(imageFileName))
{
// Define the rectangle where the image will be placed on the PDF page
var imageRect = new Aspose.Pdf.Rectangle(17.62, 65.25, 602.62, 767.25);
// Crop the image to half its original width and height
var w = imageRect.Width / 2;
var h = imageRect.Height / 2;
var bbox = new Aspose.Pdf.Rectangle(imageRect.LLX, imageRect.LLY, imageRect.LLX + w, imageRect.LLY + h);
// Add page
var page = document.Pages.Add();
// Insert the cropped image onto the page, specifying the original position (imageRect)
// and the cropping area (bbox)
page.AddImage(imgStream, imageRect, bbox);
}
// Save PDF document to the specified file path
document.Save(dataDir + "AddCroppedImageMender_out.pdf");
}
}
이미지의 크기를 모르는 경우 페이지에 왜곡된 이미지가 나타날 가능성이 있습니다. 다음 예제는 이를 피하는 방법 중 하나를 보여줍니다.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddingImageAndPreserveAspectRatioIntoPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Load the image
using (var bitmap = System.Drawing.Image.FromFile(dataDir + "InputImage.jpg"))
{
// Get the original width and height of the image
int width = bitmap.Width;
int height = bitmap.Height;
// Create PDF document
using (var document = new Aspose.Pdf.Document())
{
// Add page
var page = document.Pages.Add();
// Define the scaled width and height while preserving the aspect ratio
int scaledWidth = 400;
int scaledHeight = scaledWidth * height / width;
// Add the image to the page
page.AddImage(dataDir + "InputImage.jpg", new Aspose.Pdf.Rectangle(10, 10, scaledWidth, scaledHeight));
// Save PDF document
document.Save(dataDir + "PreserveAspectRatio.pdf");
}
}
}
이미지 크기를 줄이기 위해 다양한 유형의 압축을 적용할 수 있습니다. 이미지에 적용되는 압축 유형은 원본 이미지의 ColorSpace에 따라 다릅니다. 즉, 이미지가 컬러(RGB)인 경우 JPEG2000 압축을 적용하고, 흑백인 경우 JBIG2/JBIG2000 압축을 적용해야 합니다. 따라서 각 이미지 유형을 식별하고 적절한 압축 유형을 사용하면 최상의 최적화된 출력을 생성할 수 있습니다.
PDF 파일에는 텍스트, 이미지, 그래프, 첨부 파일, 주석 등 요소가 포함될 수 있으며, 원본 PDF 파일에 이미지가 포함되어 있는 경우 이미지의 색상 공간을 결정하고 적절한 압축을 적용하여 PDF 파일 크기를 줄일 수 있습니다. 다음 코드 조각은 PDF 내 이미지가 컬러인지 흑백인지 식별하는 단계를 보여줍니다.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImageTypesFromPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Counters for grayscale and RGB images
int grayscaled = 0;
int rgb = 0;
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ExtractImages.pdf"))
{
// Iterate through all pages in the document
foreach (Aspose.Pdf.Page page in document.Pages)
{
Console.WriteLine("--------------------------------");
var abs = new Aspose.Pdf.ImagePlacementAbsorber();
page.Accept(abs);
// Get the count of images on the current page
Console.WriteLine("Total Images = {0} on page number {1}", abs.ImagePlacements.Count, page.Number);
// Iterate through all the image placements on the page
int image_counter = 1;
foreach (Aspose.Pdf.ImagePlacement ia in abs.ImagePlacements)
{
// Determine the color type of the image
var colorType = ia.Image.GetColorType();
switch (colorType)
{
case Aspose.Pdf.ColorType.Grayscale:
++grayscaled;
Console.WriteLine("Image {0} is Grayscale...", image_counter);
break;
case Aspose.Pdf.ColorType.Rgb:
++rgb;
Console.WriteLine("Image {0} is RGB...", image_counter);
break;
}
image_counter += 1;
}
}
}
}
PDF 파일에 추가되는 이미지의 품질을 제어할 수 있습니다. XImageCollection 클래스의 오버로드된 Replace 메서드를 사용하십시오.
다음 코드 조각은 문서의 모든 이미지를 JPEG로 변환하여 압축에 80% 품질을 사용하는 방법을 보여줍니다.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ReplaceImagesInPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ReplaceImages.pdf"))
{
// Iterate through all pages in the document
foreach (Aspose.Pdf.Page page in document.Pages)
{
int idx = 1;
// Iterate through all images in the page's resources
foreach (Aspose.Pdf.XImage image in page.Resources.Images)
{
using (var imageStream = new MemoryStream())
{
// Save the image as JPEG with 80% quality
image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);
// Replace the image in the page's resources
page.Resources.Images.Replace(idx, imageStream, 80);
idx = idx + 1;
}
}
}
// Save PDF document
document.Save(dataDir + "ReplaceImages_out.pdf");
}
}
벡터 모양을 기본 비트맵 이미지 위에 배치하면 마스크로 작용하여 벡터 모양과 정렬된 기본 디자인의 일부만 노출됩니다. 모양 외부의 모든 영역은 숨겨집니다.
코드 조각은 PDF를 로드하고 두 개의 이미지 파일을 열어 첫 페이지의 첫 번째 두 이미지에 스텐실 마스크로 적용합니다.
스텐실 마스크는 ‘XImage.AddStencilMask(Stream maskStream)’ 메서드를 통해 추가할 수 있습니다:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddStencilMasksToImages()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Images();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "AddStencilMasksToImages.pdf"))
{
// Open the first mask image file
using (var fs1 = new FileStream(dataDir + "mask1.jpg", FileMode.Open))
{
// Open the second mask image file
using (var fs2 = new FileStream(dataDir + "mask2.png", FileMode.Open))
{
// Apply stencil mask to the first image on the first page
document.Pages[1].Resources.Images[1].AddStencilMask(fs1);
// Apply stencil mask to the second image on the first page
document.Pages[1].Resources.Images[2].AddStencilMask(fs2);
}
}
// Save PDF document
document.Save(dataDir + "AddStencilMasksToImages_out.pdf");
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.