I integrated your pdf library in my project. It was working fine when viewing pdf and share. But without viewing i want only share pdf.
Childview tableview coming one row in one page.
public void createPDFOverall(final String fileName, final PDFUtil.PDFUtilListener pdfUtilListener) {
// Create parent RelativeLayout
layoutPageParent = new LinearLayout(this.ctx);
LinearLayout.LayoutParams relParentParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutPageParent.setLayoutParams(relParentParam);
final ArrayList<View> bodyViewList = new ArrayList<>();
View header = null;
if (getHeaderView(0) != null) {
header = getHeaderView(0).getView();
header.setTag(PDFHeaderView.class.getSimpleName());
bodyViewList.add(header);
addViewToTempLayout(layoutPageParent, header);
}
if (getBodyViews() != null) {
for (PDFView pdfView : getBodyViews().getChildViewList()) {
View bodyView = pdfView.getView();
bodyView.setTag(PDFBody.class.getSimpleName());
bodyViewList.add(bodyView);
addViewToTempLayout(layoutPageParent, bodyView);
}
}
final Handler handler = new Handler(Looper.getMainLooper());
final View finalHeader = header;
handler.postDelayed(new Runnable() {
@Override
public void run() {
createPDFFromViewList(finalHeader, bodyViewList, fileName, new PDFUtil.PDFUtilListener() {
@Override
public void pdfGenerationSuccess(File savedPDFFile) {
try {
// pagePreviewBitmapList.clear();
// pagePreviewBitmapList.addAll(PDFUtil.pdfToBitmap(savedPDFFile));
// textViewGeneratingPDFHolder.setVisibility(View.GONE);
// layoutPrintPreview.setVisibility(View.VISIBLE);
selectedPreviewPage = 0;
// imageViewPDFPreview.setImageBitmap(pagePreviewBitmapList.get(selectedPreviewPage));
// textViewPageNumber.setText(String.format(Locale.getDefault(), "%d of %d", selectedPreviewPage + 1, pagePreviewBitmapList.size()));
} catch (Exception e) {
e.printStackTrace();
// imageViewPDFPreview.setVisibility(View.GONE);
// textViewPageNumber.setVisibility(View.GONE);
// buttonNextPage.setVisibility(View.GONE);
// buttonPreviousPage.setVisibility(View.GONE);
// textViewPreviewNotAvailable.setVisibility(View.VISIBLE);
}
savedPDFFilec = savedPDFFile;
pdfUtilListener.pdfGenerationSuccess(savedPDFFile);
}
@Override
public void pdfGenerationFailure(Exception exception) {
pdfUtilListener.pdfGenerationFailure(exception);
}
});
}
}, 1000);
}
/**
* Creates a paginated PDF page views from list of views those are already rendered on screen
* (Only rendered views can give height)
*
* @param tempViewList list of views to create pdf views from, view should be already rendered to screen
*/
private void createPDFFromViewList(final View headerView, @NonNull final ArrayList<View> tempViewList, @NonNull final String filename, final PDFUtil.PDFUtilListener pdfUtilListener) {
tempViewList.get(tempViewList.size() - 1).post(new Runnable() {
@Override
public void run() {
// Clean temp folder
final FileManager myOPDFileManager = FileManager.getInstance();
myOPDFileManager.cleanTempFolder(ctx);
((Activity) ctx).runOnUiThread(new Runnable() {
@Override
public void run() {
final List<View> pdfPageViewList = new ArrayList<>();
// LinearLayout currentPDFLayout = (LinearLayout) ((Activity) ctx).getLayoutInflater().inflate(com.tejpratapsingh.pdfcreator.R.layout.item_pdf_page, null);
// currentPDFLayout.setBackgroundColor(ContextCompat.getColor(ctx.getApplicationContext(), com.tejpratapsingh.pdfcreator.R.color.colorWhite));
// pdfPageViewList.add(currentPDFLayout);
int currentPageHeight = 0;
if (headerView != null) {
// If item is a page header, store its height so we can add it to all pages without waiting to render it every time
headerLayoutHeight = headerView.getHeight();
// headerLayoutHeight = 50;
}
int pageIndex = 1;
LinearLayout currentPDFLayout = null;
for (View viewItem : tempViewList) {
if (currentPageHeight + 848 > (ctx.getResources().getDimensionPixelSize(com.tejpratapsingh.pdfcreator.R.dimen.pdf_height)
- (ctx.getResources().getDimensionPixelSize(com.tejpratapsingh.pdfcreator.R.dimen.pdf_margin_vertical) * 2))) {
currentPDFLayout = (LinearLayout) ((Activity) ctx).getLayoutInflater().inflate(com.tejpratapsingh.pdfcreator.R.layout.item_pdf_page, null);
currentPDFLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
currentPDFLayout.setBackgroundColor(ContextCompat.getColor(ctx.getApplicationContext(), com.tejpratapsingh.pdfcreator.R.color.colorWhite));
pdfPageViewList.add(currentPDFLayout);
currentPageHeight = 0;
// Add page header again
if (headerLayoutHeight > 0) {
// If height is available, only then add header
LinearLayout layoutHeader = getHeaderView(pageIndex).getView();
addViewToTempLayout(layoutPageParent, layoutHeader);
currentPageHeight += headerLayoutHeight;
layoutPageParent.removeView(layoutHeader);
currentPDFLayout.addView(layoutHeader);
pageIndex = pageIndex + 1;
}
currentPageHeight += viewItem.getHeight();
if (viewItem.getParent() != null) {
((ViewGroup) viewItem.getParent()).removeView(viewItem); // <- fix
}
currentPDFLayout.addView(viewItem);
}
}
PDFUtil.getInstance().generatePDF(pdfPageViewList, myOPDFileManager.createTempFileWithName(ctx.getApplicationContext(), filename + ".pdf", false).getAbsolutePath(), pdfUtilListener);
}
});
}
});
}
// protected abstract PDFHeaderView getHeaderView(int page);
//
// protected abstract PDFBody getBodyViews();
protected PDFHeaderView getHeaderView(int pageIndex) {
PDFHeaderView headerView = new PDFHeaderView(ctx);
// PDFTextView pdfTextViewPage = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.SMALL);
// pdfTextViewPage.setText(String.format(Locale.getDefault(), "Page: %d", pageIndex + 1));
// pdfTextViewPage.setLayout(new LinearLayout.LayoutParams(
// LinearLayout.LayoutParams.MATCH_PARENT,
// LinearLayout.LayoutParams.MATCH_PARENT, 0));
// pdfTextViewPage.getView().setGravity(Gravity.END);
//
// headerView.addView(pdfTextViewPage);
PDFHorizontalView horizontalViewLogo = new PDFHorizontalView(ctx);
PDFImageView imageView = new PDFImageView(ctx);
LinearLayout.LayoutParams imageLayoutParam = new LinearLayout.LayoutParams(100,
100);
// imageView.setImageScale(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(R.mipmap.ic_launcher);
imageLayoutParam.setMargins(0, 0, 10, 0);
imageView.setLayout(imageLayoutParam);
horizontalViewLogo.addView(imageView);
horizontalViewLogo.getView().setGravity(Gravity.CENTER_HORIZONTAL);
headerView.addView(horizontalViewLogo);
PDFHorizontalView horizontalView = new PDFHorizontalView(ctx);
PDFTextView pdfTextView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.HEADER);
// SpannableString word = new SpannableString(" Transaction Detail Statement\n");
// word.setSpan(new ForegroundColorSpan(Color.DKGRAY), 0, word.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
pdfTextView.setText(" Transaction Detail Statement");
pdfTextView.setTextColor(Color.BLUE);
pdfTextView.setLayout(new LinearLayout.LayoutParams(
0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1));
pdfTextView.getView().setGravity(Gravity.CENTER);
pdfTextView.getView().setTypeface(pdfTextView.getView().getTypeface(), Typeface.BOLD);
horizontalView.addView(pdfTextView);
headerView.addView(horizontalView);
PDFTextView pdfCompanyNameView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.H3);
pdfCompanyNameView.setText("Company Namennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn");
pdfTextView.setLayout(new LinearLayout.LayoutParams(
0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1));
headerView.addView(pdfCompanyNameView);
PDFTextView pdfAddressView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P);
pdfTextView.setLayout(new LinearLayout.LayoutParams(
0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1));
pdfAddressView.setText("Address Line 1\nCity, State - 123456");
headerView.addView(pdfAddressView);
PDFHorizontalView pdfHorizontalViewR4 = new PDFHorizontalView(ctx);
PDFHorizontalView pdfHorizontalViewR5 = new PDFHorizontalView(ctx);
PDFHorizontalView pdfHorizontalViewR6 = new PDFHorizontalView(ctx);
PDFTextView filter1View = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P, false, "");
SpannableString filter1SS = new SpannableString("Filter");
filter1SS.setSpan(new ForegroundColorSpan(Color.WHITE), 0, filter1SS.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
filter1View.setText(filter1SS);
filter1View.getView().setBackgroundColor(ctx.getResources().getColor(R.color.grey_500));
filter1View.setLayout(new LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1));
filter1View.getView().setGravity(Gravity.CENTER);
filter1View.getView().setTypeface(filter1View.getView().getTypeface(), Typeface.NORMAL);
PDFTextView filterSpaceView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P, false, "");
SpannableString spaceSS = new SpannableString(" ");
spaceSS.setSpan(new ForegroundColorSpan(Color.WHITE), 0, spaceSS.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
filterSpaceView.setText(spaceSS);
filterSpaceView.getView().setBackgroundColor(ctx.getResources().getColor(R.color.colorWhite));
filterSpaceView.setLayout(new LinearLayout.LayoutParams(3,
LinearLayout.LayoutParams.WRAP_CONTENT));
filterSpaceView.getView().setGravity(Gravity.CENTER);
filterSpaceView.getView().setTypeface(filterSpaceView.getView().getTypeface(), Typeface.NORMAL);
PDFTextView filter2View = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P, false, "");
SpannableString filter2SS = new SpannableString("Period");
filter2SS.setSpan(new ForegroundColorSpan(Color.WHITE), 0, filter2SS.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
filter2View.setText(filter2SS);
filter2View.getView().setBackgroundColor(ctx.getResources().getColor(R.color.grey_500));
filter2View.setLayout(new LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1));
filter2View.getView().setGravity(Gravity.CENTER);
filter2View.getView().setTypeface(filter2View.getView().getTypeface(), Typeface.NORMAL);
pdfHorizontalViewR4.addView(filter1View);
pdfHorizontalViewR4.addView(filterSpaceView);
pdfHorizontalViewR4.addView(filter2View);
PDFTextView filter3View = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P, false, "");
SpannableString filter3SS = new SpannableString("filter");
filter3SS.setSpan(new ForegroundColorSpan(Color.WHITE), 0, filter3SS.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
filter3View.setText(filter3SS);
filter3View.getView().setBackgroundColor(ctx.getResources().getColor(R.color.grey_500));
filter3View.setLayout(new LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1));
filter3View.getView().setGravity(Gravity.CENTER);
filter3View.getView().setTypeface(filter3View.getView().getTypeface(), Typeface.NORMAL);
PDFTextView filterSpace1View = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P, false, "");
SpannableString space1SS = new SpannableString(" ");
space1SS.setSpan(new ForegroundColorSpan(Color.WHITE), 0, space1SS.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
filterSpace1View.setText(space1SS);
filterSpace1View.getView().setBackgroundColor(ctx.getResources().getColor(R.color.colorWhite));
filterSpace1View.setLayout(new LinearLayout.LayoutParams(3,
LinearLayout.LayoutParams.WRAP_CONTENT));
filterSpace1View.getView().setGravity(Gravity.CENTER);
filterSpace1View.getView().setTypeface(filterSpace1View.getView().getTypeface(), Typeface.NORMAL);
PDFTextView filter4View = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P, false, "");
SpannableString filter4SS = new SpannableString("Period");
filter4SS.setSpan(new ForegroundColorSpan(Color.WHITE), 0, filter4SS.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
filter4View.setText(filter4SS);
filter4View.getView().setBackgroundColor(ctx.getResources().getColor(R.color.grey_500));
filter4View.setLayout(new LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1));
filter4View.getView().setGravity(Gravity.CENTER);
filter4View.getView().setTypeface(filter4View.getView().getTypeface(), Typeface.NORMAL);
pdfHorizontalViewR5.addView(filter3View);
pdfHorizontalViewR5.addView(filterSpace1View);
pdfHorizontalViewR5.addView(filter4View);
String[] textInTable = {"Transaction ID", "Mobile Number", "Cash Back \n(MMK)", "Opening Balance \n(MMK)", "Credit \n(MMK)", "Debit \n(MMK)", "Closing Balance \n(MMK)", "Date & Time"};
for (String title : textInTable) {
PDFTextView headerTitleView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P, false, "");
headerTitleView.setLayout(new LinearLayout.LayoutParams(0,
40, 1));
headerTitleView.setText(title);
headerTitleView.getView().setTextSize(4f);
headerTitleView.setTextColor(ctx.getResources().getColor(R.color.colorWhite));
headerTitleView.getView().setGravity(Gravity.CENTER);
// if (!title.equals("Date & Time"))
// headerTitleView.setBackground(ctx.getResources().getDrawable(R.drawable.right_vertical_line));
// else
headerTitleView.setBackgroundColor(ctx.getResources().getColor(R.color.blue_700));
pdfHorizontalViewR6.addView(headerTitleView);
}
headerView.addView(pdfHorizontalViewR4);
headerView.addView(pdfHorizontalViewR5);
headerView.addView(pdfHorizontalViewR6);
PDFLineSeparatorView lineSeparatorView1 = new PDFLineSeparatorView(ctx).setBackgroundColor(Color.WHITE);
headerView.addView(lineSeparatorView1);
return headerView;
}
protected PDFBody getBodyViews() {
PDFBody pdfBody = new PDFBody();
String[] textInTable = {"1", "2", "3", "4", "5", "6", "7", "8"};
// PDFLineSeparatorView lineSeparatorView2 = new PDFLineSeparatorView(ctx).setBackgroundColor(Color.WHITE);
// pdfBody.addView(lineSeparatorView2);
// PDFTextView pdfTableTitleView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P);
// pdfTableTitleView.setText("");
// pdfBody.addView(pdfTableTitleView);
// String[] textInTableHeader = {"Transaction ID", "Mobile Number", "Cash Back \n(MMK)", "Opening Balance \n(MMK)", "Credit \n(MMK)", "Debit \n(MMK)", "Closing Balance \n(MMK)", "Date & Time"};
PDFTableView.PDFTableRowView tableHeader = new PDFTableView.PDFTableRowView(ctx);
/* for (String s : textInTableHeader) {
PDFTextView pdfTextView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P);
pdfTextView.setText(textInTableHeader[s]);
tableHeader.addToRow(pdfTextView);
}*/
/* for (int kl = 0; kl < textInTableHeader.length; kl++) {
PDFTextView pdfTextView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P);
pdfTextView.setText(textInTableHeader[kl]);
pdfTextView.getView().setGravity(Gravity.CENTER);
tableHeader.addToRow(pdfTextView);
}*/
String[] textInTableContent = {"1771662528", "(+91)9500465992", " áĽáŽá¸ááášááŻááášáĽáŽá¸", "5,536.59", "2", "-", "5,537.59", "Mon, 07-Sep-2020 19:07:19"};
PDFTableView.PDFTableRowView tableRowView = new PDFTableView.PDFTableRowView(ctx);
tableRowView.setLayout(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
30));
PDFTableView tableView = new PDFTableView(ctx, tableHeader, tableRowView);
for (int i = 0; i < 40; i++) {
// Create 10 rows
PDFTableView.PDFTableRowView tableRowView1 = new PDFTableView.PDFTableRowView(ctx);
PDFTableView.PDFTableRowView tableRowView2 = new PDFTableView.PDFTableRowView(ctx);
tableRowView1.setLayout(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
30));
tableRowView2.setLayout(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
1));
tableRowView2.setBackgroundColor(ctx.getResources().getColor(R.color.colorBlack));
/* for (String s : textInTable) {
PDFTextView pdfTextView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P);
pdfTextView.setText("Row " + (i + 2) + ": " + s);
tableRowView.addToRow(pdfTextView);
}*/
for (int j = 0; j < 1; j++) {
for (int k = 0; k < textInTableContent.length; k++) {
PDFTextView pdfTextView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.P);
pdfTextView.setText(i + textInTableContent[k]);
pdfTextView.getView().setGravity(Gravity.CENTER);
tableRowView1.addToRow(pdfTextView);
}
}
tableView.addRow(tableRowView1);
tableView.addRow(tableRowView2);
}
pdfBody.addView(tableView);
PDFLineSeparatorView lineSeparatorView3 = new PDFLineSeparatorView(ctx).setBackgroundColor(Color.BLACK);
pdfBody.addView(lineSeparatorView3);
// PDFTextView pdfIconLicenseView = new PDFTextView(ctx, PDFTextView.PDF_TEXT_SIZE.H3);
// Spanned icon8Link = Html.fromHtml("Icon from <a href='https://icons8.com'>https://icons8.com</a>");
// pdfIconLicenseView.getView().setText(icon8Link);
// pdfBody.addView(pdfIconLicenseView);
return pdfBody;
}