nasrin55
یک شنبه 05 شهریور 1391, 09:20 صبح
سلام
من می خواستم اطلاعاتی را از پایگاه داده ام بگیرم و به فرمت pdf نشون بدم.
اطلاعات ساده ای رو که می نویسم ، به pdf تبدیل می کنه اما وقتی اطلاعات htmlیم رو می گیرم که توش جدول هم داره ، حروف فارسی رو خراب می کنه. (حروف از هم جدا میشه و چپ به راست میشه).
مشکل به خاطر وجود جدوله؟؟؟ از گرید هم استفاده نکردم، این جداول در زمان اجرا ساخته میشه. راهی هست که بشه پی دی اف این جداول رو ساخت؟
کدهایی که نوشتم ....
using System.Diagnostics;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.html;
using iTextSharp.text.html. simpleparser;
using iTextSharp.text.pdf;
namespace HtmlToPdf
{
class Program
{
static void Main(string[] args)
{
using (var pdfDoc = new Document(PageSize.A4))
{
PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create));
pdfDoc.Open();
//روش صحيح تعريف فونت
FontFactory.Register("c:\\windows\\fonts\\tahoma.ttf");
StyleSheet styles = new StyleSheet();
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FONTFAMILY, "tahoma");
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, "Identity-H");
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ALIGN, HtmlTags.ALIGN_LEFT);
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.TEXTALIGN, "right");
styles.LoadTagStyle("span", "dir", "rtl");
styles.LoadTagStyle(HtmlTags.BODY , "float", "right");
// styles.LoadTagStyle(HtmlTags.BODY, HtmlTags., "right");
var html = @"<table>
<tr>
<td>
</td>
<td>
محمد </td>
</tr>
<tr>
<td>
مینا</td>
<td>
</td>
</tr> </table>";
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(html), styles);
PdfPCell pdfCell = new PdfPCell { Border = 0 };
pdfCell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
foreach (var htmlElement in parsedHtmlElements)
{
pdfCell.AddElement(htmlElement);
}
var table1 = new PdfPTable(1);
table1.WidthPercentage = 100;
table1.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
table1.AddCell(pdfCell);
pdfDoc.Add(table1);
}
//open the final file with adobe reader for instance.
Process.Start("Test.pdf");
}
}
}
من می خواستم اطلاعاتی را از پایگاه داده ام بگیرم و به فرمت pdf نشون بدم.
اطلاعات ساده ای رو که می نویسم ، به pdf تبدیل می کنه اما وقتی اطلاعات htmlیم رو می گیرم که توش جدول هم داره ، حروف فارسی رو خراب می کنه. (حروف از هم جدا میشه و چپ به راست میشه).
مشکل به خاطر وجود جدوله؟؟؟ از گرید هم استفاده نکردم، این جداول در زمان اجرا ساخته میشه. راهی هست که بشه پی دی اف این جداول رو ساخت؟
کدهایی که نوشتم ....
using System.Diagnostics;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.html;
using iTextSharp.text.html. simpleparser;
using iTextSharp.text.pdf;
namespace HtmlToPdf
{
class Program
{
static void Main(string[] args)
{
using (var pdfDoc = new Document(PageSize.A4))
{
PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create));
pdfDoc.Open();
//روش صحيح تعريف فونت
FontFactory.Register("c:\\windows\\fonts\\tahoma.ttf");
StyleSheet styles = new StyleSheet();
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FONTFAMILY, "tahoma");
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, "Identity-H");
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ALIGN, HtmlTags.ALIGN_LEFT);
styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.TEXTALIGN, "right");
styles.LoadTagStyle("span", "dir", "rtl");
styles.LoadTagStyle(HtmlTags.BODY , "float", "right");
// styles.LoadTagStyle(HtmlTags.BODY, HtmlTags., "right");
var html = @"<table>
<tr>
<td>
</td>
<td>
محمد </td>
</tr>
<tr>
<td>
مینا</td>
<td>
</td>
</tr> </table>";
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(html), styles);
PdfPCell pdfCell = new PdfPCell { Border = 0 };
pdfCell.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
foreach (var htmlElement in parsedHtmlElements)
{
pdfCell.AddElement(htmlElement);
}
var table1 = new PdfPTable(1);
table1.WidthPercentage = 100;
table1.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
table1.AddCell(pdfCell);
pdfDoc.Add(table1);
}
//open the final file with adobe reader for instance.
Process.Start("Test.pdf");
}
}
}