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())، ولا تشغّله أبدًا على المستند الأصلي الذي لا يزال عليك حفظه دون تحويل. - تحقق من
ConversionReport.unresolvedحتى عندما يكونpassedtrueلمستوى تحقق أقل صرامة — بعض إجراءات الإصلاح لا تُحل بالكامل إلا عند مستوى أكثر صرامة. - استخدم
mode: 'textbox'علىDocxOptionsعندما يحتاج ناتج DOCX إلى الحفاظ على الهندسة البصرية الدقيقة لكل صفحة؛ واستخدم الوضع الافتراضي'flow'عندما يجب أن يعاد تدفق النص كما هو في مستند معالجة كلمات عادي. - مرّر
images: 'external'وimageDirعلىMarkdownExportOptionsللمستندات الكبيرة، بدلاً من عناوين URI للبيانات المضمنة الافتراضية، للحفاظ على صغر حجم ملف Markdown نفسه.
المشكلات الشائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
لا يزال ConvertToPdfA() يُبلغ عن passed: false | ليس كل المشكلات التي تُدرجها ConversionReport.unresolved يمكن إصلاحها تلقائيًا (مثل الخطوط المدمجة المفقودة أو /OutputIntent المفقود) | عالج قواعد unresolved المحددة يدويًا، ثم أعد تشغيل ConvertToPdfA() |
| تم تعديل المستند الحي بشكل غير متوقع بعد محاولة تحويل PDF/A | تم استدعاء ConvertToPdfA() مباشرةً على المستند العامل بدلاً من نسخة | استدعِه على نسخة تم إنشاؤها باستخدام Document.ExtractPages() |
| تصدير Markdown ينتج ملفًا ضخمًا واحدًا | الـ images: 'inline' الافتراضي يضمّن كل صورة كـ 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 ما لم يتمكن من إصلاحه — افحص unresolved حتى عندما يكون passed true.
هل يمكنني تصدير قيم حقول النموذج المملوءة فقط، دون ملف 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 |