El Arsenal de Android – PDF

Paso 2. Agrega la dependencia

dependencies
 {
         implementation 'com.github.tejpratap46:PDFCreatorAndroid:LATEST_RELEASE'

 }

intentalo

Concepto

  • Android tiene la capacidad de imprimir documentos en PDF, esta biblioteca simplifica la API para generar PDF fácilmente.
  • En el nivel básico, la API representa las vistas en PDF. Para crear un PDF con páginas necesitamos enviar las vistas exactamente a la altura de una página, cualquier vista es más grande que la que se recortará.
  • Esta biblioteca crea páginas agregando vistas a una vista principal hasta que la siguiente vista está a punto de pasar a la página actual. Si la siguiente vista excede la página actual, esa vista se agregará a la nueva página.

Implementación

  1. El creador de PDF usa vistas que se pueden renderizar, por lo que necesitamos extender una tarea para crear tareas.
  2. Crea un vacío Activity sin ningún diseño y extenderlo con PDFCreatorActivity. No establecer uso setContentView(int resourceId) dentro de su negocio creado.
  3. Hay 3 métodos abstractos que debe anular.
    1. getHeaderView()
      • Este será el encabezado del PDF y se agregará a cada página. (Utilice PDFHeaderView si)
    2. getBodyViews()
      • Esto devolverá un PDFBody que consiste en una lista de vistas que se pueden dividir en páginas.
    3. onNextClicked()
      • Este es un método de manejo para obtener la devolución de llamada cuando el usuario toca Siguiente.
  4. En onCreate de su negocio, necesita llamar createPDF(String fileName, PDFUtilListener listener). Generará PDF y le dará un archivo PDF en devolución de llamada (si tiene éxito). Después de recibir la devolución de llamada, puede cerrar la empresa y hacer lo que sea necesario con el PDF.
  5. Esta biblioteca también proporciona PDFUtil.pdfToBitmap(File pdfFile) método para obtener la vista previa de la imagen de todas las páginas del archivo PDF separado.

Vistas disponibles

  1. TextView -> PDFTextView
  2. VerticalView -> PDFVerticalView
  3. HorizontalView -> PDFHorizontalView
  4. ImageView -> PDFImageView
  5. TableView -> PDFTableView
  6. Saperator -> PDFLineSaperatorView

Avanzado

Si no puede encontrar algunos métodos de View Clase adentro PDFView clase que puede ver llamando pdfView.getView() en cualquier clase PDFView disponible y luego actualiza las propiedades de la vista.

Por ejemplo Android TextView admite la configuración de html en TextView que no está disponible en PDFTextView, para hacer esto, vea el ejemplo a continuación:

PDFTextView pdfIconLicenseView =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.H3
);
Spanned icon8Link =Html.fromHtml("Icon from <a href="https://icons8.com">https://icons8.com</a>"
);
pdfIconLicenseView.getView().setText(icon8Link);

Otro ejemplo, Establecer gravedad para mostrar

pdfIconLicenseView.getView().setGravity(Gravity.CENTER_VERTICAL);

Avanzar, proceder con precaución ⚠️

Esta es una función inacabada, solo se usa para casos básicos [After using this feature you cannot add child view to your custom view] . Si desea agregar una vista personalizada al PDF (como un gráfico o un ícono), simplemente puede crear la suya propia así:

PDFVerticalView verticalView =newPDFVerticalView
(context);
verticalView.setView(View view);

Ejemplo:

Se crea un ejemplo, mire PdfCreatorActivity de la aplicación.

PANTALLAS

PDFVerticalView verticalView =newPDFVerticalView
(getApplicationContext());
PDFTextView pdfTextView1 =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
)
    .setText("TextView1"
);
verticalView.
addView(pdfTextView1)
PDFTextView pdfTextView2 =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
)
    .setText("TextView2"
);
verticalView.
addView(pdfTextView2)
// Get View
LinearLayout layout = verticalView.getView();
PDFHorizontalView horizontalView =newPDFHorizontalView
(getApplicationContext());
PDFTextView pdfTextView1 =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
)
    .setText("TextView1"
);
horizontalView.
addView(pdfTextView1)
PDFTextView pdfTextView2 =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
)
    .setText("TextView2"
);
horizontalView.
addView(pdfTextView2)
// Get View
LinearLayout layout = horizontalView.getView();
PDFTextView pdfTextView1 =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
)
    .setText("TextView1"
);
PDFTextView pdfTextView2 =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
)
    .setText(newSpanningString("TextView2"
));
// Get View
TextView textView = pdfTextView2.getView();
PDFImageView pdfImageView =newPDFImageView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
)
    .setImageResource(R.drawable.
ic_example);
// Get View
ImageView imageView = pdfImageView.getView();
String[] textInTable = {"1", "2", "3", "4"

};

// Create table column headers
PDFTableView.PDFTableRowView tableHeader =newPDFTableView.PDFTableRowView
(getApplicationContext());
for (String s :
 textInTable) {
    PDFTextView pdfTextView =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
);
    pdfTextView.setText("Header Title: "+
 s);
    tableHeader.

addToRow(pdfTextView);
}
// Create first row
PDFTableView.PDFTableRowView tableRowView1 =newPDFTableView.PDFTableRowView
(getApplicationContext());
for (String s :
 textInTable) {
    PDFTextView pdfTextView =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
);
    pdfTextView.setText("Row 1 : "+
 s);
    tableRowView1.


addToRow(pdfTextView);
}

// PDFTableView takes table header and first row at once because if page ends after adding header then first row will be on next page. To avoid confusion to user, table header and first row is printed together.
PDFTableView tableView =newPDFTableView
(getApplicationContext(), tableHeader, tableRowView1);
for (int i =0; i <10; i++
) {
    // Create 10 rows and add to table.
PDFTableView.PDFTableRowView tableRowView =newPDFTableView.PDFTableRowView
(getApplicationContext());
    for (String s :
 textInTable) {
 PDFTextView pdfTextView =newPDFTextView(getApplicationContext(), PDFTextView.PDF_TEXT_SIZE.P
);
 pdfTextView.setText("Row "+ (i +1) +": "+
 s);
 tableRowView.

addToRow(pdfTextView);
    }
    tableView.
addRow(tableRowView);
}
PDFLineSeparatorView lineSeparatorWhite =newPDFLineSeparatorView(getApplicationContext()).setBackgroundColor(Color.WHITE
);
PDFLineSeparatorView lineSeparatorBlack =newPDFLineSeparatorView(getApplicationContext()).setBackgroundColor(Color.BLACK
);
// Get View
View separatorView = lineSeparatorWhite.getView();


.

About MiReal

Compruebe también

Implementación de componentes y lineamientos de Material Design – ¡Googlifica tu aplicación!

Material Design es un lenguaje de diseño creado por Google para alentar a los desarrolladores …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *