←Select platform

CompactFile(string,string,int,int,bool,long,int,bool,long,CodecsSavePageMode,bool,bool,bool) Method

Summary
Compacts TIFF, PNG or Exif JPEG files with specific options.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public void CompactFile( 
   string srcFileName, 
   string destFileName, 
   int pages, 
   int srcStartPage, 
   bool useSrcIfd, 
   long srcIfd, 
   int destStartPage, 
   bool useDestIfd, 
   long destIfd, 
   CodecsSavePageMode pageMode, 
   bool noSubFileType, 
   bool motorolaOrder, 
   bool bigTiff 
) 
- (BOOL)compactFile:(NSString *)srcFileName  
    destinationFile:(NSString *)destFileName  
              pages:(NSUInteger)pages  
    sourceStartPage:(NSInteger)srcStartPage  
estinationStartPage:(NSInteger)destStartPage  
       useSourceIFD:(BOOL)useSrcIfd  
          sourceIFD:(NSInteger)srcIfd  
  useDestinationIFD:(BOOL)useDestIfd  
     destinationIFD:(NSInteger)destIfd  
           pageMode:(LTCodecsSavePageMode)pageMode  
      noSubFileType:(BOOL)noSubFileType  
      motorolaOrder:(BOOL)motorolaOrder  
            bigTiff:(BOOL)bigTiff  
              error:(NSError **)error 
public void compactFile(String srcFileName, String destFileName, int pages, int srcStartPage, boolean useSrcIfd, long srcIfd, int destStartPage, boolean useDestIfd, long destIfd, CodecsSavePageMode pageMode, boolean noSubFileType, boolean motorolaOrder, boolean bigTiff) 
public: 
void CompactFile(  
   String^ srcFileName, 
   String^ destFileName, 
   int pages, 
   int srcStartPage, 
   bool useSrcIfd, 
   int64 srcIfd, 
   int destStartPage, 
   bool useDestIfd, 
   int64 destIfd, 
   CodecsSavePageMode pageMode, 
   bool noSubFileType, 
   bool motorolaOrder, 
   bool bigTiff 
)  

Parameters

srcFileName
A String containing the name of the file being compacted. All the pages will be read from this file.

destFileName
A String containing the name of the file in which all the pages will be written.

pages
Value that represents the number of pages to copy. Use 0 to copy all the pages. If pages is > 0, only pages will be copied to destFileName.

srcStartPage
Specifies the start page in the source file. Page 1 is the first page, page 2 is the second page, etc. The pages will be read starting with this page.

useSrcIfd
true to use srcIfd as the file offset of the first page. false to use srcStartPage .

srcIfd
Offset into the source file for the start page. Used only if useSrcIfd is true.

All pages will be relative to that page. (Note that this might not be the first physical page in the file). This is a common technique for manipulating files with thousands of pages.

destStartPage
0 to overwrite destFileName . <>0 to append the pages to the end of the file.

useDestIfd
true to use destIfd as the file offset of the first page. false to use destStartPage.

destIfd
Offset into the destination file for the start page. Used only if useDestIfd is true.

All pages will be relative to that page. (Note that this might not be the first physical page in the file). This is a common technique for manipulating files with thousands of pages.

pageMode
Flag which indicates the save page mode.

Value Meaning
CodecsSavePageMode.Insert All pages are inserted before destStartPage .
CodecsSavePageMode.Replace Pages in destFileName are replaced beginning with destStartPage .

noSubFileType
true to have the TGSUBFILETYPE tag stripped from all pages in the destination file.

motorolaOrder
true to save pages in Motorola byte order. false to save pages in Intel byte order. This only applies when creating a new file. When updating existing files, the byte order of the original file is used.

bigTiff
true to save TIFF files using the BigTiff format, which allows TIFF files to exceed 4GB.

Remarks

This method can also be used to copy or extract one or more pages from a TIFF file and copy them without recompression to another TIFF file. Whenever you save an image containing a region as a TIFF file format, the region is also saved. Note, however, that the ability to save a region inside a TIFF file must be unlocked. This requires a Document Imaging or Medical Imaging toolkit.

If the source is PNG, the destination is also PNG. If the source is Exif JPEG, the destination is also Exif JPEG. For both of these formats, setting pages to 1 will discard the thumbnail if it exists.

The "ifd" settings are not useful for PNG and Exif JPEG and should not be used. They will most likely not give you the results you expect.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Svg; 
 
 
 
public void CompactFileExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "CompactFile1_Src.tif"); 
   string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "CompactFile1_Dest.tif"); 
 
   // Create a RasterImage with 4 pages containing text showing the page number 
   RasterImage image = null; 
   const int pageCount = 4; 
 
   using (System.Drawing.Font f = new System.Drawing.Font("Arial", 36, System.Drawing.FontStyle.Bold)) 
   using (System.Drawing.Bitmap btmp = new System.Drawing.Bitmap(320, 200)) 
   using (System.Drawing.StringFormat sf = new System.Drawing.StringFormat()) 
   { 
      System.Drawing.Rectangle rc = new System.Drawing.Rectangle(0, 0, btmp.Width, btmp.Height); 
      sf.Alignment = System.Drawing.StringAlignment.Center; 
      sf.LineAlignment = System.Drawing.StringAlignment.Center; 
 
      for (int i = 1; i <= pageCount; i++) 
      { 
         // Create a GDI+ bitmap with the text 
         string text = "Page " + i; 
 
         using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(btmp)) 
         { 
            g.FillRectangle(System.Drawing.Brushes.White, rc); 
            g.DrawString(text, f, System.Drawing.Brushes.Black, rc, sf); 
         } 
 
         RasterImage tempImage = Leadtools.Drawing.RasterImageConverter.ConvertFromImage(btmp, Leadtools.Drawing.ConvertFromImageOptions.None); 
 
         if (image == null) 
            image = tempImage; 
         else 
            image.AddPage(tempImage); 
      } 
   } 
 
   // Save all the pages to the file 
   // The file should have 4 pages now: 1, 2, 3, 4 
   codecs.Save(image, srcFileName, RasterImageFormat.Tif, 1, 1, pageCount, 1, CodecsSavePageMode.Overwrite); 
   image.Dispose(); 
 
   // All the pages in the source TIFF file. This will create the destination file 
   codecs.CompactFile(srcFileName, destFileName, 0); 
 
   // Compact the source file again and append all the pages to the existing destination file 
   int pagesToAdd = 0;  // 0 means all pages 
   int srcStartPage = 1; 
   int destStartPage = 5;  // insert at the end 
 
   codecs.CompactFile( 
      srcFileName, 
      destFileName, 
      pagesToAdd, 
      srcStartPage, 
      false, 
      0, 
      destStartPage, 
      false, 
      0, 
      CodecsSavePageMode.Insert, 
      false, 
      false); 
 
   // Clean up 
   codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Codecs Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.