有没有办法使用 itext7 和 C# 获取 PdfDocument 对象的完整路径(甚至只是文件名)?

Is there a way to get the full path (or even just the file name) of a PdfDocument object using itext7 and C#?

我有一个 PdfDocument 对象列表,这些对象是按页码从一个大型原始 PDF 文件中拆分出来的(原始文件中的每一页对应一个文档)。

我只想迭代那些文档

foreach (PdfDocument doc in splitDocuments)

并获取每个文件的 path/doc 名称,但我无法找到 属性 来提供基本信息。我需要根据文件中的一些信息将文件复制到不同的位置,但到目前为止我还无法获取文件路径。

感谢您的帮助!

通常 PdfDocument.

没有唯一的文件名

首先回想一下,PdfDocument 可以基于 PdfReaderPdfWriterPdfReader / PdfWriter 对创建。 reader 和编写器都可能是基于文件的。因此,通常不清楚“the”文件名的含义,可能有两个。但是两者也有可能是基于一个非文件对象,那就没有文件名了。

如果 PdfWriter 是基于文件的,您可以从基础 FileStream 中确定关联的文件名,对于 PdfDocument doc

doc.GetWriter().GetOutputStream()

对于 PdfReader 等价物并不容易(如果可能的话):根据使用的选项,文件可能已被读入字节数组,然后被遗忘。但即便如此,即如果 reader 仍然基于文件流,则它隐藏在两层或三层 internalprivate 信息之下。使用反射,您可以处理这些层,但这当然不适用于生产目的。

您还提到那些 PdfDocument 对象是从一个大型原始 PDF 中拆分出来的。如果通过 PdfSplitter 实用程序 class 发生这种情况,则这些文档没有 PdfReader 开头。