Ich verwende PdfRenderer
über api 21, um PDF in meiner App anzuzeigen, und mir ist aufgefallen, dass die Qualität der Seiten sehr schlecht ist.
Ich folgte auch google sample um PdfRenderer
zu benutzen und so erstelle ich Bitmap
für page:
Ich habe ARGB_8888
verwendet, weil es meines Wissens die beste Qualität ist, Bitmaps anzuzeigen.
Mache ich etwas falsch?
BEARBEITEN
Das ist der große Unterschied zwischen der PdfRenderer-Klasse und einem klassischen Pdf-Reader:
ARGB_8888 'bezieht sich nur auf die Farbqualität, aber die Druck- / Anzeigequalität hängt von der Auflösung ab (wie viele Punkte pro Zoll Sie bei der Anzeige auf dem Bildschirm haben).
Wenn Sie beispielsweise 400 DPI-Bildschirm (400 Punkte pro Zoll) haben und PDF mit dieser Qualität anzeigen möchten, sollten Sie die Bitmap über Bitmap.createBitmap () rendern, die Pixel als ihre Größe akzeptiert:
%Vor%wo:
getResources().getDisplayMetrics().densityDpi
ist die Ziel-DPI-Auflösung mCurrentPage.getWidth()
gibt die Breite in Postscript-Punkten zurück, wobei jedes pt
1/72 Zoll ist. Wenn wir also # 2 mit 72 tauchen, erhalten wir Zoll und multiplizieren mit DPI Pixel. Mit anderen Worten, um die Qualität des Druckgeräts des Displays anzupassen, sollten Sie die Größe des als Standard gerenderten Bildes erhöhen. Die PDF-Auflösung beträgt 72 DPI. Bitte überprüfen Sie auch diesen Beitrag ?
Ich bin ein bisschen spät. Die markierte Antwort hat mir nicht weitergeholfen, da die Bitmap zu groß wurde und somit nicht gerendert werden konnte. Ich habe den ursprünglichen Beitrag gefunden, weil ich genau das gleiche Problem hatte, vielleicht hilft diese Antwort anderen in meiner Situation.
Ich suchte herum, um zu sehen, ob jemand eine saubere Lösung zum Skalieren der Bitmap hatte, während das Verhältnis beibehalten wurde. Ich bin auf diese Seite gestoßen:
Es ist kein kompliziertes Zeug, wirklich. Ich brauchte nur zwei zusätzliche Codezeilen:
%Vor%Ich habe ähnliche helper / util-Klassen hinzugefügt, wie die Site vorschlägt (in der Praxis sind es also mehr als zwei Zeilen;)). Die Höhe kommt von
%Vor%Die Skalierung teilt die Gerätehöhe einfach mit der ursprünglichen Bitmap-Höhe, um einen Faktor zu erhalten, der wiederum mit der ursprünglichen Bitmap-Breite multipliziert wird, um die skalierte Breite zu finden.
Das funktioniert perfekt auf meinem Nexus 5. Ich konnte das nicht auf mehreren Geräten testen, aber es scheint wie eine feste Lösung.
Sie können versuchen, dieses Beispiel mit PDFViewer
Klasse, nicht sicher über die Qualität, weil ich es nie benutzt habe, aber es ist immer noch ein Versuch:)
Tags und Links android pdf bitmap pdfrenderer