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
对象
但是,这会创建对象的副本(aPdfDictionary
),并且不会修改我正在创建的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')>>