Zum Inhalt springen

C#/ .Net Erste Anwendung


Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo zusammen, ich habe neu mit dem c# Programmieren angefangen. Ich hab mich an einem Projekt versucht, bei dem ich bestimmte Dateien und Bilder aus der Datenbank hole und in einem bestimmten Ordner auf dem Desktop speichere. Bisher kriege ich es hin, die Bilder die gespeichert wurden zu einem PDF zu konvertieren. Ich möchte jetzt eine neue Funktion schreiben, bei der ich die Dateien die kein Bild ist als leeres PDF mit einer Notiz zu speichern. Das funktioniert nicht so richtig, kann mir da jemand weiterhelfen?

 

 public void AttachFileToPdfSite(string srcFileName, string dstFilename, string originFileName)
        {
			Rectangle pageSize = null;
			 using (var ms = new MemoryStream())
            {
                var document = new Document(pageSize, 0f, 0f, 0f, 0f);
                PdfWriter.GetInstance(document, ms).SetFullCompression();
                document.Open();
                document.Add(new Paragraph("Hello World"));
                document.Close();
                File.WriteAllBytes(dstFilename, ms.ToArray());
            }
}

 

Zitat

 

namespace summit.Tools.ReportInPdf.Cmd2
{
    internal  class Program
    {

        public static List<Msg> mWorkingListOfMessages;
        public static string mWorkingLogTextFileName;
        public static string mWorkingLogJsonFileName;
        public static string mWorkingGuid;

        public static void Main()
        {

            mWorkingListOfMessages = new List<Msg>();
            mWorkingGuid = Guid.NewGuid().ToString();

            PdfConverter localPdfWorker = null;

            AddMsg("Start");

            mWorkingLogTextFileName = GetLogFilePath(".log");
            mWorkingLogJsonFileName = GetLogFilePath(".json");

            try
            {
                AddMsg("PdfConverter wird initialisiert");
                localPdfWorker = new PdfConverter(41);
            }
            catch (Exception ex)
            {
                AddMsg(ex);
            }

            if (localPdfWorker != null)
            {
                AddMsg("PdfConverter wurde erfolgreich initialisiert!");
                localPdfWorker.MessageCreated += RemoteMessageCreated;

                try
                {
                    AddMsg("PdfConverter liest Daten");
                    localPdfWorker.ReadData();
                }
                catch (Exception ex)
                {
                    AddMsg(ex);
                }

                if (localPdfWorker.ListOfFiles != null)
                {
                    foreach (var oFile in localPdfWorker.ListOfFiles)
                        AddMsg($"{oFile.ID.ToString("000000")} {oFile.NewFileName}");


                    localPdfWorker.WriteSingleFiles();
                    byte[] localMergedBytes = null;
                    var localPdfBytes = new List<byte[]>();
                    byte[] localPdfData = null;
                    
                    

                    foreach (var oFile in (from oPdfFile in localPdfWorker.ListOfFiles
                                 where System.IO.File.Exists(oPdfFile.SysFileInfo.FullName)
                                 select oPdfFile).ToList())
                    {

                        try
                        {
                            localPdfData = System.IO.File.ReadAllBytes(oFile.SysFileInfo.FullName);
                        }
                        catch (Exception ex)
                        {
                            AddMsg($"{ex.Message}{Environment.NewLine}");
                            localPdfData = null;
                        }

                        if (localPdfData != null)
                        {
                            localPdfBytes.Add(localPdfData);
                        }

                        if (localPdfBytes != null)
                        {
                            try
                            {
                                localMergedBytes = localPdfWorker.MergeFiles(localPdfBytes);
                            }
                            catch (Exception ex)
                            {
                                AddMsg($"{ex.Message}{Environment.NewLine}");
                                localMergedBytes = null;
                            }
                        }
                    }

                    if (localMergedBytes != null)
                    {
                        try
                        { 
                           System.IO.File.WriteAllBytes(System.IO.Path.Combine(localPdfWorker.Config.ExportPath, "gesamt.pdf"), localMergedBytes);
                        }
                        catch (Exception ex)
                        {
                            AddMsg($"{ex.Message}{Environment.NewLine}");
                        }
                    }

                    if (System.IO.File.Exists(System.IO.Path.Combine(localPdfWorker.Config.ExportPath, "gesamt.pdf")))
                    {
                        foreach (var  oFile in (from oPdfFile in localPdfWorker.ListOfFiles
                                     where System.IO.File.Exists(oPdfFile.SysFileInfo.FullName)
                                     select oPdfFile).ToList())
                        {
                            if (System.IO.File.Exists(System.IO.Path.Combine(oFile.SysFileInfo.FullName )))
                            {
                                try
                                {
                                    System.IO.File.Delete(oFile.SysFileInfo.FullName );
                                    AddMsg($"The File: {oFile.SysFileInfo.FullName } is deleted!");
                                }
                                catch (Exception e)
                                {
                                    AddMsg(e);
                                }
                            }
                        }
                    }
                    if (System.IO.File.Exists(System.IO.Path.Combine(localPdfWorker.Config.ExportPath, "gesamt.pdf")))
                    {
                        try
                        {

                          localPdfWorker.CmdtoReport(41);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                            throw;
                        }
                    }  

                }

            }

            else
            {
                AddMsg("PdfConverter konnte nicht initialisiert werden!");
            }




            if (mWorkingListOfMessages != null && mWorkingListOfMessages.Count > 0)
            {
                try
                {
                    System.IO.File.WriteAllText(mWorkingLogJsonFileName, 				Newtonsoft.Json.JsonConvert.SerializeObject(mWorkingListOfMessages));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }        
 }

 

Ich hoffe die Codestücke reichen zum helfen.

Vielen Dank!

Zitat

foreach (var oFile in (from oPdfFile in localPdfWorker.ListOfFiles where System.IO.File.Exists(oPdfFile.SysFileInfo.FullName) select oPdfFile).ToList()) {

Hier läuft der auf ein Fehler:"der objektverweis wurde nicht auf eine objektinstanz festgelegt".

Bearbeitet von Ts61
Geschrieben

Das bedeutet, dass irgendwas null ist. Dann musst du mal schauen, was da null ist.

Da der Code nicht gut strukturiert ist (und auch gegen law of demeter verletzt), kann man es jetzt schlecht sagen, was null sein könnte. Es kann sein, dass localPdfWorker.ListOfFiles oder oPdfFile.SysFileInfo null ist.
 

 

Geschrieben
vor 14 Stunden schrieb Whiz-zarD:

Es kann sein, dass localPdfWorker.ListOfFiles null ist.

Ne, denke ich nicht.

Es fehlt Code, der zeigt, wie die Objekte, die in ListOfFiles gehalten werden, initialisiert werden.

Geschrieben
Zitat

oPdfFile.SysFileInfo

Es kann nur das sein, denn localPdfWorker.ListOfFiles hat ja einen Nullcheck oben und wenn es "null" wäre, dann würde es eine Argumentnull-Ausnahme anstatt Objektverweis-Ausnahme produzieren.

Bedeutet in der localPdfWorker. ListOfFiles gibt es Elemente, deren Eigenschaft SysFileInfo null ist, also keine FileInfo-Objekte enthalten.

Geschrieben (bearbeitet)
 public void AttachFileToPdfSite(string srcFileName, string dstFilename, string originFileName)
        {
            var pageSize = new Rectangle(PageSize.A4);

            using (var ms = new MemoryStream())
            {       
                var document = new Document(pageSize, 0f, 0f, 0f, 0f);
                PdfWriter.GetInstance(document, ms).SetFullCompression();
                string originFilename = Path.GetFileName(originFileName);
                document.Open();
                document.Add(new Paragraph("This File could not be open "));
                document.AddHeader("This is the Header of the File", "ASD");
                PdfWriter writer;
                writer = PdfWriter.GetInstance(document,new FileStream(dstFilename,FileMode.Open));
                PdfFileSpecification pfs = PdfFileSpecification.FileEmbedded(writer, Path.Combine(dstFilename,originFileName), originFileName, null);
                writer.AddFileAttachment(pfs);
                document.Close();
                File.WriteAllBytes(Path.Combine(dstFilename,originFilename + ".pdf"), ms.ToArray());
            }
        }

Ich versuche eine Datei in ein Pdf einzubetten, leider kriege ich den Fehler "der zugriff auf den Pfad " " wurde verweigert.

Kann mir da einer helfen?

Vielen Dank im Voraus.

Bearbeitet von Ts61
Geschrieben (bearbeitet)
vor 11 Stunden schrieb Ts61:

Ich versuche eine Datei in ein Pdf einzubetten, leider kriege ich den Fehler "der zugriff auf den Pfad " " wurde verweigert.

Gibt es den Pfad überhaupt? (Ich nehme zumindest an, dass er nicht leer ist und du ihn nicht hier reinkopiert hast.)

Bearbeitet von Whiz-zarD

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...