我正在与更大的开发人员社区联系,以寻求帮助以了解真正的原因并可能找到解决方法。我向 Aspose 提出了问题,他们还在他们的系统中跟踪了这个问题 (PDFNET-42880)。我认为他们不会很快对此进行调查,因为这是非常具体的情况。现在我在这里发布此消息以询问有关以下内容的更多详细信息:
Adobe“另存为”与 Foxit Reader“另存为”与 Windows Reader“另存为”功能有何区别?
Adobe 产品的问题并不那么明显。我什至不知道该问什么:D
链接到他们的(Aspose)旧论坛:https ://www.aspose.com/community/forums/thread/845549/removing-stamps-fails-after-saving-stamped-file-from-adobe-acrobat.aspx
案例: 使用 OpenOffice(版本 3.4.0)创建带有表单的 PDF,使用 Aspose PDF 标记,使用 Adobe Reader DC(或 Adobe Acrobat XI)打开,填充,保存为新文件。现在这个新文件很好,但是当我尝试使用 Aspose 删除图章(稍后用新图章替换)时,事情变得有趣了。
我测试过的文件:https ://1drv.ms/f/s!Auvpijam7a73iDzOqc6wZPuY9l81
- Stamp_Location.png
- OoPdfFormExample_WithStamp.pdf
- OoPdfFormExample_WithStamp_StampRemoved.pdf
- OoPdfFormExample_WithStamp_SavedFromFoxit.pdf
- OoPdfFormExample_WithStamp_SavedFromFoxit_StampRemoved.pdf
- OoPdfFormExample_WithStamp_SavedFromWindowsReader.pdf
- OoPdfFormExample_WithStamp_SavedFromWindowsReader_StampRemoved.pdf
- OoPdfFormExample_WithStamp_SavedFromAdobeReader.pdf
- OoPdfFormExample_WithStamp_SavedFromAcrobat_StampRemoved.pdf
用于删除标记的 C# 代码:
/// <summary>
/// Removes stamps from PDF file.
/// </summary>
/// <param name="pdfFile"></param>
private static void RemoveStamps( string pdfFile )
{
// Create PDF content editor.
Aspose.Pdf.Facades.PdfContentEditor contentEditor = new Aspose.Pdf.Facades.PdfContentEditor();
// Open the temp file.
contentEditor.BindPdf( pdfFile );
// Process all pages.
foreach ( Page page in contentEditor.Document.Pages )
{
// Get the stamp infos.
Aspose.Pdf.Facades.StampInfo[] stampInfos = contentEditor.GetStamps( page.Number );
//Process all stamp infos
foreach ( Aspose.Pdf.Facades.StampInfo stampInfo in stampInfos )
{
// Use try catch so we can output possible error w/out break point.
try
{
contentEditor.DeleteStampById( stampInfo.StampId );
}
catch ( Exception e )
{
Console.WriteLine( e );
}
}
}
// Save changes to the temp file.
contentEditor.Save( StampRemovedPdfFile );
}
使用 Adobe:删除图章的过程可以正常工作,但尝试打开文件最终会遇到文件问题。
“此页面存在错误。Acrobat 可能无法正确显示该页面。请与创建 PDF 文档的人员联系以更正问题。”
编辑:在进行更多测试之后,只需将文件打开到 Aspose,并在不修改的情况下保存它,这并没有破坏文件,只有在使用 Aspose 方法删除印章后,它才会被破坏。
使用 Foxit:唯一的区别是打开文件到 Foxit Reader 并在那里保存表格。印章被删除,文件很好,适用于任何 PDF 阅读器。
使用 Windows (10) Reader:唯一的区别是打开文件到 Windows Reader 并从那里保存。印章被删除,文件很好,适用于任何 PDF 阅读器。