Asosiy kontentga o‘tish
AI qo‘llanmalari

LibreOffice Kit yordamida Node.js’da Office hujjatlarini PDF va PNG formatlariga aylantirish

Node.js’da @deepseek-ai/libreoffice-kit paketini o‘rnatish, Office fayllarini PDF formatiga aylantirish, sahifalarni PNG sifatida ko‘rsatish, elektron jadvallarni qayta hisoblash, shriftlarni sozlash va platformaga xos dvigatellarni boshqarishni o‘rganing.

Node.js’da Office hujjatlarini PDF va PNG formatlariga aylantirish

Umumiy ma’lumot

@deepseek-ai/libreoffice-kit — oldindan tayyorlangan, qisqartirilgan LibreOffice dvigatellari yordamida Office hujjatlarini aylantirish va tasvirlash uchun Node.js paketi. U hujjat maketining barqarorligi, matnning o‘qilishi, shriftlarni aniq boshqarish va alohida o‘rnatilgan LibreOffice nusxasiga tayanmasdan oflayn ishlashni talab qiladigan ilovalar uchun mo‘ljallangan.

Paket Office’dan PDF’ga aylantirish, PNG formatida bevosita tasvirlash va elektron jadvallarni qayta hisoblashni qo‘llab-quvvatlaydi. Undan Node.js xizmati, desktop ilova, ommaviy qayta ishlash vazifasi yoki boshqa hujjat pipeline’ida foydalanish mumkin. Avtorizatsiya, fayllarni saqlash va ko‘rish interfeyslari ilovaning o‘z zimmasida qoladi.

Asosiy imkoniyatlar

  • Office’ni aylantirish: Qo‘llab-quvvatlanadigan Writer, Calc va Impress hujjatlarini PDF formatiga eksport qilish.
  • Sahifalarni tasvirlash: Office yoki PDF kiritmalarini bevosita PNG sahifalariga aylantirish.
  • Elektron jadvalni qayta hisoblash: Ishchi kitoblarni qayta hisoblash va yangilangan natijani saqlash.
  • Shriftlarni hisobga olgan holda qayta ishlash: Tizim shriftlarini aniqlash yoki aniq sozlangan shrift kataloglarini indekslash.
  • Sozlanadigan almashtirishlar: Keng tarqalgan lotin va soddalashtirilgan xitoy shrift oilalari uchun zaxira afzalliklaridan foydalanish.
  • Yetishmayotgan shriftlar haqida hisobot: O‘qilishi mumkin bo‘lgan OOXML hujjat ma’lumotlarida e’lon qilingan mavjud bo‘lmagan shrift oilalari haqida hisobot berish.
  • Oflayn dvigatellar: Qo‘llab-quvvatlanadigan macOS va Windows tizimlarida paketlangan mahalliy dvigatellardan yoki Linux’da WASM dvigatelidan foydalanish.
  • Resurslarni boshqarish: Vaqt chegaralari hamda shriftlarni indekslash yoki yuklash limitlarini qo‘llash.
  • Buyruq qatori va Node API’lari: Aylantirishlarni terminaldan ishga tushirish yoki ularni ilova kodiga integratsiya qilish.

Qo‘llab-quvvatlanadigan hujjatlar bo‘yicha mulohazalar

Dvigatel Writer, Calc, Impress, OOXML va ikkilik Office filtrlari, diagrammalar, maket va chizma komponentlari hamda PDF eksportini saqlab qoladi. Ikkilik .doc, .xls va .ppt fayllari Microsoft Office 97–2003 fayllari kabi haqiqiy OLE compound hujjatlar bo‘lsa, qo‘llab-quvvatlanadi.

Ikkilik Office kengaytmasi bilan shunchaki qayta nomlangan RTF yoki HTML fayllari qabul qilinmaydi. .wps fayllari ham qabul qilinmaydi.

OOXML hujjatlari uchun missingFonts o‘qilishi mumkin bo‘lgan hujjat XML’ida topilgan mavjud bo‘lmagan oilalarni bildiradi. Ikkilik formatlar LibreOffice o‘z shrift moslashtirishini amalga oshirsa ham, bo‘sh ro‘yxat qaytaradi. Shuning uchun natija yetishmayotgan gliflar haqida to‘liq hisobot emas.

Talablar va o‘rnatish

Sizga Node.js 22.19.0 yoki undan yangi versiyasi kerak bo‘ladi. npm’dan 0.1.3 versiyasini o‘rnating:

npm install @deepseek-ai/libreoffice-kit@0.1.3

Paket joriy operatsion tizim va arxitekturaga mos dvigatelni o‘rnatish uchun ixtiyoriy bog‘liqliklardan foydalanadi. U o‘rnatish vaqtida LibreOffice’ni kompilyatsiya qilmaydi, qo‘shimcha dvigatellarni yuklab olmaydi yoki foydalanuvchi o‘rnatgan LibreOffice ilovasini qidirmaydi.

Platforma dvigatelini tanlash

  • Apple Silicon’li macOS: @deepseek-ai/libreoffice-kit-darwin-arm64 dan foydalanadi.
  • Intel’li macOS: @deepseek-ai/libreoffice-kit-darwin-x64 dan foydalanadi.
  • Windows ARM64: @deepseek-ai/libreoffice-kit-win32-arm64 dan foydalanadi va ARM64 Node.js hamda Microsoft Visual C++ v14 ARM64 Redistributable’ni talab qiladi.
  • Windows x64: @deepseek-ai/libreoffice-kit-win32-x64 dan foydalanadi va Microsoft Visual C++ v14 x64 Redistributable’ni talab qiladi.
  • Linux: Odatda umumiy @deepseek-ai/libreoffice-kit-wasm dvigatelidan foydalanadi.

macOS va Windows o‘zlariga mos mahalliy paketlarni talab qiladi va WASM’ga o‘tmaydi. Zarur dvigatel mavjud bo‘lmasa yoki buzilgan bo‘lsa, createConverter unavailable xatosi bilan rad etadi. Muvaffaqiyatsiz aylantirish ham avtomatik ravishda boshqa dvigatelga o‘tishga sabab bo‘lmaydi.

Buyruq qatori interfeysidan foydalanish

O‘rnatish jarayoni dsoffice buyrug‘ini qo‘shadi. U loyiha ichiga mahalliy o‘rnatilganda, uni npm exec orqali ishga tushiring.

Sahifani PNG formatiga tasvirlash

Quyidagi buyruq DOCX hujjatining 1-sahifasini report-pages chiqish katalogiga tasvirlaydi:

npm exec -- dsoffice render \
  --input report.docx \
  --output-dir report-pages \
  --pages 1

Office hujjatini PDF formatiga aylantirish

npm exec -- dsoffice convert \
  --input report.docx \
  --output report.pdf

Elektron jadvalni qayta hisoblash

Formulalarni hisoblash va yangilangan ishchi kitobni saqlash kerak bo‘lganda, qayta hisoblash buyrug‘idan foydalaning:

npm exec -- dsoffice recalculate \
  --input budget.xlsx \
  --output recalculated.xlsx

Node.js API orqali hujjatlarni aylantirish

Ilovaga integratsiya qilish uchun createConverter ni import qiling, konvertor yarating, amalni bajaring va konvertorni finally blokida bo‘shating.

import { createConverter } from '@deepseek-ai/libreoffice-kit';

const converter = await createConverter({
  timeoutMs: 120_000,
});

try {
  const result = await converter.render({
    inputPath: '/private/work/document.docx',
    outputPath: '/private/work/document.pdf',
  });

  console.log('Backend:', result.backend);
  console.log('Missing fonts:', result.missingFonts);
} finally {
  await converter.dispose();
}

Bu misolda yaratilgan PDF outputPath ga yoziladi. Qaytarilgan natija tanlangan backend’ni aniqlaydi va hujjat uchun aniqlangan yetishmayotgan shrift oilalari nomlarini o‘z ichiga oladi.

Yo‘l va chiqish talablari

  • Kirish va chiqish uchun mutlaq yo‘llarni uzating.
  • Chaqiruvchi ilova egalik qiladigan va boshqaradigan shaxsiy kataloglardan foydalaning.
  • So‘ralgan chiqish fayli avvaldan mavjud bo‘lmasligi kerak.
  • Native jarayonlar, workerlar, profillar va vaqtinchalik resurslarni tozalash uchun resurslarni finally blokida bo‘shating.

Maxsus shriftlarni sozlash

Odatiy holatda paket shriftlarni tizim va foydalanuvchining odatiy shrift kataloglaridan topadi. Buning o‘rniga fontDirectories orqali aniq ildiz kataloglarni berishingiz mumkin:

import { createConverter } from '@deepseek-ai/libreoffice-kit';

const converter = await createConverter({
  timeoutMs: 120_000,
  fontDirectories: [
    '/absolute/path/to/company-fonts',
    '/absolute/path/to/cjk-fonts',
  ],
});

try {
  const result = await converter.render({
    inputPath: '/private/work/presentation.pptx',
    outputPath: '/private/work/presentation.pdf',
  });

  if (result.missingFonts.length > 0) {
    console.log('Unavailable families:', result.missingFonts);
  }
} finally {
  await converter.dispose();
}

Maxsus shrift ildizlari odatiy qidiruv ro‘yxatini kengaytirmaydi, balki uni almashtiradi. Paket metama’lumotlar va gliflar qamrovini tekshirish uchun fontkitdan foydalanadi, so‘ng tanlangan fayllarni asl shrift baytlari sifatida dvigatelga uzatadi.

Hech qanday shrift to‘plami birga kiritilmaydi yoki yuklab olinmaydi. Joylashtirishingiz mos shriftlarni taqdim etishi va ularni qayta tarqatish huquqlariga rioya qilishi kerak. Minimal konteynerlarda odatda shriftlar o‘rnatilishi yoki aniq shrift katalogi sozlanishi kerak.

Zaxira shriftlardan foydalanish

Standart fontFallbacks tarkibida keng tarqalgan lotin va soddalashtirilgan xitoy oilalari uchun afzalliklar mavjud. Calibri mavjud bo‘lmaganda muqobil sifatida Carlito, Cambria mavjud bo‘lmaganda esa Caladea tanlanadi. Chaqiruvchi taqdim etgan zaxira guruhlari standart guruhlarni almashtiradi va ular faqat amalda mavjud shriftlarni tanlashi mumkin; ular shriftlarni o‘rnatmaydi.

Aniq o‘rnatilgan shrift oilalariga, jumladan bezakli va qo‘lyozma oilalarga ustuvorlik beriladi. WASM shrift so‘rovlari mos o‘rnatilgan ko‘rinishni tanlashga yordam berish uchun qalinlik va kursiv ma’lumotlarini ham uzatadi, shrift katalogi esa yetishmayotgan gliflar uchun qo‘shimcha shriftlarni taqdim etishi mumkin.

Operatsion foydalanish bo‘yicha ilg‘or maslahatlar

Konverterlarni ehtiyotkorlik bilan qayta ishlating

Konverterni qayta ishlatish o‘zgarmagan shrift metama’lumotlari uchun umumiy xotira ichidagi va hajmi cheklangan foydalanuvchiga tegishli disk keshlaridan foydalanish imkonini beradi. Biroq bitta konverterning operatsiyalari ketma-ket bajariladi. Xizmatingizga muayyan parallellik modeli kerak bo‘lsa, ayni konverterda bir nechta render bir vaqtda bajariladi deb hisoblamasdan, ushbu ketma-ketlikni hisobga oling.

Har bir render yangi native jarayon yoki Node workeri hamda shaxsiy profilga ega bo‘ladi. Bekor qilish va resurslarni bo‘shatish dvigatelning chiqishi va tozalash ishlari tugashini kutadi.

Shrift resurslari limitlarini belgilang

Katta yoki ishonchsiz shrift kataloglari mavjud shrift boshqaruv parametrlari yordamida cheklanishi kerak:

  • maxFontFiles indekslanadigan shrift fayllari sonini cheklaydi.
  • maxFontFileBytes alohida shrift fayllari hajmini cheklaydi.
  • maxLoadedFontBytes yuklangan shrift ma’lumotlarining umumiy hajmini cheklaydi.

Har bir operatsiya shriftlarni qayta topadi va qayta tekshiradi. O‘zgarmagan metama’lumotlarni konverter fabrikasi keshlari orqali ulashish mumkin. Kesh konfiguratsiyasi va yaroqsizlantirish tafsilotlari uchun shrift metama’lumotlari keshi hujjatlariga murojaat qiling.

Linux shriftlari mavjudligini rejalashtiring

Linux WASM dvigateli faqat import qilingan shriftlardan foydalanadi. Foydalanish mumkin bo‘lgan shriftlar mavjud bo‘lmasa, konvertatsiya unavailable xatosi bilan rad etiladi. Shu sababli konteynerlar mos shriftlarni o‘rnatishi yoki boshqariladigan shrift katalogini ulashi va uning mutlaq yo‘lini fontDirectoriesga uzatishi kerak.

Office natijasi aynan bir xil bo‘ladi deb hisoblamang

Shriftlarni hisobga olgan qayta ishlash oilani tanlash ustidan nazoratni yaxshilaydi, ammo Microsoft Office bilan aynan bir xil natijani yoki native va WASM dvigatellari o‘rtasida bir xil natijani kafolatlamaydi. Shrift o‘lchovlari qator uzilishlari, sahifalash, jadvallar o‘lchamlari va boshqa maket tafsilotlarini o‘zgartirishi mumkin.

Mazmunli taqqoslashlar uchun bir xil hujjat baytlari, shriftlar va eksport parametrlaridan foydalaning. Native LibreOffice sozlangan almashtirishlardan oldin o‘rnatilgan asl oilalar va metrikasi mos muqobillarni aniqlashi mumkin, shuningdek u yuz tanlashni o‘zi amalga oshiradi.

Konvertatsiyani hujjatlarni qayta ishlash chegarasi sifatida ko‘ring

Biblioteka konvertatsiya va renderni amalga oshiradi, ammo avtorizatsiya, saqlash yoki oldindan ko‘rish interfeysini taqdim etmaydi. Ilovalar kirish huquqini tekshirishi, chaqiruvchiga tegishli fayllarni ajratib qo‘yishi, shaxsiy ish kataloglarini tanlashi hamda konvertatsiya vazifalariga mos vaqt va resurs limitlarini qo‘llashi kerak.

Ishlab chiqish va tekshirish

Agar siz repozitoriyaning o‘ziga hissa qo‘shayotgan bo‘lsangiz, metama’lumot, unit va paketlash tekshiruvlarini LibreOffice’ni qurmasdan ishga tushirish mumkin:

pnpm verify:metadata
pnpm test
pnpm test:packaging

Haqiqiy dvigatel testlari qo‘shimcha ravishda adapter yig‘ilishini, tayyorlangan dvigatel yuklamalarini va LIBREOFFICE_RUNTIME_ENTRY o‘zgaruvchisida packages/entry/lib/index.jsning mutlaq yo‘li ko‘rsatilgan bo‘lishini talab qiladi. Dvigatel yig‘ilishlari repozitoriyda belgilangan manba va asboblar zanjiri versiyalaridan foydalanishi kerak.

Xulosa

@deepseek-ai/libreoffice-kit Office konvertatsiyasi, elektron jadvallarni qayta hisoblash va PNG renderini zamonaviy Node.js ilovalariga qo‘shishning amaliy usulini taqdim etadi. Uning asosiy afzalligi tayyorlangan native va WASM dvigatellari bilan birga ishlaydigan aniq shrift boshqaruvi bo‘lib, ular oflayn ishlaydi. Ishonchli natijalar uchun kerakli shriftlarni taqdim eting, mutlaq shaxsiy yo‘llardan foydalaning, mos limitlarni belgilang, missingFontsni tekshiring va foydalanishdan so‘ng konverterlarni doimo bo‘shating.

Bekor qilish, xatolarni batafsil qayta ishlash va qo‘shimcha resurs boshqaruvlari uchun Node API hujjatlariga qarang.