PDF.sharp."nullReferenceException."

LERXX.

新成员
加入
2019年1月19日
消息
4
编程经验
1-3
你好,

我有问题是我的代码(使用pdfsharp)是一个"nullReferenceException." at the point
outputdocument.addpage(页面);
我不知道为什么。您可以在以下重要事项中找到我的代码片段:
C#:
public static void CreatePDFx(string path)
        {
                 // Files beinhaltet alle Dateien pro Patientenordner (Bezeichnungen) 

                string[] files = GetFiles(path);

                // Open the output document
                PdfDocument outputDocument = new PdfDocument();
                int numberOfDocs = 0;
                // Iterate files
                foreach (string file in files)
                {
                    // Open the document to import pages from it.
                    PdfDocument inputDocument = PdfReader.Open(file, PdfDocumentOpenMode.Import);
                    // Iterate pages
                    int count = inputDocument.PageCount;
                    for (int idx = 0; idx < count; idx++)
                    {
                        // Get the page from the external document...
                        PdfPage page = inputDocument.Pages[idx];
                        // ...and add it to the output document.
                        outputdocument.addpage(页面);
                    }
                }
}

 public static void StartWatchers()
        {
            List<FileSystemWatcher> watchers = new List<FileSystemWatcher>();
            string[] ward_folders = Directory.GetDirectories(@"C:\OfflineDocuments\");
            watchers.Add(MyWatcherFatory(@"C:\OfflineDocuments\"));
            //Fehlerhaft
            int j = 0;
            foreach (string ward_folder in ward_folders)
            {
                
                j++;
          
                string[] pat_folders = Directory.GetDirectories(ward_folder);
                int i = 0;
                
                foreach (string pat_folder in pat_folders)
                {
                    
                    CreatePDFx(pat_folder);
                    i++;
                }
                foreach (FileSystemWatcher watcher in watchers)
                {
                    watcher.EnableRaisingEvents = true; ;
                    i++;
                }
        
            }
        }

提前致谢!
 
Last edited:

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,731
地点
悉尼,澳大利亚
编程经验
10+
在该行上放置一个断点,并确认'OutputDocument'不是null。你可能应该为'页面'做同样的事情。如果两个都没有空,请查看异常的堆栈跟踪,以便准确查看其实际抛出的位置。
 

LERXX.

新成员
加入
2019年1月19日
消息
4
编程经验
1-3
堆栈跟踪显示以下内容:

pdfsharp.dll!pdfsharp.pdf.pdfdocument.catalog.get()zeile 793 c#
PDF.sharp.dll!pdfsharp.pdf.pdfdocument.addpage(pdfsharp.pdf.pdfpage页面)zeile 829 c#
combine_rescue_pdf.exe!combine_rescue_pdf.combinepdf.createpdfx(string path)zeile 162 c#
combine_rescue_pdf.exe!combine_rescue_pdf.combinepdf.startwatchers()zeile 244 c#
combine_rescue_pdf.exe!combine_rescue_pdf.combinepdf.onstart(string [] args)zeile 307 c#

将在函数目录中抛出异常(来自PDFSharp):


PDFSharp的以下功能调用目录:
/// <summary>
///将指定的页面添加到此文档中。如果页面来自外部文档,
///它导入到本文档。在这种情况下,返回的页面不一样
///对象作为指定的对象。
/// </summary>
public pdfpage addpage(pdfpage页面)
{
if (!CanModify)
抛出新的InvalidOperationException(pssr.cannotmodify);
返回catalog.pages.add(页面);
}

///<summary>
///获取当前文档的pdfcatalog。
/// </summary>
内部pdfcatalog目录
{
得到{return _catalog ?? (_catalog = _trailer.root); }
}
pdfcatalog _catalog; //一旦创建时,永远不会更改

你有什么想法,我能做什么?
 

LERXX.

新成员
加入
2019年1月19日
消息
4
编程经验
1-3
那是一个好主意!我培养了它,可悲的是,它会带到同样的例外..这是这个简单的程序:
using PdfSharp.Drawing;
namespace PdfSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a new PDF document
            PdfSharp.Pdf.PdfDocument document = new PdfSharp.Pdf.PdfDocument();
            // Create an empty page
            PdfSharp.Pdf.PdfPage page = document.AddPage();
            // Save the document...
            string filename = "HelloWorld.pdf";
            document.Save(filename);
            // ...and start a viewer.
            //Process.Start(filename);
        }
    }
}

你有什么想法,我做错了什么? :/ 提前致谢。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,731
地点
悉尼,澳大利亚
编程经验
10+
我从来没有用过那个PDFSharp组件,很少与PDF一起工作,所以我不确定问题可能是什么,但我正在研究该目录属性,看看它是什么以及如何初始化它的表现以及如何初始化它。基于代码,似乎“_trailer”字段必须为null,因此您需要了解为什么是为什么。
 

LERXX.

新成员
加入
2019年1月19日
消息
4
编程经验
1-3
我从来没有用过那个PDFSharp组件,很少与PDF一起工作,所以我不确定问题可能是什么,但我正在研究该目录属性,看看它是什么以及如何初始化它的表现以及如何初始化它。基于代码,似乎“_trailer”字段必须为null,因此您需要了解为什么是为什么。

嗨jmplhinney,

感谢您的回复!我通过创建一个新的pdfsharp.dll来解决问题。你的想法"trailer"把我带到了线程: //stackoverflow.com/questions...when-adding-password-to-pdf/38593235#38593235 但已经包括在内。但是现在创建一个新的dll它是有效的。

祝你周末愉快!
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,160
地点
挪威
编程经验
10+
当我上次使用pdfsharp时,我刚刚使用nuget包管理器添加了包(在工具菜单i vs下),无需获取源代码并使用该源代码并自己构建库。
 
最佳 底部