是否可以修改/删除元数据中的创建日期?我正在寻找类似的事情:
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)));
其中writer
是PdfWriter
个对象。
但是,这会创建对象的副本(PdfDictionary
)并且不会修改我正在创建的PDF。
我也无法分配ie 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();
}
现在,当我用文本编辑器打开文件时,会插入这一行(我需要它恒定/消失):
<</Producer(iTextSharp’ 5.5.12 ©2000-2017 iText Group NV \(AGPL-version\))/CreationDate(D:20180412155130+01'00')/ModDate(D:20180412155130+01'00')>>
我们需要删除/设置日期的原因是我们正在获取文件的MD5哈希值。每次生成新文档时,该行都会更改,从而导致不同的MD5哈希值。
答案 0 :(得分:0)
当我试图为生成的文件获得一个常量的MD5校验和时,我还必须设置ID常量,如mkl所述。
我的解决方案是搜索生成的字节数组(即创建的PDF),并手动将值设置为常量。文本是ASCII字符。我完全从PDF中删除了/ CreationDate和/ ModifiedDated,并将生成的ID设置为一个恒定的任意值。