复制pdf并填充它,为本地服务器发布,MVC c#



我电脑上的这段代码运行得很好,但当我发布并将其推送到服务器时,它就不起作用了,我不知道为什么。有人能帮我吗?

[HttpGet]
public FileStreamResult Pdfs(int protokolID, string fajl)
{
string pathF = path + @"Formulari" + fajl;
string dime = exam[0].pID + "_" + exam[0].vlasnikImeIPreizme + "_" + exam[0].pacijentImeZ;
if (!System.IO.Directory.Exists(path + @"" + dime))
System.IO.Directory.CreateDirectory(path + @"" + dime);
string newfile = DateTime.Now.ToString("dd.MM.yyyy") + "_" + fajl;
string pathnew = path + @"" + dime + @"" + newfile;
if (String.Compare(fajl, "saglasnost za anesteziju.pdf") == 0)
{
SaglasnostZaAnesteziju(pathF, pathnew, exam[0]);
}
FileStream fs = new FileStream(pathnew, FileMode.Open, FileAccess.ReadWrite);
return File(fs, "application/pdf");
}

这是一个控制器。

我正在调用的函数。

public void SaglasnostZaAnesteziju (string pathF, string newfile, PacijentVlasnik pv)
{
PdfReader pdfReader = new PdfReader(pathF);
PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(newfile,                         FileMode.OpenOrCreate));
AcroFields fields = stamper.AcroFields;
fields.SetField("TextField1[0]", pv.vlasnikImeIPreizme);
fields.SetField("TextField1[1]", pv.vlasnikAdr);
fields.SetField("TextField1[2]", pv.vlasnikTel);
fields.SetField("TextField1[8]", pv.pacijentVrsta);
fields.SetField("TextField4[0]", pv.pacijentRasa);
fields.SetField("TextField1[9]", pv.pacijentPol);
fields.SetField("TextField1[3]", pv.pacijentImeZ);
fields.SetField("TextField1[5]", pv.pacijentDatumRodj.ToString("yyyy."));
fields.SetField("TextField1[4]", pv.pID);
stamper.Close();
}

所有路径和数据都是正确的。当我发布我的解决方案时,我不知道为什么它不起作用。

解决了它!

它只是缺少了一行功能:

public void SaglasnostZaAnesteziju (string pathF, string newfile, PacijentVlasnik pv)
{
var str = System.IO.File.CreateText(newfile);
str.Close();
System.IO.File.Copy(pathF, newfile, true);
PdfReader pdfReader = new PdfReader(pathF);
PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(newfile, FileMode.OpenOrCreate));
AcroFields fields = stamper.AcroFields;
fields.SetField("TextField1[0]", pv.vlasnikImeIPreizme);
fields.SetField("TextField1[1]", pv.vlasnikAdr);
fields.SetField("TextField1[2]", pv.vlasnikTel);
fields.SetField("TextField1[8]", pv.pacijentVrsta);
fields.SetField("TextField4[0]", pv.pacijentRasa);
fields.SetField("TextField1[9]", pv.pacijentPol);
fields.SetField("TextField1[3]", pv.pacijentImeZ);
fields.SetField("TextField1[5]", pv.pacijentDatumRodj);
fields.SetField("TextField1[4]", pv.brcip);
stamper.Close();
}

问题是:必须先创建该文件,然后才能进行复制。