123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- /**
- * Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
- * <p>
- * THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
- * AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
- * UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
- * This notice may not be removed from this file.
- */
- package com.compdfkit.viewer;
- import android.os.Build;
- import android.os.Bundle;
- import android.view.View;
- import androidx.activity.result.ActivityResultLauncher;
- import com.compdfkit.core.annotation.CPDFTextAnnotation;
- import com.compdfkit.tools.annotation.pdfproperties.pdfnote.CPDFtextAnnotImpl;
- import com.compdfkit.tools.common.basic.activity.CBasicPDFActivity;
- import com.compdfkit.tools.common.utils.CFileUtils;
- import com.compdfkit.tools.common.utils.CPermissionUtil;
- import com.compdfkit.tools.common.utils.activitycontracts.CSelectPDFDocumentResultContract;
- import com.compdfkit.tools.common.utils.task.CExtractAssetFileTask;
- import com.compdfkit.tools.common.utils.window.CPopupMenuWindow;
- import com.compdfkit.tools.common.views.pdfbota.CPDFBOTA;
- import com.compdfkit.tools.common.views.pdfbota.CPDFBotaDialogFragment;
- import com.compdfkit.tools.common.views.pdfbota.CPDFBotaFragmentTabs;
- import com.compdfkit.tools.common.views.pdfview.CPreviewMode;
- import com.compdfkit.tools.viewer.pdfsearch.CSearchResultDialogFragment;
- import com.compdfkit.ui.reader.CPDFReaderView;
- import com.compdfkit.viewer.databinding.ViewerPdfSampleActivityBinding;
- import java.util.ArrayList;
- public class PDFViewerSampleActivity extends CBasicPDFActivity {
- /**
- * assets folder pdf file
- */
- public static final String QUICK_START_GUIDE = "PDF32000_2008.pdf";
- private ViewerPdfSampleActivityBinding binding;
- private CViewerScreenStatusManager screenStatusManager;
- private ActivityResultLauncher<Void> selectDocumentLauncher = registerForActivityResult(new CSelectPDFDocumentResultContract(), uri -> {
- if (uri != null) {
- CFileUtils.takeUriPermission(this, uri);
- binding.pdfView.openPDF(uri);
- }
- });
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- binding = ViewerPdfSampleActivityBinding.inflate(getLayoutInflater());
- setContentView(binding.getRoot());
- binding.pdfView.setViewMode(CPDFReaderView.ViewMode.VIEW);
- screenStatusManager = new CViewerScreenStatusManager(binding);
- initToolbarListener();
- initSearchBar();
- //Extract PDF files from the Android assets folder
- CExtractAssetFileTask.extract(this, QUICK_START_GUIDE, QUICK_START_GUIDE, (filePath) -> {
- binding.pdfView.openPDF(filePath);
- });
- resetContextMenu(binding.pdfView, CPreviewMode.Viewer);
- binding.pdfView.setOnTapMainDocAreaCallback(() -> {
- screenStatusManager.fillScreenChange();
- });
- binding.pdfView.getCPdfReaderView().setMinScaleEnable(false);
- binding.pdfView.getCPdfReaderView().getAnnotImplRegistry().registImpl(CPDFTextAnnotation.class, CPDFtextAnnotImpl.class);
- registerFormHelper(binding.pdfView);
- }
- private void initToolbarListener() {
- binding.pdfToolBar.addMode(CPreviewMode.Viewer);
- binding.pdfToolBar.addAction(R.drawable.tools_ic_thumbnail, v -> {
- CPDFBotaDialogFragment boTaDialogFragment = CPDFBotaDialogFragment.newInstance();
- boTaDialogFragment.initWithPDFView(binding.pdfView);
- CPDFBotaFragmentTabs thumbnailTabs = new CPDFBotaFragmentTabs(CPDFBOTA.THUMBNAIL, getString(R.string.tools_thumbnails));
- ArrayList<CPDFBotaFragmentTabs> tabs = new ArrayList<>();
- tabs.add(thumbnailTabs);
- boTaDialogFragment.setBotaDialogTabs(tabs);
- boTaDialogFragment.show(getSupportFragmentManager(), "boTaDialogFragment");
- });
- binding.pdfToolBar.addAction(R.drawable.tools_ic_search, v -> {
- binding.pdfToolBar.setVisibility(View.GONE);
- binding.pdfSearchToolBar.setVisibility(View.VISIBLE);
- binding.pdfSearchToolBar.showKeyboard();
- });
- binding.pdfToolBar.addAction(R.drawable.tools_ic_bookmark, v -> {
- //Show a fragment of the PDF thumbnail and a dialog fragment of the PDF outline list.
- CPDFBotaDialogFragment boTaDialogFragment = CPDFBotaDialogFragment.newInstance();
- boTaDialogFragment.initWithPDFView(binding.pdfView);
- CPDFBotaFragmentTabs outlineTabs = new CPDFBotaFragmentTabs(CPDFBOTA.OUTLINE, getString(R.string.tools_outlines));
- CPDFBotaFragmentTabs bookmarks = new CPDFBotaFragmentTabs(CPDFBOTA.BOOKMARKS, getString(R.string.tools_bookmarks));
- ArrayList<CPDFBotaFragmentTabs> tabs = new ArrayList<>();
- tabs.add(outlineTabs);
- tabs.add(bookmarks);
- boTaDialogFragment.setBotaDialogTabs(tabs);
- boTaDialogFragment.show(getSupportFragmentManager(), "boTaDialogFragment");
- });
- binding.pdfToolBar.addAction(R.drawable.tools_ic_more, v -> {
- v.setSelected(true);
- //Show the PDF settings dialog fragment
- CPopupMenuWindow menuWindow = new CPopupMenuWindow(this);
- menuWindow.addItem(R.drawable.tools_ic_preview_settings, R.string.tools_view_setting, v1 -> {
- showDisplaySettings(binding.pdfView);
- });
- menuWindow.addItem(R.drawable.tools_ic_document_info, R.string.tools_document_info, v1 -> {
- showDocumentInfo(binding.pdfView);
- });
- menuWindow.addItem(R.drawable.tools_ic_share, R.string.tools_share, v1 -> {
- sharePDF(binding.pdfView);
- });
- menuWindow.addItem(R.drawable.tools_ic_new_file, R.string.tools_open_document, v1 -> {
- if (CPermissionUtil.hasStoragePermissions(this)) {
- selectDocumentLauncher.launch(null);
- } else {
- requestStoragePermissions();
- }
- });
- menuWindow.setOnDismissListener(() -> v.setSelected(false));
- menuWindow.showAsDropDown(v);
- });
- }
- private void requestStoragePermissions(){
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
- CPermissionUtil.openManageAllFileAppSettings(this);
- }else {
- multiplePermissionResultLauncher.launch(STORAGE_PERMISSIONS, result -> {
- if (CPermissionUtil.hasStoragePermissions(this)) {
- selectDocumentLauncher.launch(null);
- }
- });
- }
- }
- private void initSearchBar() {
- binding.pdfSearchToolBar.initWithPDFView(binding.pdfView);
- binding.pdfSearchToolBar.onSearchQueryResults(list -> {
- CSearchResultDialogFragment searchResultDialog = new CSearchResultDialogFragment();
- searchResultDialog.show(getSupportFragmentManager(), "searchResultDialogFragment");
- searchResultDialog.setSearchTextInfos(list);
- searchResultDialog.setOnClickSearchItemListener(clickItem -> {
- binding.pdfView.getCPdfReaderView().setDisplayPageIndex(clickItem.page);
- binding.pdfView.getCPdfReaderView().getTextSearcher().searchBegin(clickItem.page, clickItem.textRangeIndex);
- searchResultDialog.dismiss();
- });
- });
- binding.pdfSearchToolBar.setExitSearchListener(() -> {
- binding.pdfToolBar.setVisibility(View.VISIBLE);
- binding.pdfSearchToolBar.setVisibility(View.GONE);
- binding.pdfSearchToolBar.showKeyboard();
- });
- }
- }
|