מבוא
Aspose.PDF FOSS עבור Python היא ספרייה קוד פתוח חדשה לעבודה עם מסמכי PDF מקוד Python. היא משוחררת ברישיון MIT ומיושמת במלואה ב-Python — הפורסר של PDF, כותב, רסטרייזר של דפים, ופרוצדורות ההצפנה הם חלק מהחבילה עצמה, כאשר התלויות הנדרשות מוגבלות ל-cryptography ול-asn1crypto. תוספות אופציונליות מוסיפות תמיכה בתמונות מבוססת Pillow, פענוח גופנים WOFF2 מבוסס Brotli, ו-HarfBuzz לעיצוב טקסט מורכב.
הספרייה מאורגנת סביב המחלקה Document, אשר טוענת קובץ PDF מהנתיב, מבייטים או מזרם בינרי ומחשיפה את העמודים שלה דרך document.pages, PageCollection שתומך באיטרציה, אינדקסציה ופריסה. משם, API מכסה הוספת טקסט ותמונות לעמודים, קריאה ושינוי של אנוטציות, יצירה ומילוי של שדות AcroForm, הצפנה ופענוח של מסמכים, והוצאת טקסט וקבצים מצורפים — הפעולות הדרושות לבניית PDF חדשים או לעבודה עם קיימים.
שחרור זה מיועד למפתחים הזקוקים לעיבוד PDF בתוך בסיס קוד Python ללא רישיון מסחרי: יצירת דוחות וחשבוניות, צינורות קבלת מסמכים, אוטומציה של מילוי טפסים, ושירותים שצריכים להציג עמודי PDF כתמונות או לחלץ טקסט לאינדוקס במערכות משניות. הפרויקט נמצא כעת במצב אלפא, ולכן ה-API והכיסוי של הפיצ’רים עשויים להשתנות לפני השחרור היציב הראשון. נדרש Python 3.11 ומעלה.
מה נכלל
יצירת מסמכים וטעינה
PdfDocument() יוצר PDF ריק; PdfDocument(source, password=..., limits=...) טוען קובץ קיים מהנתיב, מבייטים גולמיים או מזרם בינרי, והוא שווה לקריאה ל-PdfDocument().load_from(source, ...). שניים אלו זורקים שגיאה במצב של קובץ חסר, נתונים שאינם PDF, או סיסמה חסרה במקום להחזיר מסמך ריק. PdfDocument הוא מנהל הקשר, ולכן המשאבים משוחררים אוטומטית כאשר בלוק ה-with מסתיים.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Generated by Aspose.PDF FOSS", x=72, y=720, font_size=14)
document.save("report.pdf")
with Document("report.pdf") as document:
print(f"Pages: {document.page_count}")
print(f"PDF version: {document.version}")
הוספת טקסט ותמונות
Page.add_text ממקמת טקסט Standard‑14 או Unicode משובץ במיקום x/y עם font_size נתון; הפרמטר font יכול להיות FontDescriptor, בתים גולמיים של גופן, או נתיב ל‑גופן TrueType/OpenType עבור Unicode מחוץ לקידודים של Standard‑14. Page.add_image ממקמת XObject של תמונה גולמית, JPEG או PNG על הדף במיקום וגודל שצוינו.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text(
"Quarterly Summary",
x=72,
y=740,
font_size=16,
)
page.add_image(
"chart.png",
x=72,
y=420,
width=300,
height=200,
)
document.save("summary.pdf")
הערות
כל Page חושפת את ההערות שלה דרך page.annotations, AnnotationCollection. add(subtype, rect, contents, title, appearance_normal, properties) יוצר ומכניס הערה מסוג תת-סוג סטנדרטי כגון Square, Circle, Line, Highlight או FreeText, ומחזיר Annotation. קריאה ל-generate_appearance() על ההערה שהוחזרה מניקה זרם הופעה מהגיאומטריה והמאפיינים שלה.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
annotation = page.annotations.add(
"Square",
(100, 600, 300, 680),
"Needs review",
properties={"C": [1, 0, 0]},
)
annotation.generate_appearance()
document.save("annotated.pdf")
שדות טופס
document.form מחזירה את Form של המסמך, אשר יוצרת שדות AcroForm באופן ישיר: add_text_field(), add_checkbox(), add_radio_group(), add_list_box(), add_combo_box() ו-add_push_button() כל אחד מקבל שם שדה, Page או אינדקס עמוד, וריבוע מיקום, ומחזיר Field. הגדרת field.value מעדכנת את ערך השדה, ו-form.flatten() משיקה את המראה של כל שדה לתוכן דף סטטי.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
form = document.form
field = form.add_text_field(
"customer_name",
page,
(72, 700, 300, 720),
)
field.value = "Jane Doe"
form.flatten()
document.save("form.pdf")
הצפנה
Document.encrypt(user_password, owner_password, permissions) מגנה על מסמך באמצעות סיסמת משתמש, סיסמת בעלים, ומסכת ביטים של הרשאות, ומחזירה את אותו Document לצורך שרשור. Document.decrypt(password) מבצעת הפוך של הפעולה, ותכונת is_encrypted מדווחת על המצב הנוכחי. טעינת מסמך מוצפן שוב דורשת להעביר password= לבונה או ל-load_from().
from aspose_pdf import Document
with Document("report.pdf") as document:
document.encrypt(user_password="user-pass", owner_password="owner-pass", permissions=0)
document.save("encrypted.pdf")
with Document("encrypted.pdf", password="user-pass") as document:
print(f"Encrypted: {document.is_encrypted}")
חילוץ טקסט
PdfExtractor קשור למקור עם bind_pdf(), ואז extract_text() מקבל את דפי המסמך. get_text() מחזיר את כל הטקסט המחולץ בבת אחת, בעוד has_next_page_text() ו-get_next_page_text() עוברים על התוצאה דף אחר דף. PdfExtractor הוא גם מנהל הקשר.
from aspose_pdf import PdfExtractor
with PdfExtractor() as extractor:
extractor.bind_pdf("report.pdf")
extractor.extract_text()
while extractor.has_next_page_text():
print(extractor.get_next_page_text())
התחלה מהירה
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text(
"Hello from Aspose.PDF FOSS!",
x=72,
y=720,
font_size=18,
)
document.save("hello.pdf")
with Document("hello.pdf") as document:
print(f"Pages: {document.page_count}")
print(f"PDF version: {document.version}")
פורמטים נתמכים
| פורמט | סיומת | קריאה | כתיבה |
|---|---|---|---|
| ✓ | ✓ | ||
| PNG | .png | — | ✓ |
| TIFF | .tiff | — | ✓ |
PDF הוא פורמט הקלט והפלט המרכזי של הספרייה, נקרא דרך Document/load_from() ונכתב דרך Document.save. PNG ו-TIFF הם פלטי רינדור דפים שנוצרים על ידי Page.render, Page.save_as_image ו-Document.save_page_as_image.
קוד פתוח ורישוי
Aspose.PDF FOSS עבור Python מופץ תחת רישיון MIT, כאשר הקוד המלא זמין ב-github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python. הרישיון מאפשר שימוש מסחרי, שינוי והפצה מחדש ללא הסכם נפרד.