Lewati ke konten utama

PDF4me Python SDK Memulai

Yang pdf4me paket pada PyPI adalah async resmi Python SDK untuk PDF4me REST API. Paket ini berisi 106 fungsi asinkron bertipe yang tersebar di 18 modul yang mencakup konversi, optimasi, penggabungan, pemisahan, pemberian stempel, dan tanda tangan elektronik, OCR, pengisian formulir, ekstraksi, kode batang, ZUGFeRD faktur elektronik, dan AIEkstraksi dokumen berbasis data dari faktur, kwitansi, kontrak, laporan bank, dokumen pajak, dan slip gaji.

Fakta kemasan

BidangNilai
Nama paketpdf4me
Versi saat ini1.0.2 (diterbitkan 14 September 2026)
LisensiMIT
Python mendukung>=3.11 (diuji pada versi 3.11, 3.12, 3.13, 3.14)
Status pengembanganProduksi/Stabil
KerangkaAsyncIO
Sumbergithub.com/pdf4me/pdf4me-clientapi-python
PyPIpypi.org/project/pdf4me

Secara internal, klien tersebut dibuat dengan Microsoft. Kiota di atas httpx[http2], sehingga setiap aksi sepenuhnya bertipe, mengembalikan hasil bertipe, dan menggunakan kembali satu kumpulan koneksi per klien.

Prasyarat

  • Python 3.11 atau yang lebih baru.
  • A PDF4me akun dan API kunci.
  • pip (atau uv, poetry, atau apa pun PyPI-installer yang kompatibel).

Memasang

python -m pip install pdf4me

Memasang pdf4me menarik masuk httpx[http2] dan Microsoft Kiota paket runtime (microsoft-kiota-abstractions, microsoft-kiota-http, dan backend serialisasi JSON, formulir, teks, dan multipart).

Otentikasi

Atur milik Anda API kunci dalam lingkungan:

export PDF4ME_API_KEY="your-api-key"

Contoh-contoh di bawah ini membaca kunci dari variabel tersebut saat runtime. Anda juga dapat meneruskannya secara langsung ke Pdf4meClient(api_key) jika Anda lebih suka memuatnya dari pengelola rahasia, .env berkas, atau sumber lain.

Mulai cepat

Program terkecil yang bermanfaat: buka aplikasi klien, jalankan satu tindakan, tulis hasilnya ke disk.

import asyncio
import os
from pathlib import Path

from pdf4me import Pdf4meClient
from pdf4me.optimize import optimize


async def main() -> None:
api_key = os.environ.get("PDF4ME_API_KEY")
if not api_key:
raise SystemExit("Set PDF4ME_API_KEY before running this example.")

source = Path("input.pdf")
async with Pdf4meClient(api_key) as client:
result = await optimize(
client, source.read_bytes(), doc_name=source.name
)
Path("optimized.pdf").write_bytes(result)
print("Saved optimized.pdf")


if __name__ == "__main__":
asyncio.run(main())

Tiga hal yang perlu diperhatikan:

  1. Satu klien, banyak panggilan. Yang async with Pdf4meClient(...) konteks mengelola hal-hal yang mendasarinya httpx kumpulan koneksi. Gunakan kembali klien yang sama untuk setiap panggilan di dalam main alih-alih membuka satu per tindakan.
  2. Aksi adalah fungsi bebas, bukan metode klien. Impor setiap aksi dari modulnya (from pdf4me.optimize import optimize, from pdf4me.pdf import get_pdf_metadata) dan berikan klien sebagai argumen pertama. Ini menjaga permukaan tetap rata dan memungkinkan Anda untuk menghapus modul yang tidak terpakai di editor Anda.
  3. Byte masuk, byte keluar. Tindakan yang menghasilkan pengembalian file bytesAksi yang menghasilkan metadata mengembalikan kelas data bertipe. Tidak ada penyimpanan sementara di disk, sehingga Anda dapat mengalirkan hasil antar aksi tanpa menyentuh sistem file.

Dua panggilan umum lainnya

Cap sebuah PDF:

from pdf4me.edit import StampAlignX, stamp

stamped = await stamp(client, data, text="DRAFT", align_x=StampAlignX.Center)
Path("stamped.pdf").write_bytes(stamped)

Membaca PDF metadata:

from pdf4me.pdf import get_pdf_metadata

metadata = await get_pdf_metadata(client, data, doc_name="input.pdf")
print(metadata.page_count)

Setiap nilai yang diteruskan sebagai enum (seperti StampAlignX.Center) adalah konstanta bertipe, jadi milik Anda IDE Fitur pelengkapan otomatis nilai-nilai legal dan mypy atau pyright mendeteksi kesalahan ketik saat pengeditan.

Apa yang tersedia di dalam kotak (106 aksi di 18 modul)

ModulTindakanContoh impor
pdf4me.ai_document_extraction14from pdf4me.ai_document_extraction import extract_invoice_data
pdf4me.barcode7from pdf4me.barcode import create_barcode, read_barcodes
pdf4me.convert13from pdf4me.convert import html_to_pdf, url_to_pdf, word_to_pdf
pdf4me.edit7from pdf4me.edit import stamp, add_page_number, add_html_header_footer
pdf4me.excel1from pdf4me.excel import excel_to_pdf
pdf4me.extract8from pdf4me.extract import extract_text, extract_attachments
pdf4me.find_search2from pdf4me.find_search import find_and_replace_text
pdf4me.forms2from pdf4me.forms import fill_pdf_form, get_form_fields
pdf4me.generate6from pdf4me.generate import generate_document_single
pdf4me.image13from pdf4me.image import resize_image, add_watermark_to_image
pdf4me.merge_split5from pdf4me.merge_split import merge_pdfs, split_pdf_by_barcode
pdf4me.optimize1from pdf4me.optimize import optimize
pdf4me.organize5from pdf4me.organize import rotate_pdf, extract_pages
pdf4me.pdf16from pdf4me.pdf import get_pdf_metadata, sign_pdf
pdf4me.pdf4me1from pdf4me.pdf4me import ping
pdf4me.security2from pdf4me.security import protect_document, unlock_pdf
pdf4me.word2from pdf4me.word import add_tracked_changes
pdf4me.zugferd1from pdf4me.zugferd import create_zugferd_invoice

Jalur impor di atas merupakan ilustrasi dari antarmuka modul. Lihat PDF4me REST API referensi untuk daftar parameter lengkap untuk setiap tindakan, dan repositori sumbernya pdf4me/ Lihat pohon paket untuk nama simbol pasti yang diekspor oleh versi Anda.

Ke mana harus pergi selanjutnya?

Penyelesaian Masalah

ModuleNotFoundError: No module named 'pdf4me'. Paket tersebut diinstal di interpreter yang berbeda dari interpreter yang menjalankan skrip Anda. Konfirmasikan dengan python -m pip show pdf4me di dalam lingkungan virtual yang sama. Jika Anda menggunakan pyenv atau condaAktifkan lingkungan terlebih dahulu.

SystemExit: Set PDF4ME_API_KEY before running this example. Variabel lingkungan tidak terlihat oleh proses Anda. Mulai ulang shell Anda setelah ini. export, atau berikan kuncinya secara langsung dengan Pdf4meClient("your-api-key")Di Windows, ingatlah bahwa set Pengaturan di dalam CMD tidak akan tersimpan antar sesi; gunakan setx untuk nilai permanen.

httpx.HTTPStatusError: 401 Unauthorized. Yang API Kunci ada tetapi ditolak. Buat ulang di PDF4me dasbor dan coba lagi.

Panggilan pertama yang lambat setelah periode tidak aktif. HTTP/2 keep-alive direset saat idle. Pertahankan Pdf4meClient Tetap terbuka selama masa berjalannya pekerjaan batch, bukan membuka yang baru untuk setiap file.

asyncio.run() cannot be called from a running event loop. Anda berada di dalam Jupyter atau kerangka kerja yang sudah menjalankan event loop. Gunakan await main() di tingkat teratas sel notebook, atau bungkus kode Anda di titik masuk asinkron milik kerangka kerja itu sendiri.