26 Temmuz 2011 Salı

Itextsharp File Attachment Event

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTextSharp.text.pdf;
using iTextSharp.text;
using iTextSharp.text.xml;
using iTextSharp.text.pdf.events;
using System.IO;

public class FileAttachmentEvent : PdfPCellEventForwarder
    {
        protected PdfWriter writer;
        protected PdfFileSpecification fs;
        protected String description;

        public FileAttachmentEvent(PdfWriter Writer, PdfFileSpecification Fs, String Description)
        {
            this.writer = Writer;
            this.fs = Fs;
            this.description = Description;
        }

        public void cellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases)
        {
            try
            {
                PdfAnnotation annonation = PdfAnnotation.CreateFileAttachment(writer, new Rectangle(position.GetLeft(20f), position.GetTop(15f),
                    position.GetLeft(5f), position.GetTop(5f)), description, fs);
                annonation.Name = description;
                writer.AddAnnotation(annonation);
            }
            catch (IOException)
            {
                throw;
            }
        }
    }

Compress JSON Decompress JSON

using System.Text;
using System.IO;
using System.IO.Compression;

  public static void CompressJson(string json, string path)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(json);

            using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
            {
                using (GZipStream gzs = new GZipStream(fs, CompressionMode.Compress))
                {
                    gzs.Write(bytes, 0, bytes.Length);
                }
            }
        }
 
 public static string DecompressJson(string path)
        {
            using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                using (GZipStream gzs = new GZipStream(fs, CompressionMode.Decompress))
                {
                    return gzs.GetString(Encoding.UTF8);
                }
            }
        }

TripleDES Encryption Methods

TripleDES de şifreleme ve deşifreleme yapmak için yazmış olduğum method...

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;


public static class TripleDESEncryption
    {
        public static string Encrypt(string Input, string Key)
        {
            if (string.IsNullOrEmpty(Input) || string.IsNullOrEmpty(Key))
            {
                throw new ArgumentNullException("The input/key string can not be empty.");
            }
            ASCIIEncoding Encoding = new ASCIIEncoding();
            byte[] Hash = Encoding.GetBytes(Key);
            byte[] KeyArray = new byte[24];
            byte[] Key2Array = new byte[8];
            for (int x = 0; x < 24; ++x)
            {
                KeyArray[x] = Hash[x];
            }
            for (int x = 0; x < 8; ++x)
            {
                Key2Array[x] = Hash[x + 8];
            }
            byte[] Text = null;
            TripleDESCryptoServiceProvider Encryptor = new TripleDESCryptoServiceProvider();
            using (MemoryStream Stream = new MemoryStream())
            {
                using (CryptoStream DESStream = new CryptoStream(Stream, Encryptor.CreateEncryptor(KeyArray, Key2Array), CryptoStreamMode.Write))
                {
                    using (StreamWriter Writer = new StreamWriter(DESStream))
                    {
                        Writer.Write(Input);
                        Writer.Flush();
                        DESStream.FlushFinalBlock();
                        Writer.Flush();
                        Text = Stream.GetBuffer();
                    }
                }
            }
            Encryptor.Clear();
            return Convert.ToBase64String(Text, 0, (int)Text.Length);
        }
 

        public static string Decrypt(string Input, string Key)
        {
            if (string.IsNullOrEmpty(Input) || string.IsNullOrEmpty(Key))
            {
                throw new ArgumentNullException("The input/key string can not be empty.");
            }
            ASCIIEncoding Encoding = new ASCIIEncoding();
            byte[] Hash = Encoding.GetBytes(Key);
            byte[] KeyArray = new byte[24];
            byte[] Key2Array = new byte[8];
            for (int x = 0; x < 24; ++x)
            {
                KeyArray[x] = Hash[x];
            }
            for (int x = 0; x < 8; ++x)
            {
                Key2Array[x] = Hash[x + 8];
            }
            string Text = "";
            TripleDESCryptoServiceProvider Decryptor = new TripleDESCryptoServiceProvider();
            using (MemoryStream Stream = new MemoryStream(Convert.FromBase64String(Input)))
            {
                using (CryptoStream DESStream = new CryptoStream(Stream, Decryptor.CreateDecryptor(KeyArray, Key2Array), CryptoStreamMode.Read))
                {
                    using (StreamReader Reader = new StreamReader(DESStream))
                    {
                        Text = Reader.ReadToEnd();
                    }
                }
            }
            Decryptor.Clear();
            return Text;
        }
    }

21 Temmuz 2011 Perşembe

Convert String to 64bit Integer

static Int64 GetInt64HashCode(string strText)
{
    Int64 hashCode = 0;
    if (!string.IsNullOrEmpty(strText))
    {
          byte[] byteContents = Encoding.Unicode.GetBytes(strText);
        System.Security.Cryptography.SHA256 hash = 
  new System.Security.Cryptography.SHA256CryptoServiceProvider();
        byte[] hashText = hash.ComputeHash(byteContents);
        Int64 hashCodeStart = BitConverter.ToInt64(hashText, 0);
        Int64 hashCodeMedium = BitConverter.ToInt64(hashText, 8);
        Int64 hashCodeEnd = BitConverter.ToInt64(hashText, 24);
        hashCode = hashCodeStart ^ hashCodeMedium ^ hashCodeEnd;
    }
    return (hashCode);
}        

Itextsharp swf view methods

Itextsharp dll i kullanarak oluşturduğumuz pdf te istenilen swf dosyaları oynatmak için yazmış olduğum method örneği

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTextSharp.text.pdf;
using iTextSharp.text;
using iTextSharp.text.xml;
using System.IO;
using System.Xml;
using iTextSharp.text.pdf.codec;
using iTextSharp.text.pdf.parser;
using iTextSharp.text.pdf.richmedia;

public void PdfFlash(string file)
        {
            string day = DateTime.Now.ToString("dd/MM/yyyy");

            Document document = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(file, FileMode.Create));
            writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_7);
            writer.AddDeveloperExtension(PdfDeveloperExtension.ADOBE_1_7_EXTENSIONLEVEL3);

            document.Open();

            RichMediaAnnotation richMedia = new RichMediaAnnotation(writer, new Rectangle(36, 400, 559, 806));
            PdfFileSpecification fs = PdfFileSpecification.FileEmbedded(writer, @"C:\1.swf", "1.swf", null);
            PdfIndirectReference asset = richMedia.AddAsset("1.swf", fs);
            RichMediaConfiguration configuration = new RichMediaConfiguration(PdfName.FLASH);
            RichMediaInstance instance = new RichMediaInstance(PdfName.FLASH);
            RichMediaParams flashVars = new RichMediaParams();
            String vars = day;
            flashVars.FlashVars = vars;
            instance.Params = flashVars;
            instance.Asset = asset;
            configuration.AddInstance(instance);
            PdfIndirectReference configurationRef = richMedia.AddConfiguration(configuration);
            RichMediaActivation activation = new RichMediaActivation();
            activation.Configuration = configurationRef;
            richMedia.Activation = activation;
            PdfAnnotation richMediaAnnotation = richMedia.CreateAnnotation();
            richMediaAnnotation.Flags = PdfAnnotation.FLAGS_PRINT;
            writer.AddAnnotation(richMediaAnnotation);
            document.Close();
        }

Rijndael Extensions Methods

Rijndael şifreleme tekniniğinin kullanımı için extensions method haline getirilmiş hali...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace EncryptionExtensions
{
    public class EncryptionExtensions
    {
        private byte[] Encrypt(byte[] inputData, byte[] pwd, byte[] value)
        {

            MemoryStream stream = new MemoryStream();

            Rijndael rij = Rijndael.Create();
            rij.Key = pwd;
            rij.IV = value;
            CryptoStream cStream = new CryptoStream(stream, rij.CreateEncryptor(), CryptoStreamMode.Write);

            cStream.Write(inputData, 0, inputData.Length);
            cStream.Close();
            byte[] encryptedData = stream.ToArray();
            return encryptedData;
        }

        public string Encrypt(string inputData, string pwd, int bits)
        {
            byte[] Bytes = System.Text.Encoding.Unicode.GetBytes(inputData);
            PasswordDeriveBytes pwdBytes = new PasswordDeriveBytes(pwd, new byte[] { 0x10, 0x40, 0x00, 0x34, 0x1A, 0x70, 0x01, 0x34, 0x56, 0xFF, 0x99, 0x77, 0x4C, 0x22, 0x49 });

            if (bits == 128)
            {
                byte[] encryptedData = Encrypt(Bytes, pwdBytes.GetBytes(16), pwdBytes.GetBytes(16));
                return Convert.ToBase64String(encryptedData);
            }
            else if (bits == 192)
            {
                byte[] encryptedData = Encrypt(Bytes, pwdBytes.GetBytes(24), pwdBytes.GetBytes(16));
                return Convert.ToBase64String(encryptedData);
            }
            else if (bits == 256)
            {
                byte[] encryptedData = Encrypt(Bytes, pwdBytes.GetBytes(32), pwdBytes.GetBytes(16));
                return Convert.ToBase64String(encryptedData);
            }
            else
            {
                // append all bits
                return string.Concat(bits);
            }
        }

        private byte[] Decrypt(byte[] outputData, byte[] pwd, byte[] value)
        {

            MemoryStream stream = new MemoryStream();
            Rijndael rij = Rijndael.Create();
            rij.Key = pwd;
            rij.IV = value;
            CryptoStream cStream = new CryptoStream(stream, rij.CreateDecryptor(), CryptoStreamMode.Write);
            cStream.Write(outputData, 0, outputData.Length);
            cStream.Close();
            byte[] decryptedData = stream.ToArray();
            return decryptedData;
        }

        public string Decrypt(string str, string pwd, int bits)
        {
            byte[] Bytes = Convert.FromBase64String(str);
            PasswordDeriveBytes pwdBytes = new PasswordDeriveBytes(pwd,
              new byte[] { 0x10, 0x40, 0x00, 0x34, 0x1A, 0x70, 0x01, 0x34, 0x56, 0xFF, 0x99, 0x77, 0x4C, 0x22, 0x49 });

            if (bits == 128)
            {
                byte[] decryptedData = Decrypt(Bytes, pwdBytes.GetBytes(16), pwdBytes.GetBytes(16));
                return System.Text.Encoding.Unicode.GetString(decryptedData);
            }
            else if (bits == 192)
            {
                byte[] decryptedData = Decrypt(Bytes, pwdBytes.GetBytes(24), pwdBytes.GetBytes(16));
                return System.Text.Encoding.Unicode.GetString(decryptedData);
            }
            else if (bits == 256)
            {
                byte[] decryptedData = Decrypt(Bytes, pwdBytes.GetBytes(32), pwdBytes.GetBytes(16));
                return System.Text.Encoding.Unicode.GetString(decryptedData);
            }
            else
            {
                return string.Concat(bits);
            }
        }
    }
}

Windows Service Extensions Methods

Windows service lerinde yaptığımız işlemleri extensions method halinde yazdım iyi günlerde kullanmanız dileğiyle...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceProcess;

namespace DefaultExtensions
{
    public class WindowsServices
    {
        #region Start Service

        public static void StartService(string serviceName, int timeoutMilliseconds)
        {
            ServiceController service = new ServiceController(serviceName);
            try
            {
                TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

                service.Start();
                service.WaitForStatus(ServiceControllerStatus.Running, timeout);
            }
            catch
            {
               
                throw;
            }
        }

        #endregion

        #region Shutdown Service

        public static void ShutdownService(string serviceName, int timeoutMilliseconds)
        {
            ServiceController service = new ServiceController(serviceName);
            try
            {
                TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

                service.Close();
                service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
            }
            catch (Exception)
            {
               
                throw;
            }
        }

        #endregion

        #region Stop Service

        public static void StopService(string serviceName, int timeoutMilliseconds)
        {
            ServiceController service = new ServiceController(serviceName);
            try
            {
                TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

                service.Stop();
                service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
            }
            catch
            {
               
                throw;
            }
        }

        #endregion

        #region Restart Service

        public static void RestartService(string serviceName, int timeoutMilliseconds)
        {
            ServiceController service = new ServiceController(serviceName);
            try
            {
                int millisec1= Environment.TickCount;
                TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

                service.Stop();
                service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);

                int millisec2 = Environment.TickCount;
                timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2 - millisec1));

                service.Start();
                service.WaitForStatus(ServiceControllerStatus.Running, timeout);
            }
            catch
            {
               
                throw;
            }
        }

        #endregion

        #region Get List of Windows Services

        public static bool IsServiceInstalled(string serviceName)
        {
            ServiceController[] services = ServiceController.GetServices();

            foreach (ServiceController service in services)
            {
                if (service.ServiceName == serviceName)
                    return true;
            }
            return false;
        }

        #endregion
    }
}

5 Temmuz 2011 Salı

Itextsharp'da 3d işlemleri

u3d dosya türlerini itextsharp kütüphanesini kullanarak açmamıza yarayan yazmış olduğum bir class güle güle kullanmanız dileğiyle.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTextSharp.text.pdf;
using iTextSharp.text;
using System.IO;

public void ThreeDPdf(string filePath, string Files3D)
        {
            Document doc = new Document();

            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(filePath,FileMode.Create));

            doc.Open();

            Rectangle rect = new Rectangle(100, 400, 500, 800);
            rect.Border = Rectangle.BOX;
            rect.BorderWidth = 0.5F;
            rect.BorderColor = new BaseColor(0xFF, 0x00, 0x00);
            doc.Add(rect);

            PdfStream stream3D = new PdfStream(new FileStream(Files3D, FileMode.Open), writer);
            stream3D.Put(PdfName.TYPE, new PdfName("3D"));
            stream3D.Put(PdfName.SUBTYPE, new PdfName("U3D"));
            stream3D.FlateCompress();
            PdfIndirectObject streamObject = writer.AddToBody(stream3D);
            stream3D.WriteLength();

            PdfDictionary dict3D = new PdfDictionary();
            dict3D.Put(PdfName.TYPE, new PdfName("3DView"));
            dict3D.Put(new PdfName("XN"), new PdfString("Default"));
            dict3D.Put(new PdfName("IN"), new PdfString("Unnamed"));
            dict3D.Put(new PdfName("MS"), PdfName.M);
            dict3D.Put(new PdfName("C2W"),
                new PdfArray(new float[] { 1, 0, 0, 0, 0, -1, 0, 1, 0, 3, -235, 28 }));
            dict3D.Put(PdfName.CO, new PdfNumber(235));

            PdfIndirectObject dictObject = writer.AddToBody(dict3D);

            PdfAnnotation annot = new PdfAnnotation(writer, rect);
            annot.Put(PdfName.CONTENTS, new PdfString("3D Model"));
            annot.Put(PdfName.SUBTYPE, new PdfName("3D"));
            annot.Put(PdfName.TYPE, PdfName.ANNOT);
            annot.Put(new PdfName("3DD"), streamObject.IndirectReference);
            annot.Put(new PdfName("3DV"), dictObject.IndirectReference);
            PdfAppearance ap = writer.DirectContent.CreateAppearance(rect.Width, rect.Height);
            annot.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, ap);
            annot.SetPage();

            writer.AddAnnotation(annot);
            // step 5
            doc.Close();
        }

Kullanımı :
Pdf3D pdf3d = new Pdf3D();
pdf3d.ThreeDPdf("C:\\3d.pdf", "c:\\teapot.u3d");