Selamlar...

Gene gerçek bir örnek üzerinden gidelim.
Edefter için Maliye'den paylaşılan stil dosyaları var. Ona uygun XML hazırlandığında uygun bir şekilde görüntülenmesini sağlıyor.
Bu XML dosyaları HTML biçiminde görüntüleniyor ama boyutları çok büyük olduğundan tarayıcıda açmakta sıkıntı yaşanıyor.
Oysa bu dosyaları PDF'ye çevirsek hem boyutu küçülüyor, hem de çok rahatlıkla görüntülenebiliyor.
Piyasada bunu yapan ücretli programlar var.
Peki ama bunu ücretsiz bir şekilde nasıl yaparız?
NReco.PdfGenerator diye bir DLL var ücretsiz. Ben bunu kullandım.
using NReco.PdfGenerator;
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using System.Xml.Xsl;
namespace Xml2Pdf
{
    public partial class Xml2Pdf : Form
    {
        public Xml2Pdf()
        {
            InitializeComponent();
        }
         
        private void btnXml2Pdf_Click(object sender, EventArgs e)
        {
            DirectoryInfo di = Directory.CreateDirectory("C:\\XmlPdf\\");
            string xsltYevmiye = "yevmiye.xslt";
            string xsltKebir = "kebir.xslt";
            string xsltBerat = "berat.xslt";
            string xsltAdres = "";
            lblBaslangicZamani2.Text = DateTime.Now.ToString("");
            dizinSecimDialog.SelectedPath = @"\\10.0.0.1\EDEFTER";
            DialogResult result = dizinSecimDialog.ShowDialog();
            if (result == DialogResult.OK)
            {
                string[] files = Directory.GetFiles(dizinSecimDialog.SelectedPath,
 "*.xml", SearchOption.AllDirectories);
                foreach (string file in files)
                {
                    string htmlDosyasi = di.FullName + 
Path.GetFileName(file).Replace(".xml", ".html");
                    string pdfDosyasi = di.FullName + 
Path.GetFileName(file).Replace(".xml", ".pdf");
                    if (file.IndexOf("-KB-") > 0)
                    {
                        xsltAdres = xsltBerat;
                    }
                    else if (file.IndexOf("-YB-") > 0)
                    {
                        xsltAdres = xsltBerat;
                    }
                    else if (file.IndexOf("-K-") > 0)
                    {
                        xsltAdres = xsltKebir;
                    }
                    else if (file.IndexOf("-Y-") > 0)
                    {
                        xsltAdres = xsltYevmiye;
                    }
                    else
                    {
                        throw new Exception("Tanımsız şema tipi:(" + file + ")");
                    }
                    pdfOlustur(xsltAdres, file, htmlDosyasi, pdfDosyasi);
                }
                MessageBox.Show("Pdf dosyaları " + di.FullName 
+ " dizini altında oluşturulmuştur.", "İşlem Başarılı", MessageBoxButtons.OK, 
MessageBoxIcon.Information);
                lblBitisZamani2.Text = DateTime.Now.ToString("");
            }
        }
        private void pdfOlustur(string xsltAdres, string file, 
string htmlDosyasi, string pdfDosyasi)
        {
            XslCompiledTransform xslt = new XslCompiledTransform();
            xslt.Load(Path.GetDirectoryName(file) + "\\" + xsltAdres);
            xslt.Transform(file, htmlDosyasi);
            HtmlToPdfConverter htmlToPdf = new HtmlToPdfConverter();
            htmlToPdf.GeneratePdfFromFile(htmlDosyasi, null, pdfDosyasi);
        }
    }
}


Saygılar...
# Kategoriler : C# Yazılım
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *