只是在.pdfStamper上設置.FormFlattening還不夠...我使用了一個PdfReader,它帶有文件內容的字節數組,我用它來標記/壓扁數據以獲取要放入的字節數組新的PdfReader。以下是我如何做到的。現在效果很好。
private void AppendPdfFile(FileDTO file, PdfContentByte cb, iTextSharp.text.Document printDocument, PdfWriter iwriter)
{
var reader = new PdfReader(file.FileContents);
if (reader.AcroForm != null)
reader = new PdfReader(FlattenPdfFormToBytes(reader,file.FileID));
AppendFilePages(reader, printDocument, iwriter, cb);
}
private byte[] FlattenPdfFormToBytes(PdfReader reader, Guid fileID)
{
var memStream = new MemoryStream();
var stamper = new PdfStamper(reader, memStream) {FormFlattening = true};
stamper.Close();
return memStream.ToArray();
}
汪汪......你可能有問題存在。 – Jason 2009-12-21 20:27:39
這可能會幫助其他人,因爲我有一個問題,自由文本沒有被壓扁,其中iTextSharp有一個單獨的設置:'stamper.FreeTextFlattening = true;' – jtate 2016-08-19 17:44:35