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 สำหรับเอกสารขนาดใหญ่ แทนการใช้ URI ข้อมูลแบบอินไลน์เริ่มต้น เพื่อทำให้ไฟล์ Markdown มีขนาดเล็กลง.

ปัญหาทั่วไป

ปัญหาสาเหตุการแก้ไข
ConvertToPdfA() ยังรายงาน passed: falseไม่ใช่ทุกปัญหาที่ ConversionReport.unresolved รายการสามารถแก้ไขอัตโนมัติได้ (เช่น ฟอนต์ฝังหายหรือ /OutputIntent ที่หายไป)ดำเนินการตามกฎ unresolved เฉพาะด้วยตนเอง แล้วเรียกใช้ ConvertToPdfA() ใหม่
เอกสารสดถูกแก้ไขโดยไม่ได้คาดคิดหลังจากการพยายามแปลง PDF/AConvertToPdfA() ถูกเรียกใช้โดยตรงบนเอกสารทำงานแทนการใช้สำเนาเรียกใช้บนสำเนาที่สร้างด้วย 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 แสดงรายการสิ่งที่ไม่สามารถทำได้ — ตรวจสอบ 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

ดูเพิ่มเติม

 ภาษาไทย