2012-09-27 4 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());