Langkau ke kandungan utama
PPDF123

pdfx: baris perintah PDF123

pdfx ialah baris perintah PDF123, diterbitkan di npm sebagai @pdf123/cli. Ia menjalankan mana-mana daripada 95 alat PDF, seperti gabung, pisah, mampat dan OCR, pada fail dalam cakera anda dengan menghantarnya ke API PDF123 atau pelayan anda sendiri dan menyimpan hasilnya secara setempat.

@pdf123/cliNode 20.3 atau lebih baharu, atau Bun

Pasang

npm install -g @pdf123/cli
Dalam halaman ini

Bagaimana saya memasang pdfx?

Pasang pakej secara global untuk mendapatkan perintah pdfx. Atau jalankan sekali tanpa memasang.

Installbash
npm install -g @pdf123/cli
pdfx --version
Run without installingbash
npx @pdf123/cli merge a.pdf b.pdf -o merged.pdf
bunx @pdf123/cli merge a.pdf b.pdf -o merged.pdf

bun add -g @pdf123/cli dan pnpm add -g @pdf123/cli juga berfungsi. Tiada apa-apa lagi yang perlu dipasang.

Bagaimana saya bermula?

Enam perintah ini menunjukkan corak yang lazim.

Quick startbash
pdfx list                                          # every tool; --category security for one category
pdfx describe watermark                            # a tool's fields and defaults
pdfx merge a.pdf b.pdf -o merged.pdf
pdfx compress *.pdf -o compressed/                 # several files: one result per file
pdfx watermark in.pdf --watermarkText DRAFT
pdfx pipeline a.pdf b.pdf --step merge --step compress -o out.pdf

Bagaimana saya menjalankan mana-mana alat?

Argumen pertama ialah id alat. Fail input dan pilihan alat mengikutinya. Setiap pilihan alat ialah bendera, ditulis sebagai nama medan API (--pageNumbers) atau dalam kebab case (--page-numbers). Nombor negatif boleh mengikut benderanya selepas ruang, seperti --rotation -90, atau selepas tanda sama.

Syntaxtext
pdfx <tool> [files...] [--<field> <value>]...

Gunakan pdfx list untuk melihat alat. Ia menerima --category atau --group, dan --query dengan perkataan carian. Gunakan pdfx describe <tool> untuk melihat titik akhir, input yang diterima, sama ada alat berjalan sebagai kelompok, dan setiap medan dengan nilai lalai serta nilai yang dibenarkan. Id alat yang tidak dikenali mendapat cadangan, dan id yang tersalah taip keluar dengan kod 2.

Perintah manakah dipadankan dengan halaman alat mana?

PerintahHalaman alatFungsi
pdfx merge a.pdf b.pdf -o merged.pdfGabungkanMenggabungkan beberapa PDF menjadi satu
pdfx split report.pdf --pageNumbers 3,7 -o parts.zipAsingkanMembahagikan PDF kepada fail berasingan
pdfx compress in.pdf -o out/MampatkanMemampat semula strim PDF untuk mengurangkan saiz
pdfx watermark in.pdf --watermarkText DRAFTTanda airMenambah tanda air teks atau imej
pdfx protect in.pdf --password secret -o locked.pdfLindungiMenyulitkan PDF dengan kata laluan
pdfx unlock locked.pdf --password secretBuka kunciMembuang perlindungan kata laluan
pdfx get-info in.pdfMaklumat dokumenMencetak metadata, kebenaran dan struktur sebagai JSON
pdfx ocr scan.pdf -o out/OCRMembaca PDF imbasan dan menyimpan Markdown
pdfx pdf-to-markdown in.pdf -o out/PDF ke MarkdownMenukar PDF kepada Markdown
pdfx rotate in.pdf --angle 90PutarMenukar orientasi halaman sebanyak 90, 180 atau 270 darjah
pdfx repair broken.pdfBaikiMembina semula struktur PDF yang rosak

Bagaimana saya memproses banyak fail sekali gus?

Berikan beberapa fail kepada alat satu fail dan pdfx menjalankan kelompok. Gunakan -o dengan direktori yang berakhir dengan garis condong. Alat dijalankan sekali bagi setiap fail, dua fail pada satu masa secara lalai. Ubahnya dengan --concurrency.

Batchbash
pdfx compress *.pdf -o compressed/
pdfx protect *.pdf --password secret --concurrency 4 -o locked/

pdfx mencetak satu baris, input -> saved, apabila setiap fail selesai. Fail yang gagal dilaporkan pada ralat piawai dan fail lain tetap diselesaikan. Tekan Ctrl-C sekali untuk membatalkan permintaan yang sedang berjalan; fail yang sudah disimpan dikekalkan. Ctrl-C kedua keluar serta-merta dengan kod 130. Dengan --idempotency-key k, setiap fail menghantar k:<index>, dan ulangan permintaan yang sama memainkan semula hasil pertama selama 24 jam.

Kelompok bagi alat yang memulangkan laporan, seperti get-info, tidak menulis fail tanpa -o. Ia mencetak laporan yang dikunci mengikut fail input.

Bagaimana saya merangkaikan alat dalam satu permintaan?

pdfx pipeline menjalankan beberapa alat dalam satu permintaan. Ulang --step untuk setiap alat. Untuk menetapkan pilihan, hantar tatasusunan JSON dengan --steps.

Pipelinesbash
pdfx pipeline a.pdf b.pdf --step merge --step compress -o out.pdf
pdfx pipeline in.pdf --steps '[{"tool":"watermark","params":{"watermarkText":"DRAFT"}},{"tool":"compress"}]' -o out.pdf

Langkah tidak boleh menggunakan alat yang memerlukan fail kedua.

Bagaimana saya membuka PDF yang dilindungi kata laluan?

--input-password membuka setiap input yang disulitkan terlebih dahulu. --password-for <file>=<password> menetapkan kata laluan satu fail. Ia boleh diulang, dan * sebagai nama fail meliputi yang selebihnya. Ini sesuai untuk kelompok yang mencampurkan fail berkunci dan terbuka. Bagi merge dan images-to-pdf, setiap fail yang dinamakan dibuka kuncinya secara berasingan sebelum alat dijalankan.

Passwordsbash
pdfx compress locked.pdf --input-password secret -o out.pdf
pdfx compress report.pdf --password-for report.pdf=secret -o out.pdf
pdfx merge a.pdf b.pdf --password-for a.pdf=secret -o merged.pdf

Pilihan yang sama berfungsi dalam saluran paip. Untuk membuang perlindungan secara kekal, gunakan alat Buka kunci dengan pilihan --password miliknya.

Bagaimana input dan output berfungsi?

  • Input - membaca input piawai, sekali bagi setiap larian. -o - menulis hasil ke output piawai.
  • -o file.pdf menulis fail itu. -o dir/ menulis ke dalam direktori. Direktori yang belum wujud memerlukan garis condong di hujung, kerana nama tanpa garis condong ditulis sebagai fail.
  • Tanpa -o, hasil dihantar ke direktori semasa dengan nama fail daripada pelayan.
  • Ke dalam direktori, pdfx tidak pernah menggantikan fail yang sedia ada; ia memilih nama baharu. -o file.pdf yang jelas akan menggantikan fail itu.
  • Nama fail -o yang sambungannya bercanggah dengan hasil, seperti ZIP daripada split yang disimpan sebagai .pdf, ditolak dengan kod keluar 2 dan code: output_mismatch. Tiada apa-apa ditulis.
  • Output yang tidak dapat ditulis ialah ralat penggunaan yang dikesan sebelum apa-apa dimuat naik.
Shell pipebash
cat in.pdf | pdfx compress - -o - > out.pdf

Apakah yang dicetak oleh --json?

Bagi hasil yang disimpan, --json mencetak laluan, jenis kandungan dan saiz. Alat yang memulangkan laporan mencetak laporan itu sendiri. Kelompok mencetak satu laporan dengan status bagi setiap fail.

Single resultjson
{ "path": "one.pdf", "contentType": "application/pdf", "bytes": 1040 }
Batch reportjson
{
  "processed": 2,
  "unmatched": 0,
  "failed": 0,
  "files": [
    { "input": "/abs/a.pdf", "ok": true, "path": "comp/a.pdf", "contentType": "application/pdf", "bytes": 1040 }
  ]
}

Fail yang gagal mempunyai error dan reason sebagai ganti path dan bytes. Alat penapis tanpa padanan mencetak { "matched": false }. pdfx list --json mencetak baris dengan id, category, group, name, description, returns, files dan filter.

Pilihan manakah yang terpakai untuk setiap alat?

PilihanKesan
-o, --output <path>Fail untuk ditulis, atau direktori untuk menulis ke dalamnya. Lalai ialah direktori semasa. - ialah output piawai
--api-base <url>Asal API. Pemboleh ubah persekitaran PDFX_API_BASE, lalai https://pdf123.xyz
--api-key <key>Dihantar sebagai X-API-KEY. Pemboleh ubah persekitaran PDFX_API_KEY. Pilihan
--input-password <pw>Membuka setiap input yang dilindungi kata laluan terlebih dahulu
--password-for <file>=<pw>Kata laluan untuk satu fail. Boleh diulang
--concurrency <n>Bilangan fail kelompok yang diproses serentak. Lalai 2
--timeout <ms>Had masa bagi setiap permintaan. Lalai 300000
--idempotency-key <k>Memainkan semula hasil pertama selama 24 jam
--jsonOutput yang boleh dibaca mesin

Apakah kod keluar?

KodMaksud
0Berjaya. Alat penapis tanpa padanan juga keluar dengan 0 dan mencetak no match
1Permintaan gagal. Dalam kelompok, sekurang-kurangnya satu fail gagal; yang lain tetap diselesaikan
2Ralat penggunaan. Tiada apa-apa dimuat naik
130Dihentikan dengan Ctrl-C. Permintaan yang sedang berjalan dibatalkan

Kegagalan mencetak baris reason:, code: dan hint: apabila pelayan membekalkannya, supaya skrip boleh bercabang tanpa memadankan teks. Alat yang tiada apa-apa untuk dipulangkan, seperti pdf-to-csv pada PDF tanpa jadual, keluar dengan 1 dan code: no_content dan bukannya menulis fail kosong. Kod disenaraikan di Kod ralat.

Bagaimana saya menghalakan pdfx ke pelayan sendiri?

Tetapkan PDFX_API_BASE, atau hantar --api-base, kepada alamat pdfx-server yang dihoskan sendiri. Tambah PDFX_API_KEY jika pelayan anda memerlukan kunci. Lihat Self-host.

Self-hosted serverbash
export PDFX_API_BASE=http://localhost:8080
export PDFX_API_KEY=<your-key>
pdfx compress in.pdf

Bagaimana saya menjalankan titik akhir yang tidak dikenali CLI?

pdfx call menghantar permintaan mentah kepada id operasi atau laluan /api/.... Gunakan --field name=value untuk medan borang dan --file field=path untuk fail tambahan. Ia menghantar tepat satu permintaan dan tidak mengesahkan apa-apa secara setempat, jadi kata laluan dan kelompok ditolak.

Raw requestsbash
pdfx call general/merge-pdfs a.pdf b.pdf -o merged.pdf
pdfx call /api/v1/misc/flatten in.pdf --field flattenOnlyForms=true -o flat.pdf

FAQ

Adakah pdfx berfungsi di luar talian?

Tidak. pdfx memuat naik setiap fail ke API PDF123 atau ke pelayan anda sendiri dan menyimpan hasilnya secara setempat, jadi asas API mesti boleh dicapai.

Adakah pdfx memerlukan kunci API?

Tidak. Penggunaan tanpa nama berfungsi. Tetapkan PDFX_API_KEY atau hantar --api-key jika pelayan anda memerlukannya. Kunci dihantar sebagai pengepala X-API-KEY.

Versi Node manakah yang diperlukan oleh pdfx?

Node 20.3 atau lebih baharu, atau Bun.

Adakah pdfx akan menimpa fail saya?

Tidak apabila ia menulis ke dalam direktori: fail yang sedia ada tidak pernah diganti. Jika anda menamakan sendiri fail output dengan -o file.pdf, fail itu diganti, jadi pilih nama baharu apabila anda mahu menyimpan fail asal.

Apakah yang berlaku apabila alat penapis tidak menemui padanan?

Alat penapis, yang id-nya bermula dengan filter-, meneruskan fail apabila syaratnya dipenuhi. Apabila tidak, pdfx mencetak no match dan keluar dengan kod 0. Dalam kelompok, fail sedemikian dikira sebagai tidak berpadanan, bukan gagal.