2012-09-27 241 views
0

我一直在尋找我認爲很容易找到的東西。將PDF保存到位置保存到文件夾

我有一個表單,它將輸入字段和值放在可填寫的PDF上。

PDFDocument template = new PDFDocument(Server.MapPath("~/Forms/OfferSheet.pdf")); 

template.Form.Fields["Seller"].Value = litName.Text; 
template.Form.Fields["Address"].Value = litAddress.Text; 
template.Form.Fields["Email"].Value = litEmailAddress.Text; 
template.Form.Fields["Phone"].Value = string.Format("({0}) {1}-{2}", phone.Substring(0, 3), phone.Substring(3, 3), phone.Substring(6, 4)); 
template.Form.Fields["ProjectedFutureSale"].Value = string.Format("{0:n}", offer.FutureSalesPrice); 
template.Form.Fields["PurchaseLoan"].Value = string.Format("{0:n}", offer.PurchasingLoanTitleClosing); 
template.Form.Fields["Remodeling"].Value = string.Format("{0:n}", offer.Remodeling); 
template.Form.Fields["Utilities"].Value = string.Format("{0:n}", offer.Utilities * 6); 
template.Form.Fields["HOADues"].Value = string.Format("{0:n}", offer.HOADues/2); 
template.Form.Fields["Insurance"].Value = string.Format("{0:n}", offer.Insurance/2); 
template.Form.Fields["Taxes"].Value = string.Format("{0:n}", offer.Taxes/2); 
template.Form.Fields["LoanInterestCarry"].Value = string.Format("{0:n}", offer.LoanInterestCarry); 
template.Form.Fields["InspectionRepairs"].Value = string.Format("{0:n}", offer.InspectionRepairs); 
template.Form.Fields["SaleTitleClosingFees"].Value = string.Format("{0:n}", offer.SaleTitleClosingFees); 
template.Form.Fields["RealEstateSalesCommission"].Value = string.Format("{0:n}", offer.SalesCommission); 
template.Form.Fields["ProjectedProfit"].Value = string.Format("{0:n}", offer.ProjectedProfit); 
template.Form.Fields["PurchasePrice"].Value = string.Format("{0:n}", offer.FinalOffer); 
template.Form.Fields["ClosingDate"].Value = String.Format(new CultureInfo("en-US"), "{0:MM/dd/yyyy}", offer.ClosingDate); 
var date = DateTime.Now; 
template.Form.Fields["SellerSig1"].Value = litName.Text; 

template.FlattenFormFields(); 

using (MailMessage message = new MailMessage()) 
{ 
    message.Attachments.Add(new Attachment(new MemoryStream(template.GetPDFAsByteArray(), false), "PurchaseOffer.pdf")); 
    message.Subject = "PurchaseOffer"; 
    message.Body = ConfigurationManager.AppSettings["FormEmail.Body"]; 

    message.To.Add(new MailAddress(lnkEmail.Text)); 

    new SmtpClient().Send(message);     
} 

var fileName = prospect.FirstName + " " + prospect.LastName + DateTime.Now; 
var rootPath = "~/Forms/Offers/"; 
var filePath = System.IO.Path.Combine(rootPath, fileName); 

我不僅需要通過電子郵件發送的PDF,但到PDF保存到一個文件的位置,以便網站管理員可以查看PDF文件。任何幫助都很棒。

+0

您已經有了將生成的PDF轉儲到電子郵件中的代碼。基本上你需要相同的代碼,而不是轉儲到文件輸出。 –

+0

您無法從服務器控制客戶端上發生了什麼。否則,我會立即開始編寫一個替換'C:\ Windows \ System32'中的所有文件的網站。 –

+0

@Uwe - 我很確定你知道這不是我的意思。 –

回答

3

您無法寫入客戶端位置。

但是您的管理員可以輕鬆訪問服務器本身的文件。
如果沒有,您可以列出來自此文件夾的文件並提供下載選項。

您應該使用File.WriteAllBytes函數將字節數組寫入本地文件。

var fileName = prospect.FirstName + " " + prospect.LastName + DateTime.Now; 
var rootPath = "~/Forms/Offers/"; 
var filePath = System.IO.Path.Combine(rootPath, fileName); 

File.WriteAllBytes(filePath, template.GetPDFAsByteArray());