تبدیل بی عیب و نقص یک فایل PDF (انواع و اقسام آنها) به متن قابل درک بسیار مشکل است. در ادامه بررسی خواهیم کرد که چرا.
برخلاف تصور عموم، ساختار یک صفحه PDF شبیه به یک صفحه فایل Word نیست. این صفحات درحقیقت نوعی Canvas برای نقاشی هستند. در این بوم نقاشی، شکل، تصویر، متن و غیره در مختصات خاصی قرار خواهند گرفت. حتی کلمه «متن» میتواند به صورت سه حرف در سه مختصات خاص یک صفحه PDF نقاشی شود. برای درک بهتر این مورد نیاز است سورس یک صفح ...
پیشتر در سایت جاری مطلبی را در مورد «بهینه سازی حجم فایل PDF تولیدی در حین کار با تصاویر در iTextSharp» مطالعه کردهاید. خلاصه آن به این نحو است که میتوان در یک فایل PDF، دهها تصویر را که تنها به یک فایل فیزیکی اشاره میکنند قرار داد. به این ترتیب حجم فایل نهایی تا حد بسیار قابل ملاحظهای کاهش مییابد. البته آن مطلب در مورد تولید یک فایل PDF جدید صدق میکند. اما در مورد فایلهای PDF موجود و از پیش آماده شده چطور؟
...
ابتدا مثال ساده زیر را درنظر بگیرید:
using System.Diagnostics;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace OptimizeImageSizes
{
class Program
{
static void Main(string[] args)
{
test1();
test2();
}
private static void test2()
{
using (var pdfDoc = new Document(PageSize.A4) ...
فرض کنید که لیستی از کاربران را به همراه نام و تصاویر آنها داریم. قصد داریم این اطلاعات را در یک سلول نمایش دهیم و نه اینکه هر کدام را در سلولهای جداگانهای قرار دهیم. روش متداول انجام اینکار تعریف یک قالب سلول سفارشی با پیاده سازی اینترفیس IColumnItemsTemplate است. راه میانبری نیز برای حل این مساله وجود دارد:
columns.AddColumn(column =>
{
column. ...
با استفاده از اشیاء Com همراه با Acrobat SDK میتوان تمام صفحات یک فایل PDF را تبدیل به تصویر کرد. این SDK به همراه نگارش کامل Adobe Acrobat نیز بر روی سیستم نصب میشود و یا میتوان آنرا به صورت جداگانه از سایت Adobe دریافت کرد.
http://www.adobe.com/devnet/acrobat/downloads.html
پس از آن، برای تبدیل صفحات یک فایل PDF به تصویر، مراحل زیر باید طی شود:
الف) وهله سازی از شیء AcroExch.PDDoc
در صورتیکه SDK یاد شده ...
مثال ساده زیر را که در مورد تعریف یک کلاس Disposable و سپس استفاده از آن توسط عبارت using است را به همراه سه استثنایی که در این متدها تعریف شده است، در نظر بگیرید:
using System;
namespace TestUsing
{
public class MyResource : IDisposable
{
public void DoWork()
{
throw new ArgumentException("A");
}
public void Dispose()
{
throw new Argum ...
کتابخانه iTextSharp دارای کلاسی است به نام HTMLWorker که کار تبدیل عناصر HTML را به عناصر متناظر خودش، انجام میدهد. این کلاس در حال حاضر منسوخ شده درنظر گرفته میشود (اینطور توسط نویسندگان آن اعلام شده) و دیگر توسعه نخواهد یافت. بنابراین اگر از HTMLWorker استفاده میکنید با یک کلاس قدیمی که دارای HTML Parser ایی بسیار بدوی است طرف هستید و در کل برای تبدیل محتوای HTML ایی با ساختار بسیار ساده بد نیست؛ اما انتظار زیادی از آن نداشته ب ...
خروجی PDF زیر را در نظر بگیرید:مشکلی را در آن مشاهده میکنید؟ اصل آن یا صحیح آن باید به شکل زیر باشد:و این وارونه نمایش دادنها، دقیقا مشکلی است که حین کار با iTextSharp برای نمایش متنی مثلا به همراه یک تاریخ شمسی وجود دارد. البته این مشکل هم اساسا به خود استاندارد یونیکد برمیگردد که یک سری کاراکتر را «کاراکتر ضعیف» معرفی کرده؛ برای مثال کاراکتر اسلش بکار رفته در یک تاریخ هم از این دست است. بنابراین PDF تولیدی توسط iTextSharp از دید استان ...