Ruka hadi maudhui makuu
Mafunzo ya AI

Badilisha Nyaraka za Office kuwa PDF na PNG katika Node.js kwa LibreOffice Kit

Jifunze jinsi ya kusakinisha @deepseek-ai/libreoffice-kit, kubadilisha faili za Office kuwa PDF, kutoa kurasa kama PNG, kusasisha upya lahajedwali, kusanidi fonti, na kudhibiti injini mahususi za jukwaa katika Node.js.

Badilisha Nyaraka za Office kuwa PDF na PNG katika Node.js kwa LibreOffice Kit

Muhtasari

@deepseek-ai/libreoffice-kit ni kifurushi cha Node.js cha kubadilisha na kuonyesha hati za Office kwa kutumia injini za LibreOffice zilizotayarishwa awali na kupunguzwa. Kimeundwa kwa ajili ya programu zinazohitaji mpangilio wa hati unaotabirika, maandishi yanayosomeka, udhibiti wa wazi wa fonti, na utekelezaji nje ya mtandao bila kutegemea nakala ya LibreOffice iliyosakinishwa kando.

Kifurushi hiki kinaunga mkono ubadilishaji wa Office kwenda PDF, uonyeshaji wa moja kwa moja wa PNG, na ukokotoaji upya wa lahajedwali. Kinaweza kutumika katika huduma ya Node.js, programu ya kompyuta ya mezani, kazi ya kuchakata kwa kundi, au mchakato mwingine wa hati. Uidhinishaji, uhifadhi wa faili, na violesura vya mwoneko wa awali hubaki kuwa jukumu la programu.

Vipengele muhimu

  • Ubadilishaji wa Office: Hamisha hati zinazotumika za Writer, Calc, na Impress kwenda PDF.
  • Uonyeshaji wa kurasa: Onyesha pembejeo za Office au PDF moja kwa moja kuwa kurasa za PNG.
  • Ukokotoaji upya wa lahajedwali: Kokotoa upya vitabu vya kazi na uhifadhi matokeo yaliyosasishwa.
  • Uchakataji unaozingatia fonti: Tambua fonti za mfumo au orodhesha kwa uwazi saraka za fonti zilizosanidiwa.
  • Mibadala inayoweza kusanidiwa: Tumia mapendeleo ya fonti mbadala kwa familia za kawaida za fonti za Kilatini na Kichina Kilichorahisishwa.
  • Ripoti ya fonti zinazokosekana: Ripoti familia za fonti zisizopatikana zilizotangazwa katika data inayosomeka ya hati za OOXML.
  • Injini za nje ya mtandao: Tumia injini asilia zilizowekwa kwenye mifumo ya macOS na Windows inayotumika, au injini ya WASM kwenye Linux.
  • Udhibiti wa rasilimali: Tumia vikomo vya muda na vikomo vya kuorodhesha au kupakia fonti.
  • API za mstari wa amri na Node: Endesha ubadilishaji kutoka kwenye terminali au uiunganishe katika msimbo wa programu.

Mazingatio ya hati zinazotumika

Injini huhifadhi vichujio vya Writer, Calc, Impress, OOXML na Office za binary, chati, vipengele vya mpangilio na michoro, pamoja na usaidizi wa uhamishaji wa PDF. Faili za binary .doc, .xls, na .ppt zinatumika zinapokuwa hati halisi za OLE compound, kama vile faili za Microsoft Office 97–2003.

Faili za RTF au HTML zilizopewa tu upya jina kwa kiendelezi cha binary Office hazikubaliki. Faili za .wps pia hazikubaliki.

Kwa hati za OOXML, missingFonts huripoti familia zisizopatikana zilizopatikana katika XML ya hati inayosomeka. Miundo ya binary hurudisha orodha tupu ingawa LibreOffice bado hufanya ulinganishaji wake wa fonti. Kwa hiyo, matokeo si ripoti kamili ya glyph zinazokosekana.

Mahitaji ya awali na usakinishaji

Unahitaji Node.js 22.19.0 au mpya zaidi. Sakinisha toleo 0.1.3 kutoka npm:

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

Kifurushi hutumia vitegemezi vya hiari kusakinisha injini inayolingana na mfumo wa uendeshaji na usanifu wa sasa. Hakikusanyi LibreOffice wakati wa usakinishaji, hakipakui injini za ziada, wala hakitafuti programu ya LibreOffice iliyosakinishwa na mtumiaji.

Uteuzi wa injini kulingana na jukwaa

  • macOS Apple Silicon: Hutumia @deepseek-ai/libreoffice-kit-darwin-arm64.
  • macOS Intel: Hutumia @deepseek-ai/libreoffice-kit-darwin-x64.
  • Windows ARM64: Hutumia @deepseek-ai/libreoffice-kit-win32-arm64 na inahitaji Node.js ya ARM64 pamoja na Microsoft Visual C++ v14 ARM64 Redistributable.
  • Windows x64: Hutumia @deepseek-ai/libreoffice-kit-win32-x64 na inahitaji Microsoft Visual C++ v14 x64 Redistributable.
  • Linux: Kwa kawaida hutumia injini iliyoshirikiwa ya @deepseek-ai/libreoffice-kit-wasm.

macOS na Windows zinahitaji vifurushi vyao asilia vinavyolingana na hazitumii WASM kama mbadala. Ikiwa injini inayohitajika haipo au imeharibika, createConverter hukataa kwa hitilafu ya unavailable. Ubadilishaji unaposhindikana pia hauanzishi kiotomatiki kubadilisha kwenda injini nyingine.

Kutumia kiolesura cha mstari wa amri

Usakinishaji huongeza amri ya dsoffice. Ikiwa imesakinishwa ndani ya mradi, iendeshe kupitia npm exec.

Onyesha ukurasa kuwa PNG

Amri ifuatayo huonyesha ukurasa wa 1 wa hati ya DOCX katika saraka ya matokeo ya report-pages:

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

Badilisha hati ya Office kuwa PDF

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

Kokotoa upya lahajedwali

Tumia amri ya ukokotoaji upya wakati fomula zinahitaji kutathminiwa na kitabu cha kazi kilichosasishwa kuhifadhiwa:

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

Kubadilisha hati kupitia API ya Node.js

Kwa ujumuishaji wa programu, leta createConverter, unda kibadilishaji, endesha operesheni, na ondoa kibadilishaji katika kizuizi cha finally.

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();
}

Katika mfano huu, PDF iliyozalishwa huandikwa kwenye outputPath. Matokeo yaliyorudishwa hutambulisha backend iliyochaguliwa na kujumuisha majina ya familia za fonti zinazokosekana zilizogunduliwa kwa hati hiyo.

Mahitaji ya njia na matokeo

  • Pitisha njia kamili za ingizo na towe.
  • Tumia saraka za faragha zinazomilikiwa na kudhibitiwa na programu inayoita.
  • Faili la towe lililoombwa lazima lisiwepo tayari.
  • Weka uondoaji wa rasilimali katika kizuizi cha finally ili michakato asilia, wafanyakazi, profaili na rasilimali za muda ziweze kusafishwa.

Kusanidi fonti maalum

Kwa chaguo-msingi, kifurushi hutafuta fonti katika saraka za kawaida za fonti za mfumo na mtumiaji. Badala yake, unaweza kutoa mizizi mahususi kupitia fontDirectories:

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();
}

Mizizi maalum ya fonti hubadilisha orodha chaguo-msingi ya utafutaji badala ya kuiongezea. Kifurushi hutumia fontkit kukagua metadata na ufunikaji wa glyph, kisha hupeleka faili zilizochaguliwa kwa injini kama baiti zake za awali za fonti.

Hakuna mkusanyiko wa fonti unaojumuishwa au kupakuliwa. Usambazaji wako lazima utoe fonti zinazofaa na uzingatie haki zao za usambazaji upya. Kontena ndogo kwa kawaida zinahitaji fonti kusakinishwa au kusanidiwa kwa saraka maalum ya fonti.

Tabia ya mbadala

fontFallbacks za chaguo-msingi zinajumuisha mapendeleo ya familia za kawaida za Kilatini na Kichina Kilichorahisishwa. Zinajumuisha Carlito kama mbadala wakati Calibri haipatikani, na Caladea wakati Cambria haipatikani. Vikundi vya mbadala vinavyotolewa na anayeita hubadilisha chaguo-msingi, na vinaweza kuchagua tu fonti zinazopatikana kweli; havisakinishi fonti.

Familia za fonti zilizosakinishwa zinazolingana kikamilifu hupewa kipaumbele, ikijumuisha familia za mapambo na mwandiko. Maombi ya fonti ya WASM pia hubeba taarifa za uzito na italiki ili kusaidia kuchagua mwonekano unaofaa uliosakinishwa, huku katalogi ya fonti ikiweza kutoa fonti za ziada kwa glyph zinazokosekana.

Vidokezo vya juu vya uendeshaji

Tumia tena vigeuzi kwa uangalifu

Kutumia tena kigeuzi kunaweza kunufaika kutokana na akiba za pamoja za kumbukumbu na akiba za diski za ndani za mtumiaji zenye kikomo kwa metadata ya fonti isiyobadilika. Hata hivyo, shughuli kwenye kigeuzi kimoja huendeshwa kwa mfuatano. Ikiwa huduma yako inahitaji muundo mahususi wa ushindani, zingatia mfuatano huo badala ya kudhani kuwa uwasilishaji nyingi kwenye kigeuzi kimoja huendeshwa kwa wakati mmoja.

Kila uwasilishaji bado humiliki mchakato mpya wa asili au mfanyakazi wa Node na profaili ya faragha. Kughairi na kuondoa rasilimali husubiri injini itoke na usafishaji ukamilike.

Weka bajeti za rasilimali za fonti

Saraka kubwa au zisizoaminika za fonti zinapaswa kuwekwa ndani ya mipaka kwa vidhibiti vya fonti vinavyopatikana:

  • maxFontFiles huweka kikomo cha idadi ya faili za fonti zinazoorodheshwa.
  • maxFontFileBytes huweka kikomo cha ukubwa wa kila faili ya fonti.
  • maxLoadedFontBytes huweka kikomo cha jumla ya kiasi cha data ya fonti iliyopakiwa.

Kila operesheni hugundua tena na kuthibitisha upya fonti. Metadata isiyobadilika inaweza kushirikiwa kupitia akiba za kiwanda cha vigeuzi. Tazama nyaraka za akiba ya metadata ya fonti kwa maelezo ya usanidi na ubatilishaji wa akiba.

Panga upatikanaji wa fonti za Linux

Injini ya Linux WASM hutumia fonti zilizoletwa pekee. Ikiwa hakuna fonti zinazoweza kutumika, ubadilishaji hukataliwa kwa hali ya unavailable. Kwa hiyo, kontena zinapaswa kusakinisha fonti zinazofaa au kuweka saraka ya fonti inayodhibitiwa, kisha zipitishe njia yake kamili kwa fontDirectories.

Usidhanie towe linalofanana na Office

Uchakataji unaozingatia fonti huboresha udhibiti wa uteuzi wa familia, lakini hauhakikishi towe linalofanana na Microsoft Office au towe linalofanana kati ya injini asilia na za WASM. Vipimo vya fonti vinaweza kubadilisha migawanyo ya mistari, upangaji wa kurasa, vipimo vya jedwali na maelezo mengine ya mpangilio.

Kwa ulinganisho wenye maana, tumia baiti za hati, fonti na chaguo za uhamishaji zinazofanana. LibreOffice asilia inaweza kutatua familia asilia zilizowekwa na mbadala zinazolingana kwa vipimo kabla ya kutumia vibadala vilivyosอกanidiwa, na hufanya uteuzi wake wa mwonekano.

Chukulia ubadilishaji kama mpaka wa uchakataji wa hati

Maktaba hufanya ubadilishaji na uwasilishaji, lakini haitoi uidhinishaji, uhifadhi au kiolesura cha hakiki. Programu zinapaswa kuthibitisha ruhusa ya ufikiaji, kutenga faili zinazomilikiwa na anayeita, kuchagua saraka za kazi za faragha na kuweka mipaka inayofaa ya muda na rasilimali kuzunguka kazi za ubadilishaji.

Uendelezaji na uthibitishaji

Ikiwa unachangia kwenye hazina yenyewe, ukaguzi wa metadata, vitengo na ufungashaji unaweza kuendeshwa bila kujenga LibreOffice:

pnpm verify:metadata
pnpm test
pnpm test:packaging

Majaribio halisi ya injini pia yanahitaji ujenzi wa adapta, mizigo ya injini iliyoandaliwa na LIBREOFFICE_RUNTIME_ENTRY inayoelekeza kwenye njia kamili ya packages/entry/lib/index.js. Miundo ya injini inapaswa kutumia matoleo ya chanzo na zana yaliyowekwa na hazina.

Hitimisho

@deepseek-ai/libreoffice-kit hutoa njia ya kivitendo ya kujumuisha ubadilishaji wa Office, ukokotoaji upya wa lahajedwali na uwasilishaji wa PNG katika programu za kisasa za Node.js. Faida yake kuu ni ushughulikiaji wazi wa fonti pamoja na injini asilia na za WASM zilizoandaliwa zinazofanya kazi nje ya mtandao. Kwa matokeo ya kuaminika, toa fonti zinazohitajika, tumia njia kamili za faragha, weka mipaka inayofaa, kagua missingFonts na kila mara ondoa vigeuzi baada ya matumizi.

Kwa kughairi, ushughulikiaji wa kina wa hitilafu na vidhibiti vya ziada vya rasilimali, tazama nyaraka za API ya Node.