C# 如何在不更改元数据的情况下新建PDF?

C# 如何在不更改元数据的情况下新建PDF?,c#,pdf,pdf-generation,xsl-fo,apache-fop,C#,Pdf,Pdf Generation,Xsl Fo,Apache Fop,我有由ApacheFop1.0创建的原始PDF文件,其中包含由Apache添加的基本元数据(制作人,创建日期)。我正在编辑文件,出现了我不想要的其他元数据(修改日期和其他)。是否可以基于以无需编辑的方式编辑的文件创建新文件 <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c016 91.16361

我有由ApacheFop1.0创建的原始PDF文件,其中包含由Apache添加的基本元数据(制作人,创建日期)。我正在编辑文件,出现了我不想要的其他元数据(修改日期和其他)。是否可以基于以无需编辑的方式编辑的文件创建新文件

<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c016 91.163616, 2018/10/29-16:58:49        ">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
            xmlns:xmp="http://ns.adobe.com/xap/1.0/"
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <pdf:PDFVersion>1.4</pdf:PDFVersion>
         <pdf:Producer>Apache FOP Version 1.0</pdf:Producer>
         <xmp:CreateDate>2019-08-20T11:09:15+02:00</xmp:CreateDate>
         <xmp:CreatorTool>Apache FOP Version 1.0</xmp:CreatorTool>
         <xmp:MetadataDate>2019-08-20T11:09:15+02:00</xmp:MetadataDate>
         <dc:date>
            <rdf:Seq>
               <rdf:li>2019-08-20T11:09:15+02:00</rdf:li>
            </rdf:Seq>
         </dc:date>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>

1.4
Apache FOP 1.0版
2019-08-20T11:09:15+02:00
Apache FOP 1.0版
2019-08-20T11:09:15+02:00
2019-08-20T11:09:15+02:00
除了元数据之外,还可以通过删除notepad++中添加的行(我不想要),恢复原始版本。我尝试替换流,但失败了(编辑和新元数据添加到文件中,它们不会更改旧文本(增量更新?)。我希望编辑的文件看起来像ApacheFop1.0中的原始文件。我试图用Word2FO.XSL创建XSL-FO,但无法创建与原始文件外观相同的文件


我可以为C#使用窗口应用程序(Windows)、控制台、网站或其他东西,迄今为止我发现的一切要么效果不好,要么在我之后添加纪念品(水印、制作人变更、额外增量更新等)。

我们的DynamicPDF合并产品允许您合并PDF而不更改其内容。此外,还可以根据需要抑制XMP元数据或设置生产者。 下面是合并PDF、删除XMP元数据(使用MergeOptions类)和设置生产者的C#代码

MergeOptions options = new MergeOptions();
options.XmpMetadata = false;
MergeDocument document = new MergeDocument(@"Source PDF file path", options);
document.Producer = "My producer";
document.Draw(@"path to save the output PDF");
您可以在此处参考MergeOptions类的文档:

Nuget上提供了DynamicPDF合并产品的全功能评估版(包ID:ceTe.DynamicPDF.CoreSuite.NET):

更多信息和从我们网站下载的选项可在以下位置找到:

“在我之后添加纪念品(水印、更换生产商、额外的增量更新等)”-您通常通过购买相关产品的许可证来消除水印。