Ich versuche, ein LinearLayout mithilfe der Android PDFDocument-Klasse in PDF zu konvertieren. Ich pumpe das Layout in eine ViewGroup auf, skaliere die Ansicht auf die Leinwand und zeichne auf die Leinwand. Ich habe Erfolg beim Erstellen der PDF, aber die Schriftgröße wird basierend auf der Geräteauflösung / -dichte und nicht der PDF-Größe gezeichnet. Im Grunde ist die Schriftart am PDF-Dokument sehr groß. Ich glaube, das liegt daran, dass View in Bezug auf die Abmessungen und die Dichte des Gerätebildschirms gezeichnet und dann auf die Leinwand übertragen wird.
Ich habe versucht, die Dimensionen in px und pt zu setzen, aber ich kann es nicht richtig finden. Die Schrift erscheint in der richtigen Größe, wenn die Abmessungen sehr klein sind (1-2dp oder px), aber ich weiß, dass wenn ich dies über verschiedene Geräte durchführe, ich Probleme haben werde.
Was ist der beste Weg, um den Text und die Dimensionen so zu skalieren, dass sie auf der fertigen PDF-Datei die passende Größe haben (ca. 12pt Font bei 300 dpi)? Müsste ich einige Dimensionen aus dem Gerätebildschirm ziehen und dann die Größe aller Ansichten auf der Grundlage eines Verhältnisses zwischen dem Gerät und der PDF-Leinwand ändern?
Mein Kopf ist wund, wenn er ihn von der Wand schlägt.
Danke, Andy
Versuchen Sie canvas.setDensity(72)
, wie es für Bitmaps funktioniert?
Siehe hier .
Oder verwenden Sie 72 für die PrintAttributes.Resolution
?