c# E-fatura görüntüleme aracı


c# ile hazırladığım basit bir e-fatura görüntüleme aracının kodlarını paylaşmak istedim.
GİB portaldan indirdiğiniz xml formatındaki faturayı HTML formatında görüntüleyip yazıcıdan çıktısını alabilirsiniz.
Umarım işinizi görür. Yorum ve görüşlerinizi paylaşırsanız dönüş yapmaya çalışırım.

Not: projede kullanılan general.xslt dosyasını ve gerekli kaynak kodu :

https://github.com/chnyksl/basics/raw/master/EFaturaGoruntuleyici.zip

adresinden indirebilirsiniz.






using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

namespace EFaturaGoruntuleyici
{
    public partial class FormMain : Form
    {
        Encoding en;
        string strXLST = "";
        private OpenFileDialog openFileDialog1;

        public FormMain()
        {
            InitializeComponent();
            openFileDialog1 = new OpenFileDialog();
            en = Encoding.UTF8;
            string startup_path = Application.StartupPath;
            string xlst_path = startup_path + "\\general.xslt";
            if (!File.Exists(xlst_path))
            {
                MessageBox.Show(xlst_path + " dosyası bulunamadı");
                return;
            }
            else
            {
                strXLST = File.ReadAllText(xlst_path, en);
            }
        }

        private void btnSelectFile_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    if (!openFileDialog1.FileName.ToLower().EndsWith(".xml"))
                    {
                        MessageBox.Show("sadece xml uzantılı dosyalar desteklenmektedir");
                        return;
                    }
                    var sr = new StreamReader(openFileDialog1.FileName);
                    txtFilePath.Text = openFileDialog1.FileName;
                    string strFaturaXML = sr.ReadToEnd();

                    string ErrMsg = "";
                    string strResult = Transform(strFaturaXML, strXLST, out ErrMsg);
                    
                    if (ErrMsg != "")
                        MessageBox.Show(ErrMsg);
                    else
                    {
                        webBrowser1.DocumentText = strResult;
                    }

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error message: " + ex.Message + Environment.NewLine + "Details:" + ex.StackTrace);
                }
            }
        }

        private void btnYazdir_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowPrintDialog();
        }


        private string Transform(string XMLPage, string XSLStylesheet, out string ErrorMessage)
        {

            string result = "";
            ErrorMessage = "";
            try
            {
                // Reading XML
                TextReader textReader1 = new StringReader(XMLPage);
                XmlTextReader xmlTextReader1 = new XmlTextReader(textReader1);
                XPathDocument xPathDocument = new XPathDocument(xmlTextReader1);

                //Reading XSLT
                TextReader textReader2 = new StringReader(XSLStylesheet);
                XmlTextReader xmlTextReader2 = new XmlTextReader(textReader2);

                //Define XslCompiledTransform
                XslCompiledTransform xslt = new XslCompiledTransform();
                xslt.Load(xmlTextReader2);


                StringBuilder sb = new StringBuilder();
                TextWriter tw = new StringWriter(sb);

                xslt.Transform(xPathDocument, null, tw);

                result = sb.ToString();
            }
            catch (Exception ex)
            {
                ErrorMessage = ex.Message;
            }
            return result;
        }

    }
}





Yorumlar

Selim dedi ki…
Merhaba, inanılmaz işime yaradı. Paylaşımınız için çok teşekkür ederim.
Adsız dedi ki…
eyw saol eline sağlık
netlogs dedi ki…
10 numara :) teşekkürler, emeğinize sağlık.
iair bender dedi ki…
helal birader . interneti dort dönüyorum bi allahın kulu bişey yazmamış.

bende ek bilgi
2021 haziranda tarinde zip > xml dosyası açtım içinde attachement olarak xslt gömmüşler view/görünütlümek için gereken dosya.

efatura da xml var xslt dosyası yok diye heycan yapmayın. içine bakın.

<attachment <embed object bi tag onun içinde .
Adsız dedi ki…
Selam,

e-irsaliye görüntüleme var mı?
Adsız dedi ki…
Merhaba , ben bu xml seki herhangi bir childnode içindeki innertext i nasıl okurum ?
z dedi ki…
Teşekkür ederim.
Sağlıkla kalın, çok kullanışlı araç.
harun dedi ki…
tarayıcı iexplorer yerine başka tarayıcı nasıl seçebilirim iexplorer bazı xslt leri düzgün açmıyor