โปรแกรมอ่าน PDF ของ Android

ไลบรารีโปรแกรมดู PDF ของ Jetpack ซึ่งได้รับการสนับสนุนจาก API ของเฟรมเวิร์กมีโซลูชันที่พร้อมใช้งานและมีประสิทธิภาพ สำหรับแอปพลิเคชันที่เกี่ยวข้องกับเอกสาร PDF ใน Android

ไลบรารีโปรแกรมอ่าน PDF (androidx.pdf) มี UI โปรแกรมอ่าน PDF ที่ฝังได้ ซึ่งช่วยให้ผู้ใช้ทำสิ่งต่อไปนี้ได้

  • เปิดและดูเอกสาร PDF
  • ค้นหาและเลือกเนื้อหา
  • ซูมและเลื่อน
  • บันทึกคำอธิบายประกอบในเอกสาร
  • โต้ตอบกับ PDF โดยใช้สไตลัส

คุณสร้างประสบการณ์การใช้งาน PDF ที่มีฟีเจอร์ครบถ้วนได้โดยการผสานรวม API ของไลบรารี Jetpack หรือใช้ API ของเฟรมเวิร์กโดยตรง

ไลบรารี PDF ของ Jetpack

ไลบรารี PDF ของ Jetpack มีคลาส PdfViewerFragment ซึ่งแสดงเอกสาร PDF รวมถึง PDF ที่มีการแบ่งหน้า แต่ละหน้าจะ แสดงในมุมมองของตัวเอง PdfViewerFragment แสดงปุ่มการทำงานแบบลอย สำหรับการรองรับคำอธิบายประกอบ และโดยทั่วไปจะมีปุ่มหรือตัวควบคุม UI อื่นๆ ที่ เปิดเมนูค้นหา

ดูวิธีติดตั้งใช้งาน PdfViewerFragment ได้ที่ ติดตั้งใช้งานโปรแกรมอ่าน PDF

Framework API

ไลบรารี Jetpack ใช้ API ของเฟรมเวิร์กเพื่อแยกวิเคราะห์และโหลดเอกสาร 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() — Gets whether the document should be scaled for printing. โปรดคำนึงถึงข้อมูลนี้หากมีการแสดงผลเอกสารสำหรับการพิมพ์และขนาดสื่อเป้าหมายแตกต่างจากขนาดหน้า

API ที่เพิ่มใน Android V

  • PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams) — สร้างอินสแตนซ์ใหม่ รองรับการโหลดไฟล์ PDF ที่มีการป้องกันด้วยรหัสผ่าน
  • getDocumentLinearizedType() — แสดงประเภทที่แปลงเป็นเชิงเส้นของเอกสารสำหรับ PDF ที่มีขนาดน้อยกว่า 1 KB
  • 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) — Returns information about the widget at the given point.
  • getGotoLinks() — รับบุ๊กมาร์กและลิงก์ goto ที่อยู่ในหน้า ของเอกสาร 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 ซึ่งแสดงถึงเนื้อหา ระหว่างขอบเขต 2 รายการ

การใช้งาน API

  • PdfRenderer#write() API จะเขียน PDF ที่โหลดแล้วเวอร์ชันหนึ่งไปยัง ParcelFileDescriptor กรณีการใช้งานมีดังนี้

    • การบันทึกสำเนาเอกสาร PDF หลังจากนำการรักษาความปลอดภัยด้วยรหัสผ่านออก
    • การบันทึกการแก้ไข (คำอธิบายประกอบ การกรอกแบบฟอร์ม ฯลฯ)
  • API ของ PdfRenderer.Page#render() จะแสดงหน้าเว็บหรือบางส่วนของหน้าเว็บ เป็นบิตแมป ในกรณีของการซูม คุณยังใช้ API เพื่อแสดงผลส่วนหนึ่ง ของหน้าเป็นบิตแมปที่มีขนาดที่กำหนดได้ด้วย

  • PdfRenderer.Page API getImageContents(), getLinkContents() และ getTextContents() จะแสดงเนื้อหาที่มีในหน้าเว็บ คุณสามารถใช้ เนื้อหาสำหรับการช่วยเหลือพิเศษและการประกาศของ TalkBack หรือในฟีเจอร์ที่เปิดใช้ AI เช่น การสร้างสรุปของหน้าเว็บ

  • PdfRenderer.Page#selectContent API จะเลือกเนื้อหาที่มีอยู่ในหน้าเว็บ คุณใช้เนื้อหาที่เลือกเพื่อดำเนินการต่างๆ ได้ เช่น

    • โทรออกหากเป็นหมายเลขโทรศัพท์
    • เปิด Maps หากเลือกที่อยู่ไว้
    • คัดลอก
    • แชร์
    • ความคิดเห็น

ความเข้ากันได้

คลาส PdfRendererPreV แสดง API ของ Android V ใน Android R ถึง U (API ระดับ 30-34)

แหล่งข้อมูลเพิ่มเติม

ดูติดตั้งใช้งานโปรแกรมดู PDF เพื่อดูวิธีเพิ่มโปรแกรมดู PDF ลงในแอป