iText C#:删除创建日期

时间:2018-04-12 09:09:25

标签: c# itext

是否可以修改/删除元数据中的创建日期?我正在寻找类似的事情:

Overwrite creationDate in pdf using iText and pdf writer

编辑:

我尝试过以下方法:

writer.Info.Remove(PdfName.CREATIONDATE);

writer.Info.Put(PdfName.CREATIONDATE, new PdfDate(new DateTime(2017, 01, 01)));

其中writerPdfWriter个对象。

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

我也无法分配ie writer.Info = info

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

我试着这样做:

var info = writer.Info;
stamper.MoreInfo = info

其中stamperPdfStamper

但这些类型是不兼容的,我认为这不会起作用。有谁知道删除/修改元数据的实际方法?

编辑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();
        }

现在,当我用文本编辑器打开文件时,会插入这一行(我需要它恒定/消失):

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

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

1 个答案:

答案 0 :(得分:0)

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

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