public int BitsPerPixel { get; set; }
@property (nonatomic, assign) NSInteger bitsPerPixel;
public int getBitsPerPixel()
public void setBitsPerPixel(int value)
BitsPerPixel # get and set (CodecsRasterPdfInfo)
An integer that indicates the bits per pixel value of the raster PDF page. The default value is 0
.
The bits per pixel value of the raster PDF page. This is the same value used as the bitsPerPixel parameter value to the RasterCodecs.Save method used to create this file. You can set the value of CodecsPdfLoadOptions.DisplayDepth to this value to load a PDF page in the original bits per pixel value it was saved at.
This property is guaranteed to contain accurate information only if the value of IsLeadPdf is true.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
using Leadtools.Svg;
private static void CodecsRasterPdfInfoExample()
{
string multiPageRasterPdfFileName = Path.Combine(LEAD_VARS.ImagesDir, "MultiPageRasterPdf.pdf");
string pagesPdfFileNames = Path.Combine(LEAD_VARS.ImagesDir, "Page{0}.pdf");
// Create a 4 pages PDF file
CreateMultiPageRasterPdfFile(multiPageRasterPdfFileName);
// Without prior information, we will split this multi-page PDF file into
// multiple single page PDF files with original size, resolution, bit-depth and compression
using (RasterCodecs codecs = new RasterCodecs())
{
int pagesSaved = 0;
// Get the file information
using (CodecsImageInfo imageInfo = codecs.GetInformation(multiPageRasterPdfFileName, true))
{
Debug.WriteLine(
"Information: Format:\n Format: {0}\n Pages: {1}\n Bits/Pixel: {2}\n Size: {3} by {4}\n Resolution: {5} by {6}",
imageInfo.Format, imageInfo.TotalPages, imageInfo.BitsPerPixel, imageInfo.Width, imageInfo.Height, imageInfo.XResolution, imageInfo.YResolution);
Debug.WriteLine("-----------------------");
// Now show the PDF specific information
// Notice: GetInformation will return RasPdf as the format for all PDF files
// regardless of the actual compression
if (imageInfo.Format == RasterImageFormat.RasPdf)
{
Debug.WriteLine("Image is PDF, getting the specific info for each page");
for (int i = 0; i < imageInfo.TotalPages; i++)
{
int pageNumber = i + 1;
CodecsRasterPdfInfo pdfInfo = codecs.GetRasterPdfInfo(multiPageRasterPdfFileName, i + 1);
if (pageNumber == 1)
{
Debug.WriteLine(" LEAD PDF?: {0}", pdfInfo.IsLeadPdf);
Debug.WriteLine(" Version: {0}", pdfInfo.Version);
}
if (pdfInfo.IsLeadPdf)
{
Debug.WriteLine(
"Page {0} of {1} info:\n Bits/Pixel: {2}\n Size: {3} by {4}\n Resolution: {5} by {6}\n Format: {7}",
pageNumber, imageInfo.TotalPages, pdfInfo.BitsPerPixel, pdfInfo.Width, pdfInfo.Height, pdfInfo.XResolution, pdfInfo.YResolution, pdfInfo.Format);
Debug.WriteLine("-----------------------");
// Load this page with its original parameters
codecs.Options.RasterizeDocument.Load.XResolution = pdfInfo.XResolution;
codecs.Options.RasterizeDocument.Load.YResolution = pdfInfo.YResolution;
codecs.Options.Pdf.Load.DisplayDepth = pdfInfo.BitsPerPixel;
using (RasterImage pageImage = codecs.Load(multiPageRasterPdfFileName, 0, CodecsLoadByteOrder.BgrOrGray, pageNumber, pageNumber))
{
Debug.WriteLine(
"Page {0} of {1} loaded:\n Bits/Pixel: {2}\n Size: {3} by {4}\n Resolution: {5} by {6}",
pageNumber, imageInfo.TotalPages, pageImage.BitsPerPixel, pageImage.Width, pageImage.Height, pageImage.XResolution, pageImage.YResolution);
Debug.WriteLine("-----------------------");
// Setup the PDF save options
codecs.Options.Pdf.Save.UseImageResolution = true;
codecs.Options.Pdf.Save.Version = pdfInfo.Version;
// Save this page to a separate file
string pagePdfFileName = string.Format(pagesPdfFileNames, pageNumber);
codecs.Save(pageImage, pagePdfFileName, pdfInfo.Format, pdfInfo.BitsPerPixel);
pagesSaved++;
}
}
}
}
}
// We are done, now show the info of the generated files
for (int i = 0; i < pagesSaved; i++)
{
int pageNumber = i + 1;
string pagePdfFileName = string.Format(pagesPdfFileNames, pageNumber);
CodecsRasterPdfInfo pdfInfo = codecs.GetRasterPdfInfo(pagePdfFileName, 1);
Debug.WriteLine(
"Page {0} of {1} info:\n Bits/Pixel: {2}\n Size: {3} by {4}\n Resolution: {5} by {6}\n Format: {7}",
pageNumber, pagesSaved, pdfInfo.BitsPerPixel, pdfInfo.Width, pdfInfo.Height, pdfInfo.XResolution, pdfInfo.YResolution, pdfInfo.Format);
Debug.WriteLine("-----------------------");
}
}
}
private static void CreateMultiPageRasterPdfFile(string pdfFileName)
{
string sourceFile = Path.Combine(LEAD_VARS.ImagesDir, "Sample1.cmp");
// Delete the destination PDF file if exists
if (System.IO.File.Exists(pdfFileName))
{
System.IO.File.Delete(pdfFileName);
}
using (RasterCodecs codecs = new RasterCodecs())
{
// Save to PDF v1.4
codecs.Options.Pdf.Save.Version = CodecsRasterPdfVersion.V14;
// Save using image resolution
codecs.Options.Pdf.Save.UseImageResolution = true;
// Load the source file to use for each page
using (RasterImage pageImage = codecs.Load(sourceFile, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1))
{
Debug.WriteLine(
"Original image dimension:\n Size: {0} by {1}\n Resolution: {2} by {3}",
pageImage.Width, pageImage.Height, pageImage.XResolution, pageImage.YResolution);
// Array of bits/pixel and compression to use when saving the pages
int[] bitsPerPixel =
{
1,
8,
24
};
RasterImageFormat[] formats =
{
RasterImageFormat.RasPdfG4,
RasterImageFormat.RasPdfLzw,
RasterImageFormat.RasPdfJpeg422
};
int pageCount = bitsPerPixel.Length;
for (int i = 0; i < pageCount; i++)
{
// Append this page with given format
Debug.WriteLine("Saving page {0} of {1} using {2} at {3}", i + 1, pageCount, bitsPerPixel[i], formats[i]);
codecs.Save(pageImage, pdfFileName, formats[i], bitsPerPixel[i], 1, 1, -1, CodecsSavePageMode.Append);
}
}
Debug.WriteLine("-----------------------");
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
import java.io.*;
import java.net.*;
import java.nio.file.Paths;
import java.util.*;
import java.time.Instant;
import java.time.Duration;
import org.junit.*;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import static org.junit.Assert.*;
import leadtools.*;
import leadtools.codecs.*;
import leadtools.codecs.RasterCodecs.FeedCallbackThunk;
import leadtools.drawing.internal.*;
import leadtools.imageprocessing.*;
import leadtools.imageprocessing.color.ChangeIntensityCommand;
import leadtools.svg.*;
public void codecsRasterPdfInfoExample() throws IOException {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
String multiPageRasterPdfFileName = combine(LEAD_VARS_IMAGES_DIR, "MultiPageRasterPdf.pdf");
String pagesPdfFileNames = combine(LEAD_VARS_IMAGES_DIR, "Page%s.pdf");
// Create a 4 pages PDF file
createMultiPageRasterPdfFile(multiPageRasterPdfFileName);
// Without prior information, we will split this multi-page PDF file into
// multiple single page PDF files with original size, resolution, bit-depth and
// compression
RasterCodecs codecs = new RasterCodecs();
int pagesSaved = 0;
// Get the file information
CodecsImageInfo imageInfo = codecs.getInformation(multiPageRasterPdfFileName, true);
System.out.printf(
"Information: Format:%n Format: %s%n Pages: %s%n Bits/Pixel: %s%n Size: %S%n by %s%n Resolution: %s by %s%n",
imageInfo.getFormat(), imageInfo.getTotalPages(), imageInfo.getBitsPerPixel(), imageInfo.getWidth(),
imageInfo.getHeight(), imageInfo.getXResolution(), imageInfo.getYResolution());
System.out.println("-----------------------");
// Now show the PDF specific information
// Notice: GetInformation will return RasPdf as the format for all PDF files
// regardless of the actual compression
if (imageInfo.getFormat() == RasterImageFormat.RAS_PDF) {
System.out.println("Image is PDF, getting the specific info for each page");
ILeadStream multiPageRasterStream = LeadStreamFactory.create(multiPageRasterPdfFileName);
for (int i = 0; i < imageInfo.getTotalPages(); i++) {
int pageNumber = i + 1;
CodecsRasterPdfInfo pdfInfo = codecs.getRasterPdfInfo(multiPageRasterStream, i + 1);
if (pageNumber == 1) {
System.out.println(" LEAD PDF?: " + pdfInfo.isLeadPdf());
System.out.println(" Version: " + pdfInfo.getVersion());
}
if (pdfInfo.isLeadPdf()) {
System.out.printf(
"Page %s of %s info:%n Bits/Pixel: %s%n Size: %s by %s%n Resolution: %s by %s%n Format: %s%n",
pageNumber, imageInfo.getTotalPages(), pdfInfo.getBitsPerPixel(), pdfInfo.getWidth(),
pdfInfo.getHeight(), pdfInfo.getXResolution(), pdfInfo.getYResolution(), pdfInfo.getFormat());
System.out.println("-----------------------");
// Load this page with its original parameters
codecs.getOptions().getRasterizeDocument().getLoad().setXResolution(pdfInfo.getXResolution());
codecs.getOptions().getRasterizeDocument().getLoad().setYResolution(pdfInfo.getYResolution());
codecs.getOptions().getPdf().getLoad().setDisplayDepth(pdfInfo.getBitsPerPixel());
RasterImage pageImage = codecs.load(multiPageRasterPdfFileName, 0, CodecsLoadByteOrder.BGR_OR_GRAY,
pageNumber, pageNumber);
System.out.printf(
"Page %s of %s loaded:%n Bits/Pixel: %s%n Size: %s by %s%n Resolution: %s by %s%n",
pageNumber, imageInfo.getTotalPages(), pageImage.getBitsPerPixel(), pageImage.getWidth(),
pageImage.getHeight(), pageImage.getXResolution(), pageImage.getYResolution());
System.out.println("-----------------------");
// Setup the PDF save options
codecs.getOptions().getPdf().getSave().setUseImageResolution(true);
codecs.getOptions().getPdf().getSave().setVersion(pdfInfo.getVersion());
// Save this page to a separate file
String pagePdfFileName = String.format(pagesPdfFileNames, pageNumber);
codecs.save(pageImage, pagePdfFileName, pdfInfo.getFormat(), pdfInfo.getBitsPerPixel());
pagesSaved++;
}
}
multiPageRasterStream.close();
}
// We are done, now show the info of the generated files
for (int i = 0; i < pagesSaved; i++) {
int pageNumber = i + 1;
String pagePdfFileName = String.format(pagesPdfFileNames, pageNumber);
ILeadStream pagePdfFileStream = LeadStreamFactory.create(pagePdfFileName);
CodecsRasterPdfInfo pdfInfo = codecs.getRasterPdfInfo(pagePdfFileStream, 1);
System.out.printf(
"Page %s of %s info:%n Bits/Pixel: %s%n Size: %s by %s%n Resolution: %s by %s%n Format: %s%n",
pageNumber, pagesSaved, pdfInfo.getBitsPerPixel(), pdfInfo.getWidth(), pdfInfo.getHeight(),
pdfInfo.getXResolution(), pdfInfo.getYResolution(), pdfInfo.getFormat());
System.out.println("-----------------------");
pagePdfFileStream.close();
}
}
private static void createMultiPageRasterPdfFile(String pdfFileName) {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
String sourceFile = combine(LEAD_VARS_IMAGES_DIR, "Sample1.cmp");
// Delete the destination PDF file if exists
File pdfFile = new File(pdfFileName);
if (pdfFile.exists()) {
pdfFile.delete();
}
RasterCodecs codecs = new RasterCodecs();
// Save to PDF v1.4
codecs.getOptions().getPdf().getSave().setVersion(CodecsRasterPdfVersion.V14);
// Save using image resolution
codecs.getOptions().getPdf().getSave().setUseImageResolution(true);
// Load the source file to use for each page
RasterImage pageImage = codecs.load(sourceFile, 0, CodecsLoadByteOrder.BGR_OR_GRAY, 1, 1);
System.out.printf("Original image dimension:%n Size: %s by %s%n Resolution: %s by %s%n",
pageImage.getWidth(), pageImage.getHeight(), pageImage.getXResolution(), pageImage.getYResolution());
// Array of bits/pixel and compression to use when saving the pages
int[] bitsPerPixel = { 1, 8, 24 };
RasterImageFormat[] formats = { RasterImageFormat.RAS_PDF_G4, RasterImageFormat.RAS_PDF_LZW,
RasterImageFormat.RAS_PDF_JPEG };
int pageCount = bitsPerPixel.length;
for (int i = 0; i < pageCount; i++) {
// Append this page with given format
System.out.printf("Saving page %s of %s using %s at %s", i + 1, pageCount, bitsPerPixel[i], formats[i]);
codecs.save(pageImage, pdfFileName, formats[i], bitsPerPixel[i], 1, 1, -1, CodecsSavePageMode.APPEND);
}
System.out.println("-----------------------");
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document