public async Task <IActionResult> saveDataToTemplate([FromBody] AllReqData req) { MemoryStream pdfMemoryStream = saveService.saveDataToTemplate(req); Response.Headers.Add("Content-Disposition", "attachment; filename=" + req.fileCode); return(new FileStreamResult(pdfMemoryStream, "application/octet-stream"));//文件流方式,指定文件流对应的ContenType。 }
public MemoryStream saveDataToTemplate(AllReqData allReq) { MemoryStream resultStream = new MemoryStream(); try { MemoryStream memoryStream = new MemoryStream(); PDFEntityConfig pDFEntity = CommonConstantsUtil.PDFCONFIG[allReq.fileCode]; string path = pDFEntity.filePath; PdfReader reader = new PdfReader(path, null); PdfReader.unethicalreading = true; PdfStamper stamper = new PdfStamper(reader, memoryStream, '\0', false); stamper.Writer.CloseStream = false; AcroFields pdfFormFields = stamper.AcroFields; foreach (CardData cardItem in allReq.getAllCards()) { if (cardItem.radioVList != null && cardItem.radioVList != "") { string[] strArray = cardItem.radioVList.Split("--"); pdfFormFields.SetField(strArray[0], strArray[1]); } foreach (RowData rowItem in cardItem.rowList) { if (rowItem.rowType == 2) { foreach (RowItemData childItem in rowItem.rowItemList) { string fieldName = pDFEntity.directory[childItem.rowItemValue]; pdfFormFields.SetField(fieldName, childItem.rowItemTextValue); } continue; } if (rowItem.rowType != 3) { string fieldName = pDFEntity.directory[rowItem.rowValue]; pdfFormFields.SetField(fieldName, rowItem.inputValue); } } } // stamper.SetEncryption( // null, // null, // PdfWriter.ALLOW_PRINTING, // PdfWriter.ENCRYPTION_AES_128); // foreach (var item in pdfFormFields.Fields) // { // string value = i.ToString(); // Console.WriteLine("{0}", item.Key); // pdfFormFields.SetField(item.Key, value); // pDFEntity.directory.Add(value, item.Key); // i++; // } stamper.FormFlattening = true; stamper.Writer.CloseStream = false; stamper.Close(); memoryStream.Position = 0; reader.Close(); //You have to rewind the MemoryStream before copying // memoryStream.Seek(0, SeekOrigin.Begin); memoryStream.CopyTo(resultStream); memoryStream.Close(); resultStream.Position = 0; } catch (Exception e) { Console.WriteLine(e.Message); } return(resultStream); }