Android PDF görüntüleyici

Çerçeve API'leri tarafından desteklenen Jetpack PDF görüntüleyici kitaplığı, Android'deki PDF belgeleriyle ilgili uygulamalar için hazır ve yüksek performanslı bir çözüm sunar.

PDF görüntüleyici kitaplığı (androidx.pdf), kullanıcılara aşağıdakileri yapma olanağı tanıyan yerleştirilebilir bir PDF görüntüleyici kullanıcı arayüzü sağlar:

  • PDF dokümanlarını açma ve görüntüleme
  • İçerik arama ve seçme
  • Yakınlaştırma ve kaydırma
  • Belge ek açıklamalarını kaydetme
  • Ekran kalemi kullanarak PDF'lerle etkileşimde bulunma

Jetpack kitaplığı API'lerini entegre ederek veya doğrudan çerçeve API'lerini kullanarak tam özellikli bir PDF deneyimi oluşturabilirsiniz.

Jetpack PDF kitaplığı

Jetpack PDF kitaplığı, sayfalandırılmış PDF'ler de dahil olmak üzere PDF belgelerini oluşturan PdfViewerFragment sınıfını sağlar. Her sayfa kendi görünümünde oluşturulur. PdfViewerFragment, ek açıklama desteği için kayan işlem düğmesi gösterir ve genellikle bir arama menüsü açan bir düğme veya başka bir kullanıcı arayüzü kontrolü içerir.

PdfViewerFragment nasıl uygulanacağını öğrenmek için PDF görüntüleyici uygulama başlıklı makaleyi inceleyin.

Framework API'leri

Jetpack kitaplığı, PDF belgelerini ayrıştırmak ve yüklemek için çerçeve API'lerini kullanır. PdfRenderer, PDF oluşturmayla ilgili temel çerçeve API'lerini sağlar.

Android V (API düzeyi 35) öncesinde, PDF işleme için API'ler PdfRenderer ve PdfRenderer.Page sınıfları tarafından sağlanıyordu. PdfRenderer ve PdfRenderer.Page sınıfları, Android V'de gelişmiş PDF özellikleriyle güncellendi.

PdfRenderer

Android V'den önceki API'ler

  • getPageCount(): Dokümandaki sayfa sayısını alır.
  • openPage(index: Int): Oluşturma için bir sayfa açar.
  • shouldScaleForPrinting(): Belgenin yazdırma için ölçeklendirilip ölçeklendirilmeyeceğini alır. Belge yazdırmak için oluşturuluyorsa ve hedef medya boyutu sayfa boyutundan farklıysa bu bilgileri dikkate alın.

Android V'de eklenen API'ler

  • PdfRenderer(fileDescriptor: ParcelFileDescriptor, params: LoadParams) — Yeni bir örnek oluşturur. Şifre korumalı PDF'lerin yüklenmesini destekler.
  • getDocumentLinearizedType(): 1 KB'tan küçük PDF'ler için belgenin doğrusal hale getirilmiş türünü döndürür.
  • getPdfFormType(): Yüklenen PDF'nin form türünü döndürür.
  • write(destination: ParcelFileDescriptor, removePasswordProtection: Boolean): Şu anda yüklenen belgenin durumunu, bağımsız değişken olarak iletilen yazılabilir dosya tanımlayıcısına kaydeder.

PdfRenderer.Page

PdfRenderer.Page sınıfı, oluşturma için bir PDF dokümanı sayfasını temsil eder.

Android V'den önceki API'ler

  • RENDER_MODE_FOR_DISPLAY — İçeriğin ekranda gösterilmesi için oluşturulma modu.
  • RENDER_MODE_FOR_PRINT: İçeriğin yazdırma için oluşturulacağı mod.
  • getIndex(): Sayfa dizinini alır.
  • getWidth(): Sayfa genişliğini puan cinsinden (1/72 inç) alır.
  • getHeight(): Sayfa yüksekliğini puan cinsinden (1/72 inç) alır.
  • render(destination: Bitmap, destClip: Rect?, transform: Matrix?, renderMode: Int): Bir sayfayı bit eşleme olarak oluşturur.

Android V'de eklenen API'ler

  • applyEdit(editRecord: FormEditRecord): PDF'ye FormEditRecord uygular.
  • getFormWidgetInfos(): Sayfadaki tüm form widget'ları hakkında bilgi döndürür.
  • getFormWidgetInfos(types: IntArray): Sayfadaki belirtilen türlerdeki tüm form widget'ları hakkında bilgi döndürür.
  • getFormWidgetInfoAtIndex(widgetIndex: Int)widgetIndex bağımsız değişkeniyle tanımlanan widget hakkında bilgi döndürür.
  • fun getFormWidgetInfoAtPosition(x: Int, y: Int) — Belirtilen noktadaki widget hakkında bilgi döndürür.
  • getGotoLinks(): PDF dokümanının sayfasında bulunan yer işaretlerini ve git bağlantılarını alır.
  • getImageContents(): Sayfada bulunan PdfPageImageContent listesini döndürür.
  • getLinkContents(): Sayfadaki tüm bağlantıların sınırlarını ve URL'lerini alır.
  • getTextContents(): Sayfadaki PdfPageTextContent listesini döndürür.
  • render(destination: Bitmap, destClip: Rect?, transform: Matrix?, params: RenderParams): Bir sayfayı bit eşleme olarak oluşturur.
  • searchText(query: String): Sayfada verilen dizeyi arar ve tüm eşleşmelerin sınırlarını döndürür.
  • selectContent(start: SelectionBoundary, stop: SelectionBoundary) — İki sınır arasındaki içeriği temsil eden bir PageSelection döndürür.

API kullanımı

  • PdfRenderer#write() API, yüklenen PDF'nin bir sürümünü ParcelFileDescriptor'ye yazar. Kullanım alanları şunlardır:

    • PDF belgesinin şifre güvenliği kaldırıldıktan sonra kopyasını kaydetme
    • Düzenlemeleri (notlar, form doldurma vb.) kaydetme
  • PdfRenderer.Page#render() API'leri bir sayfayı veya sayfanın bir bölümünü bit eşleme olarak oluşturur. Yakınlaştırma durumunda API, sayfanın bir bölümünü belirli bir boyutta bit eşleme olarak oluşturmak için de kullanılabilir.

  • PdfRenderer.Page API'leri getImageContents(), getLinkContents() ve getTextContents(), sayfada bulunan içerikleri döndürür. İçeriği, erişilebilirlik ve TalkBack duyuruları için veya sayfayı özetleme gibi yapay zeka destekli özelliklerde kullanabilirsiniz.

  • PdfRenderer.Page#selectContent API, bir sayfada bulunan içeriği seçer. Seçilen içeriği aşağıdaki gibi işlemler için kullanabilirsiniz:

    • Telefon numarası varsa arama
    • Adres seçiliyse Haritalar
    • Kopyala
    • Paylaş
    • Yorumlar

Uyumluluk

PdfRendererPreV sınıfı, Android V API'lerini Android R'den U'ya (API düzeyleri 30-34) sunar.

Ek kaynaklar

Uygulamanıza PDF görüntüleyici eklemeyi öğrenmek için PDF görüntüleyici uygulama başlıklı makaleyi inceleyin.