PDA

View Full Version : سوال: تولید فایل پی دی اف جدید از پی دی اف جاری توسط iTextSharp و اسخراج صحیح متون فارسی



قله بلند
یک شنبه 23 اسفند 1394, 08:25 صبح
باسلام
من لینک زیر رو دیدم
http://www.dotnettips.info/post/1160/%d8%a7%d8%b3%d8%aa%d8%ae%d8%b1%d8%a7%d8%ac-%d9%85%d8%aa%d9%86-%d8%a7%d8%b2-%d9%81%d8%a7%db%8c%d9%84%e2%80%8c%d9%87%d8%a7%db%8 c-pdf-%d8%aa%d9%88%d8%b3%d8%b7-itextsharp

بر این اساس، برنامه زیر درست کار می کنه:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using iTextSharp.text.pdf;
using iTextSharp.text;
using iTextSharp.text.pdf.parser;
using System.Text.RegularExpressions;
using System.IO;
using System.Windows;

namespace WindowsFormsApplication1
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
}

private void Form5_Load(object sender, EventArgs e)
{
writePdf2();
readPdf2();
}

private void readPdf2()
{
var reader = new PdfReader(@"C:\Users\USER\Desktop\Test2.pdf");
int intPageNum = reader.NumberOfPages;
string text = null;
for (int i = 1; i <= intPageNum; i++)
{
text = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());
text = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(tex t.ToString()));
text = new UnicodeCharacterPlacement
{
Font = new System.Drawing.Font("Tahoma", 12)
}.Apply(text);

File.WriteAllText("page-" + i + "-text.txt", text.ToString());
}
reader.Close();
}

private void writePdf2()
{
using (var document = new Document(PageSize.A4))
{
var writer = PdfWriter.GetInstance(document, new FileStream(@"C:\Users\USER\Desktop\Test2.pdf", FileMode.Create));
document.Open();

FontFactory.Register("c:\\windows\\fonts\\tahoma.ttf");
var tahoma = FontFactory.GetFont("tahoma", BaseFont.IDENTITY_H);

ColumnText.ShowTextAligned(
canvas: writer.DirectContent,
alignment: Element.ALIGN_JUSTIFIED,
phrase: new Phrase("Test. Hello world. Hell people. سلام. کلمه سلام. سلام مردم", tahoma),
x: 300,
y: 300,
rotation: 0,
runDirection: PdfWriter.RUN_DIRECTION_RTL,
arabicOptions: 0);
}

System.Diagnostics.Process.Start(@"C:\Users\USER\Desktop\Test2.pdf");
}
}
}




اما:
1-من یک فایل پی دی اف دارم وممکنه با هر سازنده پی دی اف ساخته شده باشد. اما در این لینک گفته شده است که اینکد برای هر نوع پی دی افی کار نمی کند.
2-پس باید از پی دی اف موجود، پی دی افی ساخت و آن را خواند.

اما چگونه؟ آیا پاسخگو خواهد بود؟

قله بلند
یک شنبه 23 اسفند 1394, 11:28 صبح
من از این کد استفاده کردم و عین فایل پی دی اف موجود را ساختم ولی مشکل همچنان پابرجاست مثلاً کلمه سلام را به صورت سالم بر می گردونه



PdfReader reader = new PdfReader(@"C:\Users\USER\Desktop\Hello.pdf");
PdfStamper stp = new PdfStamper(reader, new FileStream(@"C:\Users\USER\Desktop\File1.pdf", FileMode.Create));
stp.Close();
reader.Close();