iText C#:删除创建日期

iText C#:删除创建日期,c#,itext,C#,Itext,是否可以修改/删除元数据中的创建日期?我希望做类似的事情: 编辑: 我尝试过以下方法: writer.Info.Remove(PdfName.CREATIONDATE); 或 其中writer是PdfWriter对象 但是,这会创建对象的副本(aPdfDictionary),并且不会修改我正在创建的PDF 我也无法分配,即writer.Info=Info 我试着遵循Java文章中给出的建议 我试着这样做: var info = writer.Info; stamper.MoreInfo =

是否可以修改/删除元数据中的创建日期?我希望做类似的事情:

编辑:

我尝试过以下方法:

writer.Info.Remove(PdfName.CREATIONDATE);

其中
writer
PdfWriter
对象

但是,这会创建对象的副本(a
PdfDictionary
),并且不会修改我正在创建的PDF

我也无法分配,即
writer.Info=Info

我试着遵循Java文章中给出的建议

我试着这样做:

var info = writer.Info;
stamper.MoreInfo = info
其中,
stamper
是一个
PdfStamper

但是这些类型是不兼容的,我认为这是行不通的。有人知道删除/修改元数据的实际方法吗

编辑2: 这是代码,我正在从现有的PDF创建一个新文件

var filename = @"C:\Users\Someone\Documents\aPdf.pdf";
        using( var output = new MemoryStream() )
        {
            Document document = new Document();
            PdfCopy writer = new PdfCopy( document, output );
            writer.CloseStream = false;

            document.Open();

            //read in PDF
            PdfReader reader = new PdfReader(filename);
            reader.ConsolidateNamedDestinations();

            PdfImportedPage page = writer.GetImportedPage(reader, 1);
            writer.AddPage(page);

            reader.Close();

            writer.Close();
            document.Close();

            return output.ToArray();
        }
现在,当我用文本编辑器打开文件时,插入这一行(我需要它保持不变/消失):



我们需要删除/设置日期的原因是我们正在获取文件的MD5散列。每次生成新文档时,该行都会发生变化,导致不同的MD5哈希。

当我试图为生成的文件获取一个常量MD5校验和时,我还必须设置ID常量,正如mkl所述


我的解决方案是搜索生成的字节数组(即创建的PDF),并手动将值设置为常量。文本为ASCII字符。我完全从PDF中删除了/CreationDate和/ModifiedDate,并将生成的ID设置为一个常量任意值。

是的,通常您可以完全删除所有元数据,但它仍然是一个有效文件。这就是为什么它被称为meta-data。链接副本的可能副本是java,但它在C中应该非常类似,
PdfDocument
内部类
PdfInfo
明确地阻止更改Producer和CreationDate值。你可以试着用反射来绕过这个问题。我也确实需要这种东西,我已经根据减少
/CreationDate
/ModDate
/ID
的想法制作了definifiivepdf.cs
var filename = @"C:\Users\Someone\Documents\aPdf.pdf";
        using( var output = new MemoryStream() )
        {
            Document document = new Document();
            PdfCopy writer = new PdfCopy( document, output );
            writer.CloseStream = false;

            document.Open();

            //read in PDF
            PdfReader reader = new PdfReader(filename);
            reader.ConsolidateNamedDestinations();

            PdfImportedPage page = writer.GetImportedPage(reader, 1);
            writer.AddPage(page);

            reader.Close();

            writer.Close();
            document.Close();

            return output.ToArray();
        }
<</Producer(iTextSharp’ 5.5.12 ©2000-2017 iText Group NV \(AGPL-version\))/CreationDate(D:20180412155130+01'00')/ModDate(D:20180412155130+01'00')>>