←Select platform

DocumentWriterEmfPage Constructor

Summary
Initializes a new instance of the DocumentWriterEmfPage class.
Syntax
C#
C++/CLI
Python
public: 
DocumentWriterEmfPage(); 
__init__() # Default constructor 
Remarks

This constructor will initialize the members of DocumentWriterEmfPage as follows:

Member Description
Type DocumentWriterPageType.Emf
EmfHandle IntPtr.Zero
Image null
AnnotationContainer null
Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Document.Writer; 
using Leadtools.Ocr; 
 
 
public void DocumentEmfPageExample() 
{ 
   // Output PDF file name 
   var pdfFileName = Path.Combine(LEAD_VARS.ImagesDir, "Example.pdf"); 
 
   // Document properties, each page is 8.5 by 11 inches at 300 DPI. Typical dimensions 
   var resolution = 300; 
   var pageWidth = (int)(8.5 * resolution); 
   var pageHeight = (int)(11 * resolution); 
 
   // Create the document writer 
   var docWriter = new DocumentWriter(); 
   docWriter.BeginDocument(pdfFileName, DocumentFormat.Pdf); 
 
   for (var pageNumber = 1; pageNumber <= 2; pageNumber++) 
   { 
      var page = new DocumentWriterEmfPage(); 
      page.EmfHandle = GetPageEmf(pageNumber, pageWidth, pageHeight, resolution); 
      docWriter.AddPage(page); 
 
      if (page.EmfHandle != IntPtr.Zero) 
         DeleteEnhMetaFile(page.EmfHandle); 
   } 
 
   docWriter.EndDocument(); 
 
   // To show the PDF file 
   // System.Diagnostics.Process.Start(pdfFileName); 
} 
 
private static IntPtr GetPageEmf(int pageNumber, int pageWidth, int pageHeight, int resolution) 
{ 
   // Get the screen DC 
   using (var graphicsScreen = Graphics.FromHwndInternal(IntPtr.Zero)) 
   { 
      var hdcScreen = graphicsScreen.GetHdc(); 
 
      // Calculate the EMF rectangle in 1/100 mm 
      var frameRect = new RectangleF( 
         0, 
         0, 
         ((float)pageWidth * 2540 + resolution / 2) / resolution, 
         ((float)pageHeight * 2540 + resolution / 2) / resolution); 
 
      // Create the EMF, GDI compatible 
      using (var metaFile = new Metafile(hdcScreen, frameRect, MetafileFrameUnit.GdiCompatible, EmfType.EmfOnly, null)) 
      { 
         // No need for this anymore 
         graphicsScreen.ReleaseHdc(hdcScreen); 
 
         // Now create the graphics to draw in from the metafile 
         using (var graphics = Graphics.FromImage(metaFile)) 
         { 
            // Get the EMF DPI 
            MetafileHeader header = metaFile.GetMetafileHeader(); 
            var emfDpiX = header.DpiX; 
            var emfDpiY = header.DpiY; 
 
            // We must convert each value we want from pixels to EMF coordinates, so use a scale 
            graphics.ScaleTransform(emfDpiX / resolution, emfDpiY / resolution); 
 
            // To draw font, we must use this scale value to convert from point size 
            var fontScale = (float)resolution / Math.Max(graphics.DpiX, graphics.DpiY); 
 
            // Ready, now we can draw... 
 
            // Fill it with white 
            var rc = new RectangleF(0, 0, pageWidth, pageHeight); 
            graphics.FillRectangle(Brushes.White, rc); 
 
            // Put a frame 
            rc = new RectangleF(1, 1, pageWidth - 2, pageHeight - 2); 
            graphics.DrawRectangle(Pens.DarkGreen, rc.X, rc.Y, rc.Width, rc.Height); 
 
            // Draw some text 
            var text = "This is page " + pageNumber.ToString(); 
 
            float pointSize = 20 * fontScale; 
            // fonts need to converted to scaled back, so ... 
            using (var font = new Font("Arial", pointSize, FontStyle.Regular)) 
               graphics.DrawString(text, font, Brushes.Black, 0, 0); 
 
            // Add some vector objects, red line 
            rc = new Rectangle(50, 50, pageWidth - 100, pageHeight - 100); 
            graphics.DrawLine(Pens.Red, rc.Left, rc.Top, rc.Right, rc.Bottom); 
 
            // blue rect somewhere 
            rc = new Rectangle(100, 100, 150, 100); 
            graphics.FillRectangle(Brushes.Blue, rc); 
         } 
 
         return metaFile.GetHenhmetafile(); 
      } 
   } 
} 
 
// GDI interop 
[DllImport("gdi32.dll")] 
private static extern int DeleteEnhMetaFile(IntPtr hemf); 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

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

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