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גם כאשרpassedהואtrueברמת אימות רפה יותר — חלק מפעולות התיקון נפתרות במלואן רק ברמה קפדנית יותר. - השתמש ב-
mode: 'textbox'עלDocxOptionsכאשר פלט ה-DOCX צריך לשמור על הגיאומטריה הוויזואלית המדויקת של כל דף; השתמש במצב ברירת המחדל'flow'כאשר הוא צריך להתפזר כמו מסמך עיבוד תמלילים רגיל. - העבר את
images: 'external'ו-imageDirעלMarkdownExportOptionsעבור מסמכים גדולים, במקום להשתמש ב-URIs של נתונים משולבים כברירת מחדל, כדי לשמור על קובץ ה-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 ולייצוא form-data של 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 |