Conversion

Conversion

این صفحه رندر کردن یک PDF به فرمت‌های دیگر و تبدیل یک سند به سمت انطباق PDF/A را پوشش می‌دهد. Document یک متد To*() برای هر فرمت خروجی برای کل سند ارائه می‌کند؛ همان متدها بر روی Page برای رندر یک صفحه واحد نیز موجود هستند.


رندر به فرمت‌های دیگر اسناد

Document.ToHtml()، Document.ToDocx() و Document.ToMarkdown() هر صفحه را رندر می‌کنند؛ Page.ToSvg() و Page.ToImage() یک صفحه را به یک رشته SVG مستقل یا بایت‌های PNG رندر می‌کنند. هر کدام گزینه‌های خاص خود را می‌پذیرند — mode بر روی DocxOptions (‘flow’ محتوا را بازنویسی می‌کند، ’textbox’ هندسه هر صفحه را حفظ می‌کند) و images بر روی MarkdownExportOptions (‘inline’ داده‌های تصویر را به صورت URI جاسازی می‌کند، ’external’ فایل‌های جداگانه را در imageDir می‌نویسد).

const doc = Document.OpenFile('in.pdf');
const svg = doc.Pages[0].ToSvg();               // standalone <svg> string
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
const html = doc.ToHtml();                      // standalone semantic HTML, all pages
const md = doc.ToMarkdown();                    // GFM Markdown, all pages
const docx = doc.ToDocx();                      // .docx bytes, reflowed, images in the package
const fixed = doc.ToDocx({ mode: 'textbox' });  // .docx keeping each page's own geometry

ImageOptions (برای Page.ToImage()) همچنین format، quality، scale، یک width / height صریح، و background (‘white’ یا ’transparent’) را می‌پذیرد.


تبدیل به سمت PDF/A

Document.ConvertToPdfA() سعی می‌کند سندی را به سمت یک PDF/A level (‘b’ یا ‘u’) اصلاح کند و مجدداً اعتبارسنجی می‌کند، و یک ConversionReport با applied (اقدامات اصلاحی که انجام داده)، unresolved (مسائلی که نتوانست برطرف کند) و passed باز می‌گرداند. آن را روی یک نسخه اجرا کنید — برای مثال نسخه‌ای ساخته شده با Document.ExtractPages() — تا سند زنده و در حال کار هرگز توسط تبدیل تغییر نکند.

// ExtractPages gives an independent copy; ConvertToPdfA never touches the original.
const copy = doc.ExtractPages(doc.Pages.map((_, i) => i + 1));
const conversion = copy.ConvertToPdfA('2b');

console.log(`applied ${conversion.applied.length} action(s), `
  + `${conversion.unresolved.length} unresolved, `
  + `result: ${conversion.passed ? 'passes' : 'still fails'} PDF/A-2b`);
copy.WriteTo('output-pdfa.pdf');

قالب‌های خروجی دیگر

علاوه بر HTML، Markdown، DOCX، SVG و PNG، کتابخانه همچنین TIFF (TiffExportOptions، encodeTiff()) را صادر می‌کند و مقادیر فیلد AcroForm را در FDF و XFDF (exportFdfFile()، exportXfdfFile()، importFdfFile()، importXfdfFile()) وارد/صادر می‌نماید — که برای تبادل داده‌های فرم پرشده به طور جداگانه از خود PDF مفید است.


نکات و بهترین روش‌ها

  • دستور Document.ConvertToPdfA() را روی یک کپی اجرا کنید (مثلاً از Document.ExtractPages())، هرگز روی سند زنده‌ای که هنوز باید به صورت تبدیل‌نشده ذخیره شود، اجرا نکنید.
  • حتی وقتی passed true است، ConversionReport.unresolved را برای سطح اعتبارسنجی سست‌تر بررسی کنید — برخی اقدامات اصلاحی تنها در سطح سخت‌گیرانه‌تر به‌طور کامل حل می‌شوند.
  • از mode: 'textbox' بر روی DocxOptions استفاده کنید وقتی خروجی DOCX نیاز دارد تا هندسه بصری دقیق هر صفحه را حفظ کند؛ از حالت پیش‌فرض 'flow' استفاده کنید وقتی باید مانند یک سند پردازش‌کلامی عادی بازگردانده شود.
  • برای اسناد بزرگ، به جای URIهای داده‌ای درون‌خطی پیش‌فرض، images: 'external' و یک imageDir را روی MarkdownExportOptions بگذرانید تا فایل Markdown خود کوچک باقی بماند.

مشکلات رایج

مشکلدلیلراه‌حل
ConvertToPdfA() هنوز passed: false را گزارش می‌دهدهمهٔ مواردی که ConversionReport.unresolved فهرست می‌کند قابل رفع خودکار نیستند (مثلاً قلم‌های جاسازی‌شدهٔ گمشده یا یک /OutputIntent گمشده)قواعد خاص unresolved را به‌صورت دستی برطرف کنید، سپس ConvertToPdfA() را دوباره اجرا کنید
سند زنده پس از تلاش برای تبدیل PDF/A به‌طور غیرمنتظره‌ای تغییر یافتConvertToPdfA() مستقیماً بر روی سند کاری فراخوانی شد به جای یک نسخهٔ کپیآن را بر روی یک کپی ساخته شده با Document.ExtractPages() فراخوانی کنید
صدور Markdown یک فایل بزرگ تولید می‌کندپیکربندی پیش‌فرض images: 'inline' هر تصویر را به‌عنوان data URI جاسازی می‌کندبرای نوشتن تصاویر به‌صورت فایل‌های جداگانه، { images: 'external', imageDir: '...' } را پاس کنید
خروجی DOCX چیدمان اصلی صفحه را از دست می‌دهدپیکربندی پیش‌فرض mode: 'flow' محتوا را مانند یک واژه‌پرداز بازچید می‌کندبرای حفظ هندسهٔ هر صفحه، { mode: 'textbox' } را پاس کنید

FAQ

PDF را می‌توان به چه قالب‌هایی تبدیل کرد؟

HTML، Markdown و DOCX برای کل سند (Document.ToHtml() / ToMarkdown() / ToDocx()); SVG و PNG به ازای هر صفحه (Page.ToSvg() / Page.ToImage()); به‌علاوه خروجی فرم-دیتا به صورت TIFF و FDF/XFDF.

آیا تبدیل به PDF/A سند اصلی من را تغییر می‌دهد؟

فقط در صورتی که ConvertToPdfA() را مستقیماً روی آن صدا بزنید. آن را روی یک کپی صدا بزنید — برای مثال doc.ExtractPages(doc.Pages.map((_, i) => i + 1)) — تا سند اصلی بدون تبدیل بماند.

چگونه می‌توانم بفهمم که تبدیل PDF/A واقعاً موفق بوده است؟

به ConversionReport.passed مراجعه کنید. applied مواردی را که تبدیل اصلاح کرده لیست می‌کند، و unresolved مواردی را که نتوانسته است لیست می‌کند — حتی وقتی passed true است، unresolved را بررسی کنید.

آیا می‌توانم فقط مقادیر پر شده فیلدهای فرم را خروجی بگیرم، بدون خود PDF؟

بله — exportFdfFile() و exportXfdfFile() مقادیر فعلی فیلد AcroForm را در یک فایل جداگانه FDF یا XFDF می‌نویسند؛ importFdfFile() / importXfdfFile() آن‌ها را دوباره به یک سند می‌خوانند.


API Reference خلاصه

کلاس/متدتوضیح
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown()رندر کردن هر صفحه به قالب سند دیگری
Page.ToSvg() / Page.ToImage()رندر یک صفحه به SVG یا PNG
DocxOptions / MarkdownExportOptions / ImageOptionsگزینه‌های رندر برای هر فرمت
Document.ConvertToPdfA()سند را به سطح PDF/A بهبود دهید و دوباره اعتبارسنجی کنید
ConversionReportنتیجه تبدیل: applied، unresolved، passed
TiffExportOptions / encodeTiff()صدور به TIFF
exportFdfFile() / exportXfdfFile() / importFdfFile() / importXfdfFile()صدور یا وارد کردن مقادیر فیلد AcroForm به عنوان FDF/XFDF

همچنین ببینید:

 فارسی