PDA

View Full Version : سوال: خطا در تبدیل html به pdf با کمک ItextSharp



bftarane
پنج شنبه 10 بهمن 1392, 09:22 صبح
سلام من لینک زیر رو تست کردم
http://www.dotnettips.info/post/615/
ولی در خط

PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create));
خطای زیر رو میده
access to the path 'C:/Program Files (x86)/Common Files/Microsoft Shared/DevServer/10.0/Test.pdf' is denied. itextc#
دلیل این خطا چیه؟

anubis_ir
پنج شنبه 10 بهمن 1392, 09:46 صبح
در file stream خودتون مسير رو ذكر نكرديد به همين جهت از مسير وب سرور شروع شده در Program Files. اين مسير بايد دسترسي write داشته باشد تا كار كند.

bftarane
پنج شنبه 10 بهمن 1392, 10:14 صبح
http://support.microsoft.com/kb/318425
در لینک بالا کدهای زیر رو نوشته


strdocPath = "C:\\DocumentDirectory\\" + docname; FileStream objfilestream =new FileStream(strdocPath,FileMode.Create,FileAccess.R eadWrite);
یعنی باید به صورت فیزیکی آدرس دهی کنم؟
راهی نداره فیزیکی آدرس دهی نکنیم؟

anubis_ir
پنج شنبه 10 بهمن 1392, 10:20 صبح
زمانيكه مسير را ذكر نكنيد از محل آغاز فايل اجرايي برنامه مسير دهي مي‌شود. برنامه‌ي شما يك وب برنامه‌ي وب است، يعني از مسير نصب آن؛ نه از ريشه سايت.
براي مسير دهي از ريشه سايت بايد از متد Server.MapPath استفاده كنيد. (بهتره در يك پوشه باشه و همچنين اين پوشه بايد دسترسي رايت داشته باشه. كاربر ASP.NET بايد بتونه در اون فايل ايجاد كنه. دقيقا مثل نكات آپلود فايل هست در ASP.NET)

bftarane
پنج شنبه 10 بهمن 1392, 10:34 صبح
متوجه منظورتون شدم ولی من به اون حالت استفاده نکردم یه وب سایت در Asp.net ایجاد کردم و این کدها رو نوشتم

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Diagnostics;

using System.IO;

using iTextSharp.text;

using iTextSharp.text.html.simpleparser;

using iTextSharp.text.pdf;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
using (var pdfDoc = new Document(PageSize.A4))

{

PdfWriter.GetInstance(pdfDoc, new FileStream("~/test/Test.pdf", FileMode.Create));

pdfDoc.Open();



var html = @"<span style='color:blue'><b>Testing</b></span>

<i>iTextSharp's</i> <u>HTML to PDF capabilities</u>";

var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(html), null);



foreach (var htmlElement in parsedHtmlElements)

{

pdfDoc.Add(htmlElement);

}

}



//open the final file with adobe reader for instance.

Process.Start("Test.pdf");

}
}
ممنون. می رم با Server.mappathامتحان می کنم و نتیجه رو می گم.

bftarane
پنج شنبه 10 بهمن 1392, 10:38 صبح
بله درست شد متشکرم.