Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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.

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.

  • Autor
 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

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.