ספריית הצפייה ב-PDF של Jetpack, שמגובה על ידי ממשקי API של framework, מציעה פתרון מוכן מראש ויעיל לאפליקציות שקשורות למסמכי PDF ב-Android.
ספריית מציג ה-PDF (androidx.pdf) מספקת ממשק משתמש לצפייה ב-PDF שאפשר להטמיע, ומאפשרת למשתמשים לבצע את הפעולות הבאות:
- פתיחה וצפייה במסמכי PDF
- חיפוש ובחירה של תוכן
- שינוי מרחק התצוגה וגלילה
- שמירת ההערות במסמך
- איך ליצור אינטראקציה עם קובצי PDF באמצעות סטיילוס
כדי ליצור חוויית PDF מלאה, אפשר לשלב את ממשקי ה-API של ספריית Jetpack או להשתמש ישירות בממשקי ה-API של המסגרת.
ספריית Jetpack PDF
ספריית ה-PDF של Jetpack מספקת את המחלקה PdfViewerFragment
שמציגה מסמכי PDF, כולל קובצי PDF עם מספור עמודים. כל דף עובר רינדור בתצוגה משלו. PdfViewerFragment מציג לחצן פעולה צף לתמיכה בהערות, ובדרך כלל כולל לחצן או פקד אחר בממשק המשתמש שפותח תפריט חיפוש.
הוראות להטמעת PdfViewerFragment מפורטות במאמר הטמעה של כלי לצפייה בקובצי PDF.
Framework APIs
ספריית Jetpack משתמשת בממשקי API של framework כדי לנתח ולטעון מסמכי PDF.
PdfRenderer מספק את ממשקי ה-API של המסגרת הבסיסית שקשורים לעיבוד PDF.
לפני Android V (רמת API 35), המחלקות PdfRenderer ו-PdfRenderer.Page סיפקו את ממשקי ה-API לטיפול ב-PDF. המחלקות PdfRenderer ו-PdfRenderer.Page עודכנו ב-Android V עם יכולות מתקדמות של PDF.
PdfRenderer
ממשקי API בגרסאות קודמות ל-Android V
-
getPageCount()— מקבל את מספר הדפים במסמך. -
openPage(index: Int)— פתיחת דף לעיבוד. -
shouldScaleForPrinting()— מחזירה אם צריך לשנות את קנה המידה של המסמך להדפסה. כדאי לקחת את המידע הזה בחשבון אם המסמך מוצג להדפסה וגודל המדיה של היעד שונה מגודל הדף.
ממשקי API שנוספו ב-Android V
PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams)— יוצר מופע חדש. תמיכה בטעינת קובצי PDF שמוגנים באמצעות סיסמה.-
getDocumentLinearizedType()— מחזירה את הסוג הליניארי של מסמך עבור קובצי PDF שגודלם קטן מ-1KB. -
getPdfFormType()— מחזירה את סוג הטופס של קובץ ה-PDF שנטען. -
write(destination: ParcelFileDescriptor, removePasswordProtection: Boolean)— שומר את המצב של המסמך שנטען כרגע בתיאור הקובץ שניתן לכתיבה שמועבר כארגומנט.
PdfRenderer.Page
המחלקת PdfRenderer.Page מייצגת דף במסמך PDF לצורך עיבוד.
ממשקי API בגרסאות קודמות של Android V
-
RENDER_MODE_FOR_DISPLAY— מצב לעיבוד התוכן לתצוגה במסך. -
RENDER_MODE_FOR_PRINT– מצב לעיבוד התוכן להדפסה. -
getIndex()— מקבל את אינדקס הדף. -
getWidth()— מחזירה את רוחב הדף בנקודות (1/72 של אינץ'). -
getHeight()— מחזירה את גובה הדף בנקודות (1/72 של אינץ'). -
render(destination: Bitmap, destClip: Rect?, transform: Matrix?, renderMode: Int)– מעבדת דף למפת סיביות.
ממשקי API שנוספו ב-Android V
-
applyEdit(editRecord: FormEditRecord)– מוסיףFormEditRecordלקובץ ה-PDF. -
getFormWidgetInfos()— מחזירה מידע על כל הווידג'טים של הטפסים בדף. -
getFormWidgetInfos(types: IntArray)— מחזירה מידע על כל הווידג'טים של הטפסים מהסוגים שצוינו בדף. -
getFormWidgetInfoAtIndex(widgetIndex: Int)— מחזירה מידע על הווידג'ט שמזוהה על ידי הארגומנטwidgetIndex. -
fun getFormWidgetInfoAtPosition(x: Int, y: Int)— מחזירה מידע על הווידג'ט בנקודה שצוינה. -
getGotoLinks()— מקבל סימניות וקישורים למעבר לדף שמופיעים בדף של מסמך PDF. -
getImageContents()— מחזירה רשימה שלPdfPageImageContentשנמצאו בדף. -
getLinkContents()— מקבל את הגבולות ואת כתובות ה-URL של כל הקישורים בדף. -
getTextContents()— מחזירה רשימה שלPdfPageTextContentבדף. -
render(destination: Bitmap, destClip: Rect?, transform: Matrix?, params: RenderParams)– מעבדת דף למפת סיביות. -
searchText(query: String)– מחפש בדף את המחרוזת שצוינה ומחזיר את הגבולות של כל ההתאמות. -
selectContent(start: SelectionBoundary, stop: SelectionBoundary)— מחזירהPageSelectionשמייצג את התוכן בין שני הגבולות.
שימוש ב-API
PdfRenderer#write()API כותב גרסה של ה-PDF שנטען אלParcelFileDescriptor. תרחישים לדוגמה:- שמירת עותק של מסמך ה-PDF אחרי הסרת ההגנה באמצעות סיסמה
- שמירת עריכות (הערות, מילוי טפסים וכו')
ממשקי ה-API של
PdfRenderer.Page#render()מעבדים דף או חלק מדף למפת סיביות. במקרה של שינוי מרחק התצוגה, אפשר להשתמש ב-API גם כדי לעבד חלק מהדף למפת סיביות בגודל נתון.ממשקי ה-API
PdfRenderer.Page,getImageContents()ו-getLinkContents()מחזירים את התוכן שזמין בדף.getTextContents()אתם יכולים להשתמש בתוכן לצורך נגישות ולהודעות של TalkBack, או בתכונות מבוססות-AI כמו יצירת סיכום של הדף.ממשק ה-API של
PdfRenderer.Page#selectContentבוחר תוכן שזמין בדף. אפשר להשתמש בתוכן שנבחר לפעולות כמו:- התקשרות, אם מופיע מספר טלפון
- חיפוש במפות, אם נבחרה כתובת
- העתקה
- שיתוף
- תגובות
תאימות
המחלקות PdfRendererPreV חושפות את ממשקי ה-API של Android V ב-Android R עד U (רמות API 30 עד 34).
מקורות מידע נוספים
במאמר הטמעה של כלי לצפייה בקובצי PDF מוסבר איך להוסיף כלי לצפייה בקובצי PDF לאפליקציה.