C# – Word-Excel-Images to PDF

Word ve Excel dosyalarını PDF formatına çevirmek için aşağıdaki uygulamayı kullanabilirsininiz.

Derleyebilmeniz için,

Microsoft Save as PDF Add-in for the 2007 Office release

eklentisini kurmanız gerekiyor.

Not: Aşağıdaki kodlar ile; Localhost test de sorun yaşamıyor IIS üzerinden girişte proplem oluyorsa, sistemi aşağıdaki şekilde yapılandırmalısınız.

Çalıştır -> DCOMCNFG -> Companents Service -> My Computer -> DCOM Config -> Microsft Excel Application -> Sağ tık -> Properties -> Identity -> The İneractive User seçilmelidir.
Benzer İşlemin Microsoft Office Word içinde tekrarlanması gerekir.
(Sorun yaşarsanız web config de imporsonate kullanıp user ve pass belirtip  dcom da  Identity tabında da bu kullanıyı belirtirseniz sorun kalmayacaktır.)

 

//Default.aspx.cs
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string kokdizin = @"D:\Applications\Fax\temp";
        Library.SendFileToClient(Page, Library.DocToPDF(Library.Upload(file1, kokdizin)), "pdf");
    }
}

 

//Library.cs

using System.Collections.Generic;
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data;
using System.Text;
using Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.Excel;
using iTextSharp;
using System.Data.OleDb;
using DevExpress.Web.ASPxGridView;

public class Library
{
   public static string DocToPDF(string dosyayolu)
    {
        string pdfyolu = "";
        if (dosyayolu.Contains(".doc"))
        {
            pdfyolu = dosyayolu.Replace("docx", "pdf").Replace("doc", "pdf");
            Library.Word2PDF(dosyayolu, dosyayolu.Replace("docx", "pdf").Replace("doc", "pdf"));
        }
        else if (dosyayolu.Contains(".xls"))
        {
            pdfyolu = dosyayolu.Replace("xlsx", "pdf").Replace("xls", "pdf");
            Library.Excel2PDF(dosyayolu, pdfyolu);
        }
        else if (dosyayolu.Contains(".jpg") || dosyayolu.Contains(".bmp") || dosyayolu.Contains(".png") )
        {
            pdfyolu = dosyayolu.Replace("jpg", "pdf").Replace("bmp", "pdf").Replace("png", "pdf");
            Library.IMAGE2PDF(dosyayolu, pdfyolu);
        }
        return pdfyolu;
    }

   public static void Word2PDF(object Source, object Target)
   {
           object Unknown = Type.Missing;
           object missing = Type.Missing;
           object isVisible = Type.Missing;
           object isReadonly = Type.Missing;
           //Word Uygulaması tanımla
           Microsoft.Office.Interop.Word.ApplicationClass MSdoc=null;
           if (MSdoc == null) MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass();
        try
         {
           MSdoc.Visible = false;
           //Aç
           Microsoft.Office.Interop.Word.Document oDoc = MSdoc.Documents.Open(ref Source, ref isReadonly, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown,
           ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref isVisible, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
           MSdoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize;
           if (oDoc != null)
           {   //Kaydet
               object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;
               oDoc.SaveAs(ref Target, ref format, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown,
               ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
           }
      }
       catch 
       {
            //Çıkış
            MSdoc.Quit(ref Unknown, ref Unknown, ref Unknown);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(MSdoc);
       } 
       finally 
       { 
           //Çıkış
            MSdoc.Quit(ref Unknown, ref Unknown, ref Unknown);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(MSdoc);
       }
   }

   public static void Excel2PDF(string Source, string Target)
   {
       Microsoft.Office.Interop.Excel.ApplicationClass excelApplication = new Microsoft.Office.Interop.Excel.ApplicationClass();
       Workbook excelWorkBook = null;
       //
       string paramSourceBookPath = Source; object paramMissing = Type.Missing;
       //
       string paramExportFilePath = Target;
       XlFixedFormatType paramExportFormat = XlFixedFormatType.xlTypePDF;
       XlFixedFormatQuality paramExportQuality = XlFixedFormatQuality.xlQualityStandard;
       bool paramOpenAfterPublish = false; bool paramIncludeDocProps = true; bool paramIgnorePrintAreas = true;
       object paramFromPage = Type.Missing; object paramToPage = Type.Missing;
       try
       {
           excelWorkBook = excelApplication.Workbooks.Open(paramSourceBookPath,
           paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing,
           paramMissing, paramMissing, paramMissing, paramMissing, paramMissing, paramMissing);
           if (excelWorkBook != null) excelWorkBook.ExportAsFixedFormat(paramExportFormat, paramExportFilePath, paramExportQuality,
          paramIncludeDocProps, paramIgnorePrintAreas, paramFromPage, paramToPage, paramOpenAfterPublish, paramMissing);
       }
       catch { }
       finally
       {
           if (excelWorkBook != null) { excelWorkBook.Close(false, paramMissing, paramMissing); excelWorkBook = null; }
           if (excelApplication != null) { excelApplication.Quit(); excelApplication = null; }
           GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers();
       }  
   }

   public static void IMAGE2PDF(string Source, string Target)
   {
       iTextSharp.text.Document document = new iTextSharp.text.Document();
       using (var stream = new FileStream(Target, FileMode.Create, FileAccess.Write, FileShare.None))
       {
           iTextSharp.text.pdf.PdfWriter.GetInstance(document, stream);
           document.Open();
           using (var imageStream = new FileStream(Source, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
           {
               var image = iTextSharp.text.Image.GetInstance(imageStream);
               document.Add(image);
           }
           document.Close();
       }
   }

   public static string Upload(FileUpload gozatadi, string anadizin)
   {
       gozatadi.SaveAs(anadizin + "\\" + Path.GetFileName(gozatadi.FileName));
       return anadizin + "\\"+ Path.GetFileName(gozatadi.FileName);
    }

   public static void SendFileToClient(System.Web.UI.Page sayfa, string path, string tur)
    {
        byte[] content;System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open);
        try
        { content = new byte[fs.Length]; fs.Read(content, 0, content.Length); }  finally   {fs.Close();  }
        sayfa.Response.Clear();sayfa.Response.ClearHeaders(); sayfa.Response.ClearContent();
        sayfa.Response.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-9");
        sayfa.Response.ContentType = "application/" + tur;
        sayfa.Response.Charset = "windows-1254";
        sayfa.Response.AddHeader("Content-Length", content.Length.ToString());
        sayfa.Response.AddHeader("content-disposition", "attachment; filename=\"" + sayfa.Server.UrlPathEncode(System.IO.Path.GetFileName(path)) + "\"");
        sayfa.Response.BinaryWrite(content);
        sayfa.Response.Flush();
        sayfa.Response.End();
    }
}

Oracle – Tablespace Free Space

SELECT tablespace_name, sum ( blocks ) as free_blk , trunc ( sum ( bytes ) /
(1024*1024) ) as free_m
, max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks
FROM dba_free_space
GROUP BY tablespace_name

SQL JOIN

SQL Server için, Inner Join, Left Join, Right Join, Full Outer Join
kullanımını tek bir image ile özetleyecek olursak;

SQL JOIN

Web uygulamalarında Türkçe karakter sorunu

Web uygulamalarında, geliştirme yaptığınız bilgisayarınızda türkçe karakterleri düzgün görüyorsanız,
fakat uygulamayı sunucuya publish ettiğinizde türkçe karakterlerde bozulma oluşuyorsa
sorun büyük ihtimalle sunucunun dil ayarlarından kaynaklanıyordur.

Sunucunun dil ayarları ile uğraşmak yerine, web.config dosyasında yapacağınız küçük bir değişiklik ile,
bu sorunun üstesinden gelebilirsiniz.

Yapılması gereken, System.Web node’ u içerisine;

   

tagını eklemek.

C# – Mobil girişleri yönlendirme

 
private static readonly Regex MobileRegex = new Regex(@"(nokia|sonyericsson|blackberry|IPHONE|samsung|sec-|windows ce|motorola|mot-|up.b|midp-)", RegexOptions.IgnoreCase | RegexOptions.Compiled);

public bool IsMobile
{
	get
	{
		HttpRequest r = HttpContext.Current.Request;
		if (r.Browser.IsMobileDevice)
			return true;
		if (!string.IsNullOrEmpty(r.UserAgent) && MobileRegex.IsMatch(r.UserAgent))
			return true;
		return false;
	}
}

protected void Page_Load(object sender, EventArgs e)
{
	if (IsMobile) Response.RedirectPermanent("Mobile.aspx", true);
}


C# – SQL Server Column listesini Datatable olarak alma

    

 
public static DataTable GetDatabaseTableColumns(string sConnection, string sDatabase, string sTableName)
        {
            SqlConnection connection = null;
            DataTable dt = null;

            try
            {
                connection = GetConnection(sConnection, sDatabase);
                if (connection == null)
                    return dt;

                SqlParameter[] sqlParms = new SqlParameter[] { new SqlParameter("@table_name", sTableName) };
                DataSet dset = SqlHelper.ExecuteDataset(connection, "sp_columns", sqlParms);

                if ((dset != null) && (dset.Tables.Count > 0))
                    dt = dset.Tables[0];
            }
            catch (Exception ex)
            {
                throw new Exception("GetDatabaseTableColumns error: " + ex.Message);
            }
            finally
            {
                if (connection != null)
                {
                    connection.Close();
                    connection.Dispose();
                }
            }

            return dt;
        }

C# – SQL Server Table listesini Datatable olarak alma

       public static DataTable GetDatabaseTables(string sConnection, string sDatabase)
        {
            SqlConnection connection = null;
            DataTable dt = null;
            try
            {
                connection = GetConnection(sConnection, sDatabase);
                if (connection == null)
                    return dt;
                SqlCommand cmd = new SqlCommand("sp_tables", connection);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@table_type", "'TABLE'");

                DataSet dset = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dset);
                if ((dset != null) && (dset.Tables.Count > 0))
                    dt = dset.Tables[0];
            }
            catch (Exception ex)
            {
                throw new Exception("GetDatabaseTables error: " + ex.Message);
            }
            finally
            {
                if (connection != null)
                {
                    connection.Close();
                    connection.Dispose();
                }
            }
            return dt;
        }

C# – SQL Server Database listesini Datatable olarak alma

       public static DataTable GetDatabases(string sConnection)
        {
            SqlConnection connection = null;
            DataTable dt = null;
            try
            {
                connection = GetConnection(sConnection, string.Empty);
                if (connection == null)
                    return dt;
                string sDbCommand = "SELECT name AS DATABASE_NAME, 0 AS DATABASE_SIZE, NULL AS REMARKS FROM master.dbo.sysdatabases WHERE HAS_DBACCESS(name) = 1  ORDER BY name";
                DataSet dset = SqlHelper.ExecuteDataset(connection, CommandType.Text, sDbCommand);
                if ((dset != null) && (dset.Tables.Count > 0))
                    dt = dset.Tables[0];
            }
            catch (Exception ex)
            {
                throw new Exception("GetDatabases error: " + ex.Message);
            }
            finally
            {
                if (connection != null)
                {
                    connection.Close();
                    connection.Dispose();
                }
            }
            return dt;
        }

SQL Server 2011 Denali Kurulum Yenilikleri

SQL Server’ın kod adı “Denali” olan yeni sürümü ile gelen kurulum değişikleri aşağıdaki gibidir.

SQL Server Multi-Subnet Clustering

Denali ile Farklı alt ağlarda kümelenmiş düğümleri kullanarak SQL Server failover cluster yapılandırabilirsiniz.

 

 SQL Server Multi-Subnet Clustering

Kurulum gereksinimleri

SQL Server Denali kurulum için, Power Shell 2.0, .NET 3.5 SP1 ve .NET 4.0 paketlerine ihtiyaç duyar.

Bunlardan .NET 4.0 haricindeki gereksinimler kurulum paketi tarafından yüklenecektir.
.NET 3.5 SP1 sürümü Vista ve Server 2008 de gerekli olmaktadır.

Windows 7 SP1 ve Windows Server 2008 SP1 de dahili olarak bulunan Microsoft .NET Framework 4 ü aşağıdaki linkten yükleyebilirsiniz;
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en