.NET Interface

The .NET Interface makes it possible for the Rainbow PDF Server Based Converter V3.0 to function through .NET applications developed using Visual Basic.NET, Visual C#.NET and similar programs.

The .NET Interface has been tried and tested in the following .NET environments.

CAUTION: You cannot have both Rainbow PDF Server Based Converter V30 and another version of Rainbow PDF Server Based Converter installed on your machine when the NET interface is used. It is necessary to uninstall one version, or only set the path of the Rainbow Server Based Converter you want to use by deleting the unwanted path from the environment variables.

Component Registration

The Rainbow Server Based Converter .NET component is not registered automatically to the global assembly cache (GAC). It is necessary to create the path either by putting the .NET component in the current folder of the application, or by creating an application configuration file.

.NET Component File Name for .NET Framework 2.0/3.0 DfvDotNet20Ctl30.dll
for .NET Framework 1.1 DfvDotNet11Ctl30.dll

Using Windows x64 Edition

In order to use the .NET interface of Rainbow PDF Server Based Converter V3.0 with Windows x64 Edition, it is necessary to apply /platform:x86 option to compilers, such as csc.exe, when compiling the higher rank application.

Classes

The following classes are contained in the .NET component.

Name Functions
DfvObj Rainbow PDF Server Based Converter V3.0 class (itself). This class implements an IDisposable interface. When exiting DfvObj class object, please be sure to call Dispose method in order to release the resource.

Example for C#

DfvDotNetCtl.DfvObj obj = new DfvDotNetCtl.DfvObj();
try {
  // some process
} finally {
  obj.Dispose();
}
DfvException Rainbow PDF Server Based Converter V3.0 exception class. Throws the execute method of DfvObj class.

Properties

DfvException Class includes the following properties.

Name Type R/W Functions
ErrorLevel Int32 R Indicates the level of the error that occurred during the conversion process.
1.Information
2.Warning
3.Recoverable Error
4.Fatal Error
ErrorCode Int32 R Indicates the code of the error that occurred during the converting process. Zero means no error. Non-zero indicates any error occurred.

DfvObj Class includes the following properties.

Name Type R/W Functions
Version String R Get the version string of Rainbow PDF Server Based Converter V3.0.
DocumentURI String R/W Specifies the URI of the target documents you will convert.
  • If DocumentURI is omitted or "@STDIN" is specified, documents are loaded from stdin.
PrinterName String R/W Specifies the output format or the printer name to output.
  • When a printer name is specified, the converted result is outputted to that printer.
  • When "@STDPRN" is specified, the converted result is outputted to the currently used printer.
  • When "@PDF" is specified, the converted result is outputted to PDF.
  • When "@SVG" is specified, the converted result is outputted to SVG.
  • When "@INX" is specified, the converted result is outputted to INX.
  • When "@XPS" is specified, the converted result is outputted to XPS.
  • When "@Flash" is specified, the converted result is outputted to Flash.
  • When "@JPEG" is specified, the converted result is outputted to JPEG.
  • When "@PNG" is specified, the converted result is outputted to PNG.
  • When "@TIFF" is specified, the converted result is outputted to TIFF.
  • When "@MTIFF" is specified, the converted result is outputted to multi-page TIFF.
If this parameter is omitted, -p @PDF is automatically specified. With the Standard Flash version, if this parameter is omitted, -p @Flash is automatically specified. Please refer to "How to specify the printer name" for details.
Please refer to "PDF Output" for the PDF output information.
Please refer to "SVG Output" for the SVG output information.
Please refer to "INX Output" for the INX output.
Please refer to "XPS Output" for the XPS output.
Please refer to "Flash Output" for the Flash output.
JPEG and the PNG output and TIFF output are only available with the Windows version.
OutputFilePath String R/W Specifies the output file path of the converted result. When a printer is specified as an output format by PrinterName, a printing result is saved to the specified file by the printer driver. When an output format other than a printer is specified, it is saved as the specified file with the specified output format. When omitted, or when "@STDOUT" is specified, it goes to standard output.
StartPage
EndPage
Int32 R/W Specifies the start page or the end page of the output document. If the start page is omitted or the specified value is 0 or less, the start page is considered the first page. If the end page is omitted or the specified value exceeds the actual number of pages, the end page is considered as the last page. If the setting is inconsistent, (for example, StartPage=5 EndPage=3) an error occurs.
OmitBlankPages Boolean R/W Effective only when the original file is MS Word or MS Excel. Specifies to disregard any empty pages at the beginning of document. By using this parameter with EndPage = 1, it is possible to output the first page which has actual contents. Other operations are not guaranteed.
ExitLevel Int32 R/W Specifies at which error level to abort the conversion process. Rainbow PDF Server Based Converter V3.0 will stop converting when the detected error level is equal to or higher than the ExitLevel property. The default value is 2 (Warning). Thus if a a level 2 or higher error occurs and error level is 2 (Warning) or higher, the conversion process will be aborted. Acceptable values are from 1 to 4. When a value of 5 or higher is specified, it is considered to be a value of 4. If an error-level:4 (Fatal error) occurs, the converting process will be aborted unconditionally. The ExitLevel does not cause an error message to be displayed no matter what value may be specified for this property.
ErrorLevel Int32 R Indicates the error level that occurred during the conversion process.
1.Information
2.Warning
3.Recoverable Error
4.Fatal Error
ErrorCode Int32 R Indicates the code of the error that occurred during the conversion process. Zero means no error. Non-zero indicates an error occurred.
ErrorMessage String R Indicates the error message of the error that occurred during the conversion process.
ErrorStreamType Int32 R/W Outputs the error message to standard output or to standard error when the error level is less than the specified error level allowed while converting. The error message is not outputted in default.
0.Not output
1.Standard output
2.Standard error output

Properties – PDF Settings

Name Type R/W Functions
PdfVersion Int32 R/W Specifies PDF version:
0.PDF1.3
1.PDF1.4
2.PDF1.5
3.PDF1.6
4.PDF1.7
PdfEncryptLevel Int32 R/W Specifies the key length when encrypting the PDF file during output. The key length can be specified as follows: (Note: This parameter is effective only when you specify PDF1.4 or later.)
0.40bit
1.128bit
PdfUserPassword String W Specifies the user password for PDF. The password must be 32 bytes or less.
PdfOwnerPassword String W Specifies the owner password for PDF. The password must be 32 bytes or less.
PdfNoPrinting Boolean R/W Prohibits printing the PDF file.
It is necessary to specify PdfOwnerPassword so that this parameter is effective.
PdfNoChanging Boolean R/W Prohibits making changes to the PDF file.
It is necessary to specify PdfOwnerPassword so that this parameter is effective.
PdfNoContentCopying Boolean R/W Prohibits copying the content of the PDF file.
It is necessary to specify PdfOwnerPassword so that this parameter is effective.
PdfNoAddingOrChangingComments Boolean R/W Prohibits adding comments and form fields to the PDF file.
It is necessary to specify PdfOwnerPassword so that this parameter is effective.
PdfNoFillForm Boolean R/W Prohibits filling in of form fields and signing of the PDF file. This parameter is effective only when you specify PDF1.4 or later. In order to make this parameter effective, other parameter settings may be required. See also the 'PDF Reference' from Adobe Systems Incorporated for more details.
PdfNoAccessibility Boolean R/W Prohibits text access for screen reader devices of the PDF file. This parameter is effective only when you specify PDF1.4 or later.
PdfNoAssembleDoc Boolean R/W Prohibits inserting, deleting and rotating the PDF pages. This parameter is effective only when you specify PDF1.4 or later for the PdfVersion.
PdfEmbedAllFontsEx Int32 R/W Specifies whether or not to embed all embeddable fonts in the PDF output file. However, even if embed all fonts is specified, fonts which restrict embedding or fonts are unable to be embedded to PDF will not be embedded.
0.Specified font
1.All fonts excluding Base14 font
2.All fonts including Base14 font
PdfEmbedFonts String R/W Embeds the specified font in the created PDF. To specify multiple fonts, put commas between each font.
PdfErrorOnEmbedFault Boolean R/W When true is specified, an error is issued when font embedding fails.
PdfErrorOnMissingGlyph Boolean R/W When true is specified, an error is issued when there is a missing glyph.
PdfPrintingAllowed Int32 R/W Specifies whether and how to permit printing of the PDF. This parameter is effective only when you specify PDF1.4 or later.
0.Not Allowed
1.Low Resolution Printing
2.High Resolution Printing
PdfImageCompression Int32 R/W When a color image format cannot be stored directly in the PDF, the image is stored after being transformed into a bitmap format which is compatible with PDF. Use one of the following values to specify the compression method of the data stored in a PDF file. When Auto is selected, the process is automatically done and creates the image data according to the setting of PdfJPEGQuality and PdfRasterizeResolution. Whichever has the smaller compressed size, JPEG or ZLIB, is selected. These are the settings for color images. Specify PdfGrayscaleImageCompression for grayscale images and PdfMonochromeImageCompression for monochrome images.
0.Auto
1.JPEG compression
2.ZLIB compression
3.JPEG2000 compression (it is effective only when PdfVersion is PDF1.5 or higher)
PdfJPEGQuality Int32 R/W With color image formats that cannot be stored directly in a PDF, if JPEG compression is specified for PdfImageCompression the image quality can be specified with a numeric value of 1-100. Higher values are proportional to increased image quality. However the file size also becomes larger. This is the setting for color images. PdfGrayscaleJPEGQuality can also be specified for grayscale images.
CAUTION: This is not for changing the quality of a JPEG formatted image.
PdfPutImageColorProfile Boolean R/W Specifies whether to embed the color profile (of the embedded color image) in the PDF.
PdfImageDownSampling Int32 R/W Specifies one of the following methods to downsample the raster color image in a PDF. When a value other than None is specified, an image that has a higher resolution than the PdfImageDownSamplingDPI will be downsampled to the resolution specified by PdfImageDownSamplingTarget. These are the settings for color images. Specify PdfGrayscaleImageDownSampling for grayscale images, and PdfMonochromeImageDownSampling for monochrome images.
0.None
1.Average
2.Bicubic
3.Subsampling
PdfImageDownSamplingTarget Int32 R/W Sets the target resolution when a raster color image is downsampled.
PdfImageDownSamplingDPI Int32 R/W Sets the resolution for the downsampled raster color image.
PdfGrayscaleImageCompression Int32 R/W When a grayscale image format cannot be stored directly in the PDF, the image is transformed into a bitmap format which is compatible with PDF. Use one of the following values to specify the compression method of the data stored in a PDF file. When Auto is selected, the process is automatically done and creates the image data according to the setting of PdfGrayscaleJPEGQuality and PdfRasterizeResolution. Whichever has the smaller compressed size, JPEG or ZLIB, is selected. These are the settings for grayscale images. Specify PdfImageCompression for color images, and PdfMonochromeImageCompression for monochrome images.
0.Auto
1.JPEG compression
2.ZLIB compression
3.JPEG2000 compression (it is effective only when PdfVersion is PDF1.5 or higher)
PdfGrayscaleJPEGQuality Int32 R/W For grayscale image formats that cannot be stored directly in the PDF, if JPEG compression is specified in PdfGrayscaleImageCompression the image quality can be specified by a numerical value of 1-100. Higher values are proportional to increased image quality, however the file size also becomes larger. Specify PdfJPEGQuality for color images.
CAUTION: This is not for changing the quality of a JPEG formatted image.
PdfGrayscaleImageDownSampling Int32 R/W Specifies one of the following methods to downsample raster grayscale images in a PDF. When a value other than None is specified, an image that has a higher resolution than the one specified in PdfGrayscaleImageDownSamplingDPI will be downsampled to the resolution specified by PdfGrayscaleImageDownSamplingTarget. These are the settings for grayscale images. Specify PdfImageDownSampling for color images, and PdfMonochromeImageDownSampling for monochrome images.
0.None
1.Average
2.Bicubic
3.Subsampling
PdfGrayscaleImageDownSamplingTarget Int32 R/W Sets the target resolution when a raster grayscale image is downsampled.
PdfGrayscaleImageDownSamplingDPI Int32 R/W Sets the resolution for raster grayscale image.
PdfMonochromeImageCompression Int32 R/W When monochrome image formats cannot be stored directly in the PDF, the image is transformed and stored in a bitmap format compatible with PDF. Use one of the following values to specify the compression method of data stored in a PDF file. These are the settings for monochrome images. Specify PdfGrayscaleImageCompression for grayscale images, and PdfImageCompression for color images.
0.CCITT Group4
1.CCITT Group3
2.Run Length compression
3.ZLIB compression
4.None
PdfMonochromeImageDownSampling Int32 R/W Specifies one of the following methods to downsample raster monochrome images in a PDF. When a value other than None is specified, an image that has a higher resolution than the one specified in PdfMonochromeImageDownSamplingDPI will be downsampled into the resolution specified by PdfMonochromeImageDownSamplingTarget. These are the settings for monochrome images. Specify PdfImageDownSampling for color images, and PdfGrayscaleImageDownSampling for grayscale images.
0.None
1.Average
2.Bicubic
3.Subsampling
PdfMonochromeImageDownSamplingTarget Int32 R/W Sets the target resolution when a raster monochrome image is downsampled.
PdfMonochromeImageDownSamplingDPI Int32 R/W Sets the resolution for the downsampled raster monochrome image.
PdfCompressContentStream Boolean R/W Specifies whether the text and line art in a PDF are compressed in order to reduce the size of PDF.
PdfUseLaunchForRelativeURI Boolean R/W Specifies whether external links specified by the relative address are transformed into 'Open the file' or into a 'World Wide Web link' in the PDF link properties. If the value is set as true, it becomes 'Open the file'. If the value is false, it becomes 'World Wide Web link'
PdfRGBConversion Int32 R/W Specifies how to convert the RGB color space (DeviceRGB) to DeviceGray.
0.No Conversion
1.Black to DeviceGray
2.Gray to DeviceGray
3.All RGB to DeviceGray
4.All RGB to CMYK
PdfRasterizeResolution Int32 R/W Specifies the rasterised-resolution value of the transformed raster images from 70 to 500(DPI). SVG, EMF and WMF are drawn in PDF as vectors without being changed to raster images.
PdfOutputScale String W Specifies the scaling ratio of the output PDF. A unit or % value can be specified.
PdfOutputHeight String R/W Scales the height of the output PDF. A unit or % value can be specified.
PdfOutputWidth String R/W Scales the width of the output PDF. A unit or % value can be specified.

Properties – SVG Settings

Name Type R/W Functions
SvgVersion Int32 R/W Specifies the SVG version:
0.SVG 1.1
1.SVG Basic
2.SVG Tiny
SvgImageProcessingType Int32 R/W Specifies how to treat images contained in the output SVG.
0.Embeds all image files.
1. Copies all image files to the destination specified by SvgImageCopyPath, and then links.
If this parameter is omitted, the default is 0 and all images are embedded.
SvgImageCopyPath String R/W Specifies the destination for the copied images if 1 is specified for SvgImageProcessingType.
SvgGzipCompression Boolean R/W Specifies whether to compress the outputted SVG into gzip format.
SvgSingleFile Boolean R/W Specifies whether a converted result composed of multiple pages is output as a single SVG file or as multiple SVG files. If the value is true, output is as a single SVG file. If the value is false, output is as multiple SVG files. When multiple files are output, the files are named as specified in SvgFormat. This takes effect only when outputting to a file and is not valid when output is without a file name such as when streaming.
SvgImageRename Boolean R/W When images are copied to the directory specified by SvgImageCopyPath etc., specifies whether to rename all file names to the prefix specified in SvgImagePrefix, or use the original name. When the file name is duplicated, a sequential number is added. When true is specified, all files are renamed.
SvgImagePrefix String R/W When images are copied to the directory specified by SvgImageCopyPath, specifies the prefix of the file name. The file name will be prefixed followed by a sequential numbers only if the Default is empty.
SvgSinglePageNumber Boolean R/W When SvgSingleFile=false is specified, specifies whether to add sequential number to the output SVG even if it has only one-page. If false it is not added to the output SVG.
SvgFormat String R/W When the original document has multiple pages and false is specified in SvgSingleFile, each page will be output as an SVG files that has a consecutive number at the end of the file name. This parameter specifies the format of those consecutive numbers. For example, when "document.svg" is specified as the name, by specifying "-01" for SvgFormat the output files will be document-01.svg, document-02.svg and so on. If this parameter is omitted, "1" is considered to have been specified.
SvgEmbedAllFonts Boolean R/W Specifies whether to embed fonts in the outputted SVG.
SvgEmbedFonts String R/W Embeds the specified font in the created SVG. place commas between fonts to specify multiple fonts.
SvgErrorOnEmbedFault Boolean R/W When true is specified, an error is issued when font embedding fails.
SvgImageConversion Int32 R/W Selects how to convert the images embedded in the output SVG to the following.
0.Auto
1.JPEG conversion
2.PNG conversion
3.All JPEG conversion
SvgJPEGQuality Int32 R/W For image formats which cannot be stored directly in SVG, if JPEG conversion is specified in SvgImageConversion, specifies the quality of the image from 1-100. Higher values are proportional to increased image quality, however the file size also increases. The initial value is set at 80.
SvgRasterizeResolution Int32 R/W Specifies the rasterized-resolution value of the raster image (Changed from a vector image) from 70 to 500(DPI). SVG, EMF and WMF are drawn in SVG as vectors without being changed to raster images.
SvgSingleFileMaxHeight Int32 R/W Specifies the maximum value of the height when assigning two or more pages to a single page when SvgSingleFile=true is specified. A unit must be assigned and specified. When SvgSingleFileMaxPages or SvgSingleFileMaxHeight is specified, (or both are specified), and the page exceeds either the maximum size (SvgSingleFileMaxHeight) or the maximum number of pages (SvgSingleFileMaxPages), Server Based Converter V2.0 will stop converting and abort the job as an  error. If this parameter is omitted, there is no limitation in the value of height.
SvgSingleFileMaxPages Int32 R/W Specifies the maximum number of pages outputted when SvgSingleFile=true is specified. If this parameter is omitted If this parameter is omitted, "5000" is considered as specified. When either SvgSingleFileMaxPages or SvgSingleFileMaxHeight is specified, or both are specified, and the page exceeds either the maximum size (SvgSingleFileMaxHeight) or the maximum number of pages (SvgSingleFileMaxPages), Server Based Converter V1.2 will stop converting and abort the job as an error.
SvgImageDownsamplingDPI Int32 R/W Specifies the resolution of the down sampling when embedding an image with 1 or more integers. When the resolution of the original image is lower than specification, it's embedded with the lower resolution.
SvgImageDownsamplingMethod Int32 R/W Specifies the method of compression when down sampled. If this parameter is omitted, "IMGDOWNSAMPLING_AVERAGE" is considered as specified.
1.biliner
2.bicubic
3.nearest neighbor

Properties – INX Settings

Name Type R/W Functions
InxOutputMode Int32 R/W Specifies the INX output mode.
0.Text area output mode
1.Line area output mode
2.Block area output mode

Properties – Flash Settings

Name Type R/W Functions
FlashPartiallyOutput Boolean R/W When an error occurs within the document, the flash file in process will be outputted.
FlashHidePageButton Boolean R/W The buttom to navigate to the previous/next page is not displayed when outputting the flash file.

Properties – Printer Settings

Name Type R/W Functions
PrnCopies Int32 R/W Specifies the number of copies when outputting to a printer. If nothing is specified, the value is considered as 1.
PrnCollate Boolean R/W Indicates collation of multiple copies when outputting to a printer. If it is not specified or the value 'false' is specified, the same page is multi-copied continuously. If 'true' is specified, the pages specified from start to end are printed repeatedly.
BatchPrint Boolean R/W When the value false is specified, the print dialog box is displayed when printing. If the setting is omitted or the value 'true' is specified, the print dialog is not displayed.
PrnFitPaper Boolean R/W It print at size of paper. Default is false.

Properties – Rasterize Settings

Name Type R/W Functions
RasterDPI Int32 R/W Specifies image size by a numerical value between 1-1,440 (DPI) when outputting raster inmage. In the windows version when the value of this parameter is outside the range or it is omitted, a DPI value based on the font size in the image is applied.
The maximum image size available to output depends on the Windows system resources such as free available memory, etc.
RasterScale String R/W When raster inmage are outputted, the reduction ratio is specified using a numerical value larger than 0 but equal to or less than 1. It can also be specified by % or px (pixel) value. When the value of this parameter is outside the range or it is omitted, the default is 1.
RasterHeight Int32 R/W Sets the maximum image height decided by RasterScale when outputting JPEG and PNG. "px" (pixel) is available as the unit.
RasterFormat String R/W Specifies the file naming format when outputtingraster inmage file.
RasterJpegQuality Int32 R/W Specifies the conversion accuracy using a value between 1-100(%). When this parameter is omitted, a value of 80% is used.
RasterUseGdiPlus Boolean R/W GdiPlus is used when the file is converted to raster inmage. This setting is effective only with Windows XP or later / Windows Server2003 or later.
RasterMonochrome Boolean R/W Specifies conversion to a monochrome image, when outputting raster inmage.

Properties – Smoothing Settings

Name Type R/W Functions
GdiTextAntialias Boolean R/W Performs the smoothing processing to text when true is specified.
GdiLineartSmoothing Boolean R/W Performs the smoothing processing to borders when true is specified.
GdiImageSmoothing Boolean R/W Performs the smoothing processing to images when true is specified.
These Properties is effective only with Windows XP or later / Windows Server 2003 or later.

Properties – Watermark-Text Settings

Name Type R/W Functions
WatermarkText String R/W Displays the specified watermark text on each page. Possible to make it multiple lines by delimiting with the line feed \n. This setting is invalid with the evaluation version.
WatermarkFontFamily String R/W Specifies the font family to the character string which you set to watermark-text.
WatermarkFontWeight String R/W Specifies the font weight to the character string which you set to watermark-text. Possible to specify normal, bold or the numerical value from 100 to 900.
WatermarkFontStyle String R/W Specifies the font style to the character string which you set to watermark-text.
WatermarkOpacity String R/W Specifies the opacity to the character string which you set to watermark-text.

Properties – Text Settings

Name Type R/W Functions
TextPaperWidth
TextPaperHeight
String R/W Specifies the paper size when text format is specified as the input data.
TextMarginLeft
TextMarginTop
TextMarginRight
TextMarginBottom
String R/W Specifies the margin size when text format is specified as the input data.
TextFontFamily String R/W Specifies the font family name for output when text format is specified as the input data.
TextFontSize String R/W Specifies the font size for output when the text format is specified as the input data.
TextShowPageNumber Boolean R/W Adds page numbers to the output when text format is specified as the input data.
TextShowLineNumber Boolean R/W Adds line numbers to the outputs when text format is specified as the input data.
TextLineNumberOffset String R/W When adding line numbers to the output, specifies the distance from the body text when text format is specified to as the input data.
TextLineNumberFormat String R/W Specifies the output line number format when text format is specified as the input data.
When the original file is small, the encoding cannot be recognized and the program may fail to read the file.

Values can be added using the following units.

Representation Meanings
cm centimeter
mm millimeter. 1 mm = 1/10 cm
in inch. 1 in = 2.54 cm
pt point. 1 pt = 1/72 in
pc pica. 1 pc = 12 pt
jpt 1 jpt = 0.3514 mm
q 1 q = 0.25 mm

Methods

DfvObj Class provides the following methods.

Name Return Value Arguments Functions
Dispose None None Releases the resource. Please be sure to call this method when you exit the object.
Execute None None Execute conversion and outputs to the destination specified in OutputFilePath or the printer specified in PrinterName.
Clear None None Initializes formatting engine.
GetFormattingError None Collections.ArrayList errlist After the conversion finishes, collects the error information and stores it as an argument in Collections.ArrayList provided the error is not an exit level (fatal)error. ErrorLevel, ErrorCode and ErrorMessage are the XfoErrorInformation classes reported.
GetOptionFileURI String Int32 index Gets the URL of the Option Setting File from the index you specified
AddOptionFileURI None String fileURI Adds the URL of the XML-based Option Setting File that indicates the options for Rainbow PDF Server Based Converter V3.0. The contents of the Option Setting File are evaluated and if new properties are set, the former setting will be overwritten.
Render None Stream inputStream
Stream outputStream
String outDevice

Programming Example

The following is a C# programming sample. In addition, [Install directory]/samples/dotnet includes some useful sample files for C# and VisualBasic.NET.

using System;

public class MainApp
{
    static public void Main()
    {
        DfvDotNetCtl.DfvObj obj = new DfvDotNetCtl.DfvObj();
        obj.DocumentURI = "c:\\temp\\test.ppt";
        obj.OutputFilePath = "c:\\temp\\test.pdf";
        obj.ExitLevel = 4;
        try
        {
            obj.Execute();
        }
        catch(XfoException e)
        {
            Console.WriteLine("ErrCode : " + e.ErrorCode + "\n" + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            obj.Dispose();
        }
    }
}