Bagaimana saya memasang pdfx?
Pasang pakej secara global untuk mendapatkan perintah pdfx. Atau jalankan sekali tanpa memasang.
npm install -g @pdf123/cli
pdfx --versionnpx @pdf123/cli merge a.pdf b.pdf -o merged.pdf
bunx @pdf123/cli merge a.pdf b.pdf -o merged.pdfbun 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.
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.pdfBagaimana 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.
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?
| Perintah | Halaman alat | Fungsi |
|---|---|---|
pdfx merge a.pdf b.pdf -o merged.pdf | Gabungkan | Menggabungkan beberapa PDF menjadi satu |
pdfx split report.pdf --pageNumbers 3,7 -o parts.zip | Asingkan | Membahagikan PDF kepada fail berasingan |
pdfx compress in.pdf -o out/ | Mampatkan | Memampat semula strim PDF untuk mengurangkan saiz |
pdfx watermark in.pdf --watermarkText DRAFT | Tanda air | Menambah tanda air teks atau imej |
pdfx protect in.pdf --password secret -o locked.pdf | Lindungi | Menyulitkan PDF dengan kata laluan |
pdfx unlock locked.pdf --password secret | Buka kunci | Membuang perlindungan kata laluan |
pdfx get-info in.pdf | Maklumat dokumen | Mencetak metadata, kebenaran dan struktur sebagai JSON |
pdfx ocr scan.pdf -o out/ | OCR | Membaca PDF imbasan dan menyimpan Markdown |
pdfx pdf-to-markdown in.pdf -o out/ | PDF ke Markdown | Menukar PDF kepada Markdown |
pdfx rotate in.pdf --angle 90 | Putar | Menukar orientasi halaman sebanyak 90, 180 atau 270 darjah |
pdfx repair broken.pdf | Baiki | Membina 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.
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.
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.pdfLangkah 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.
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.pdfPilihan 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.pdfmenulis 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,
pdfxtidak pernah menggantikan fail yang sedia ada; ia memilih nama baharu.-o file.pdfyang jelas akan menggantikan fail itu. - Nama fail
-oyang sambungannya bercanggah dengan hasil, seperti ZIP daripadasplityang disimpan sebagai.pdf, ditolak dengan kod keluar 2 dancode: output_mismatch. Tiada apa-apa ditulis. - Output yang tidak dapat ditulis ialah ralat penggunaan yang dikesan sebelum apa-apa dimuat naik.
cat in.pdf | pdfx compress - -o - > out.pdfApakah 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.
{ "path": "one.pdf", "contentType": "application/pdf", "bytes": 1040 }{
"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?
| Pilihan | Kesan |
|---|---|
-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 |
--json | Output yang boleh dibaca mesin |
Apakah kod keluar?
| Kod | Maksud |
|---|---|
0 | Berjaya. Alat penapis tanpa padanan juga keluar dengan 0 dan mencetak no match |
1 | Permintaan gagal. Dalam kelompok, sekurang-kurangnya satu fail gagal; yang lain tetap diselesaikan |
2 | Ralat penggunaan. Tiada apa-apa dimuat naik |
130 | Dihentikan 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.
export PDFX_API_BASE=http://localhost:8080
export PDFX_API_KEY=<your-key>
pdfx compress in.pdfBagaimana 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.
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.pdfHalaman berkaitan
- Gambaran keseluruhan pembangun dengan REST API dan pengesahan
- SDK TypeScript, pustaka tempat baris perintah dibina
- Pelayan MCP untuk ejen AI
- Catatan blog "pdfx CLI: One Catalog, Called From Your Terminal" di blog PDF123
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.