Some test text!
Android / Guides / Create a page
There are two options to create a page. First is using a UI component that can create a new page or a new document. Second is an API guide to programmatically create a page.
The AddPageDialogFragment
allows users are able to add new pages to an existing document or create a completely new document. The new pages created can have various types, sizes, and colors.
Add page dialog: dialog for creating new document (left), dialog for adding pages to an existing document (right).
The following properties are available for creating or adding pages:
PageType
The following types of page are supported in this dialog:
Blank
: a page with nothing on it.Lined
: a page with horizontal lines on it.Grid
: a page with a superimposed grid on it.Graph
: a page with Cartesian axes on it.Music
: a page set up with modern staff notation for notating music.PageSize
The following page sizes are supported in this dialog: Custom
, Letter
, Legal
, A4
, A3
, Ledger
.
Custom
option is only available when adding new pages to an
existing PDF document, not when a new document is being created. The page size of Custom
option is specified as here: add pages to an existing documentPageColor
The page background can be set to the following colors: White
, Yellow
, and Blueprint
.
To create a new PDF document, call newInstance()
and override the OnCreateNewDocumentListener
interface. The implementation of onCreateNewDocument(PDFDoc, String)
should create a new file with the given title normalized to a ".pdf" extension.
void addPagesToNewDocument(FragmentManager fragmentManager, final String folder) {
AddPageDialogFragment addPageDialogFragment = AddPageDialogFragment.newInstance();
addPageDialogFragment.setOnCreateNewDocumentListener(new AddPageDialogFragment.OnCreateNewDocumentListener() {
@Override
public void onCreateNewDocument(PDFDoc doc, String title) {
if (doc == null || title == null) {
return;
}
if (!FilenameUtils.isExtension(title, "pdf")) {
title = title + ".pdf";
}
File documentFile = new File(folder, title);
try {
SDFDoc.SaveMode saveModes[] = new SDFDoc.SaveMode[]{SDFDoc.SaveMode.REMOVE_UNUSED};
doc.save(documentFile.getAbsolutePath(), saveModes, null);
} catch (PDFNetException e) {
e.printStackTrace();
} finally {
try {
doc.close();
} catch (PDFNetException e) {
e.printStackTrace();
}
}
}
});
addPageDialogFragment.show(fragmentManager, "add_page_dialog");
}
To add pages to an existing PDF, create a new instance of the add page dialog fragment using newInstance(double, double)
and provide the valid page width and page height arguments. These arguments will be used only if the user selects the Custom
option in the Page
Size dropdown. You also must implement the OnAddNewPagesListener
interface and override onAddNewPages(Page[])
, in which the implementation should add the provided pages to the document.
void addPagesToCurrentDocument(final PDFViewCtrl pdfViewCtrl, final FragmentManager fragmentManager) throws Exception {
final WeakReference<PDFViewCtrl> pdfViewCtrlRef = new WeakReference<>(pdfViewCtrl);
pdfViewCtrl.docLockRead(new PDFViewCtrl.LockRunnable() {
@Override
public void run() throws Exception {
// enable user to add new pages with the same size as the last page of the current document
Page lastPage = pdfViewCtrl.getDoc().getPage(pdfViewCtrl.getDoc().getPageCount());
AddPageDialogFragment addPageDialogFragment = AddPageDialogFragment.newInstance(lastPage.getPageWidth(), lastPage.getPageHeight());
addPageDialogFragment.setOnAddNewPagesListener(new AddPageDialogFragment.OnAddNewPagesListener() {
@Override
public void onAddNewPages(final Page[] pages) {
final PDFViewCtrl pdfViewCtrl = pdfViewCtrlRef.get();
if (pages == null || pdfViewCtrl == null) {
return;
}
final PDFDoc doc = pdfViewCtrl.getDoc();
if (doc == null) {
return;
}
try {
pdfViewCtrl.docLock(true, new PDFViewCtrl.LockRunnable() {
@Override
public void run() throws Exception {
List<Integer> pageList = new ArrayList<>();
for (int i = 1, cnt = pages.length; i <= cnt; i++) {
int newPageNum = pdfViewCtrl.getCurrentPage() + i;
pageList.add(newPageNum);
doc.pageInsert(doc.getPageIterator(newPageNum), pages[i - 1]);
}
// To support undo/redo when a tool manager is attached to the PDFViewCtrl
ToolManager toolManager = (ToolManager) pdfViewCtrl.getToolManager();
if (toolManager != null) {
toolManager.raisePagesAdded(pageList);
}
pdfViewCtrl.updatePageLayout();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
});
addPageDialogFragment.show(fragmentManager, "add_page_dialog");
}
});
}
Trial setup questions? Ask experts on Discord
Need other help? Contact Support
Pricing or product questions? Contact Sales