Aspose.PDF FOSS for Python תכונות
Aspose.PDF קוד פתוח עבור Python מאפיינים
Aspose.PDF קוד פתוח עבור Python היא ספרייה pure-Python ליצירה, פתיחה, שינוי ושמירת מסמכי PDF. דף זה סוקר את תחומי היכולת המרכזיים ואת המחלקות המשמשות כנקודות הכניסה שלהם. כל תחום מכוסה בעומק בעמוד מדריך המפתחים שלו.
ניהול מסמכים ועמודים
Document הוא האובייקט השורש לכל פעולה. בנה אותו ללא ארגומנטים כדי להתחיל מסמך חדש וריק, או קרא ל-load_from() כדי לקרוא קיים מנתיב, בתים או זרם. document.pages חושף את ה-PageCollection שניתן לשינוי, ו-Page.add_text מניח טקסט ממוקם על דף.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")חילוץ טקסט וחיפוש
PdfExtractor נקשר למסמך ומוציא טקסט עמוד אחרי עמוד. bind_pdf() פותח את המקור, extract_text() מבצע את החילוץ, ו-get_text() מחזיר את התוצאה המצטברת.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()לחיפוש והחלפה ממוקמים, לפי פיסת טקסט, TextFragmentAbsorber חושף עצמים TextFragment תואמים עם text_search_options שמווסת רגישות לאותיות והתאמת ביטויים רגולריים.
המרת דפים לתמונות
Document.save_page_as_image ממיר עמוד אחד ישירות לקובץ PNG או TIFF ברזולוציית DPI שניתן להגדיר. לגישה ברמת נמוכה יותר, Page.render מחזיר RasterizedPage עם נתוני פיקסלים גולמיים דרך get_pixel() ו-pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)טפסים ושדות אינטראקטיביים
AcroForm שדות מנוהלים דרך Document.form, חזות Form. Form.add_text_field() (וְתיבות הסימון, כפתורי הרדיו, הרשימות ותיבות המשולבות המקבילות) יוצר שדה חדש הקשור לעמוד ולריבוע וידג’ט, ומחזיר Field. Form.fields מציג את כל השדות הקיימים כעת במסמך.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")אבטחה, הצפנה וחתימות
Document.encrypt מגן על מסמך באמצעות סיסמת משתמש (נדרשת לפתיחה) וסיסמת בעלים (נדרשת לשינוי הרשאות); decrypt() ו-change_passwords() מנהלים את ההגנה על מסמך שכבר פתוח. is_encrypted מדווח על המצב הנוכחי.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")אימות חתימה דיגיטלית מנוהל על ידי PdfSignature.validate, שמחזיר ValidationResult המתאר את אמון ומצב הביטול, ו-SigningUtils מספק עזרי תעודה וחתימה בפורמט PKCS#7/CAdES.
PDF/A ו-PDF/UA תאימות
Document.validate_pdfa מבצע בדיקת תאימות היוריסטית PDF/A ומחזיר PdfAValidationResult; convert_to_pdfa() מנסה לתקן את המסמך לרמה זו. validate_pdfua() ו-auto_tag() מספקים את בדיקת הנגישות המקבילה ותיוג אוטומטי של עץ המבנה עבור PDF/UA.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")טיפים ושיטות מומלצות
- שנה את האובייקט המוחזר ישירות על ידי
document.pages,page.annotationsאוdocument.form— עריכות שנעשו על עותק נפרד של עמוד או שדה אינן משתקפות כאשר אתה קורא ל-save(). PageCollectionמתועד במערך שמתחיל מאינדקס אפס בקישור Python זה (document.pages[0]הוא העמוד הראשון).- תפוס את
InvalidPasswordExceptionו-PdfParseExceptionלפני ה-AsposePdfExceptionהרחב יותר בעת קריאה ל-load_from()על קלט בלתי מהימן, כך שתוכל להגיב בצורה שונה לסיסמה שגויה מאשר לקובץ פגום. - קרא ל-
document.optimize()או ל-compress_streams()לפניsave()במסמכים שעברו עריכות מרובות כדי להסיר משאבים שלא בשימוש ולהקטין את גודל הקובץ. - העבר
PdfLoadLimitsמוגבל ל-load_from()בעת עיבוד קבצי PDF ממקור בלתי מהימן, כדי להגביל את השימוש בזיכרון ואת מספר האובייקטים במהלך הפירוש.
בעיות נפוצות
| בעיה | סיבה | פתרון |
|---|---|---|
save() מייצר קובץ עם עריכות שלא השתנו | בוצעו עריכות לעמוד, הערה או העתק שדה במקום לאובייקט שהתקבל מ-document.pages, annotations או form | שנה את האובייקט שהוחזר ישירות על ידי אותם האוספים |
InvalidPasswordException על load_from() | המסמך מוגן בסיסמה ולא סופקה סיסמה, או שסופקה סיסמה שגויה | הזן את הסיסמה הנכונה: document.load_from(path, password="...") |
validate_pdfa() עדיין מדווח על שגיאת גופן לאחר convert_to_pdfa() | לא נמצא קובץ גופן תואם בfont_lookup_directory שסופק | הוסף את הגופן החסר לתיקיית החיפוש, או רשום אותו עם FontRepository לפני ההמרה |
| התמונה המיוצרת נראית ריקה | אינדקס דף שגוי נמסר לsave_page_as_image() או לrender() | pages מתחיל מאפס — אשר את האינדקס, ובדוק האם PdfExtractor מחזיר טקסט עבור דף זה בכלל |
השדה שנוסף באמצעות Form.add_text_field() אינו מופיע על העמוד | ריבוע הווידג’ט נמצא מחוץ לmedia_box של העמוד | אשר שהקואורדינטות של הריבוע נמצאות בתוך Page.media_box |
FAQ
האם Aspose.PDF FOSS עבור Python תלוי במנוע PDF מסחרי?
לא. זהו מנוע PDF שנבנה מאפס, pure-Python, שפורסם תחת רישיון MIT. התלויות בזמן ריצה היחידות שלו הן cryptography ו-asn1crypto, המשמשים להצפנה ולאימות חתימות.
האם אני יכול ליצור קובץ PDF מאפס במקום לפתוח קיים?
כן. Document() ללא ארגומנטים יוצר מסמך ריק בזיכרון; קרא ל-document.pages.add() כדי להוסיף דפים לפני השמירה.
לאילו פורמטים רסטריים ניתן לרינדור דף?
Page.render ו-Document.save_page_as_image מייצרים פלט רסטרי PNG או TIFF; ה-RasterizedPage המוחזר גם חושף נתוני פיקסלים גולמיים דרך get_pixel() והמאפיין pixels.
איזו חריגה עליי לתפוס עבור שגיאות ספציפיות לחבילה?
תפוס AsposePdfException. כל שגיאה ספציפית לחבילה — כולל ניתוח (PdfParseException), סיסמה והצפנה (PdfSecurityException, InvalidPasswordException), וכשלי אימות (PdfValidationException) — נובעת ממנה.
לאן אני הולך הלאה?
Getting Started מכסה התקנה, רישוי, ודוגמה ראשונה עובדת. מדריך מפתח זה ממשיך עם נושאי ניהול מסמכים כגון טפסים, קבצים מצורפים משובצים, גילוי גופנים, ויצירת מתווה/סימנייה.
API Reference סיכום
| מחלקה/מתודה | תיאור |
|---|---|
Document | אובייקט השורש — יצירה, טעינה, שמירה וניהול של PDF |
Document.pages | ה-PageCollection הניתן לשינוי של המסמך |
Document.load_from / Document.save | קרא מ-או כתוב לנתיב, בתים או זרם |
Document.encrypt / Document.decrypt | הגן באמצעות סיסמה או הסר את ההגנה |
Document.validate_pdfa / Document.convert_to_pdfa | בדיקת ציות היוריסטית של PDF/A והמרה |
Document.validate_pdfua() / Document.auto_tag | בדיקת נגישות של PDF/UA ותיוג אוטומטי של המבנה |
Page.add_text | הוסף טקסט ממוקם לדף |
Page.render | הצג דף ל-RasterizedPage |
PdfExtractor | חלץ טקסט דף וקבצים מצורפים משובצים |
PdfFileEditor | צור חיבור, פצל, הכנס ומחק דפים בין קבצים |
Form / Field | מכולת AcroForm ושדות טופס בודדים |
PdfSignature / SigningUtils | אימות ויצירת חתימה דיגיטלית |
AsposePdfException | מחלקה בסיסית לכל חריגה ספציפית לחבילה |