Android: inflar un diseño y escribirlo en PDF produce un PDF en blanco
cuando el usuario selecciona un botón de compartir dentro de una actividad, me gustaría inflar un diseño, rellenarlo y, a continuación, escribir ese diseño en un pdf utilizando la nueva API de impresión.
En mi fragmento tengo
- Compartir archivos pdf a través de mi aplicación en android
- Android: desarrolla una aplicación para revistas
- Los teléfonos Android no abren el flujo de archivos PDF después de la publicación en ASP.Net
- Problema de navegación de páginas PDF
- Abrir archivo de activos pdf en la aplicación
@TargetApi(Build.VERSION_CODES.KITKAT) public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.menu_item_share_context: LayoutInflator inflator = getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View container = inflator.inflate(R.layout.person_share, null, false); TextView name = (TextView)topContainer.findViewById(R.id.person_name); name.setText("Test Name"); PdfDocument document = new PdfDocument(); PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(612, 792, 1).create() PdfDocument.Page page = document.startPage(pageInfo) container.draw(page.getCanvas()); document.finishPage(page) // write pdf ...
Desafortunadamente, esto genera un documento pdf en blanco. Sin embargo, cuando uso una vista que ya existe en la pantalla (inflado en onCreateView (..)), se muestra en el pdf como se esperaba.
Agradecería cualquier ayuda.
- No se puede abrir el archivo PDF en una aplicación externa
- Cómo abrir un archivo PDF local en PhoneGap (android)
- El método getInstance (byte ) no está definido para el tipo Document .. Android
- Abra un archivo pdf dentro de una vista web.
- Cómo obtener la actividad de vista Web para desaparecer con PDF Link Action_view
- Mupdf: cómo abrir el archivo pdf con el método openBuffer?
- Mostrar archivo PDF en Android WebView utilizando mozilla pdf.js Nivel de API Android inferior a 19
- Cómo disparar Haga clic en el evento del archivo pdf Índice de capítulos
Si mi teoría es correcta – que su diseño inflado todavía tiene un ancho y una altura de cero – puede llamar a measure()
y layout()
para tamaño manual y posición de cosas:
root.measure(800, 480); root.layout(0, 0, 800, 480);
Dada una View
denominada root
, esta tendrá (y sus hijos, si los hay) llenar un espacio de 800 píxeles de ancho por 480 píxeles de alto (por ejemplo, un dispositivo WVGA, paisaje, pantalla completa). En su caso, debe ser capaz de llamar a getWidth()
y getHeight()
en el Canvas
para determinar los tamaños a utilizar para measure()
y layout()
.
FWIW, personalmente, generaría HTML y usaría eso para la base de la impresión, más bien que un archivo de la disposición. Esa es una de las técnicas que demuestro en este proyecto de ejemplo .
- ¿Dónde debo almacenar números de tarjeta de crédito en Android?
- Error al crear JVM: código de error -6, JVM Path: C: \ <jre path>