interactive/starter_portfolio updated
Package multiple PDF and other documents into a PDF portfolio.
Download Java Code Switch to PHP Code Show Output
/*
* PDF portfolio starter:
* Package multiple PDF and other documents into a PDF portfolio.
* The documents in the portfolio will be assigned predefined
* and custom metadata fields; for the custom fields a schema description
* is created.
*
* Required software: PDFlib/PDFlib+PDI/PPS 10
* Required data: PDF and other input documents
*/
package com.pdflib.cookbook.pdflib.interactive;
import com.pdflib.pdflib;
import com.pdflib.PDFlibException;
class starter_portfolio {
public static void main(String argv[]) {
/* This is where the data files are. Adjust as necessary. */
final String searchpath = "../input";
String optlist;
int i, folder;
pdflib p = null;
int exitcode = 0;
class document {
document(String filename, String description, String status, int id) {
this.filename = filename;
this.description = description;
this.status = status;
this.id = id;
}
String filename;
String description;
String status;
int id;
}
/* The documents for the Portfolio along with description and metadata */
document root_folder_docs[] = {
new document("nesrin.jpg", "Zabrisky point", "archived", 300),
new document("markup_annotations_input.pdf",
"PDF sample with markup annotations",
"published", 101),
};
document datasheet_docs[] = {
new document("PLOP-datasheet.pdf",
"PDF Linearization, Optimization, Protection", "published",
103),
new document("pCOS-datasheet.pdf",
"PDF Information Retrieval Tool", "published", 104) };
try {
p = new pdflib();
p.set_option("searchpath={" + searchpath + "}");
/* This means we must check return values of load_font() etc. */
p.set_option("errorpolicy=return");
if (p.begin_document("starter_portfolio.pdf", "") == -1) {
throw new Exception("Error: " + p.get_errmsg());
}
p.set_info("Creator", "PDFlib starter sample");
p.set_info("Title", "starter_portfolio");
/*
* Insert two files in the root folder along with their description
* and the following custom fields: status string describing the
* document status id numerical identifier, prefixed with "PHX"
*/
for (i = 0; i < root_folder_docs.length; i++) {
optlist = "description={" + root_folder_docs[i].description
+ "} " + "fieldlist={ {key=status value="
+ root_folder_docs[i].status + "} {key=id value="
+ root_folder_docs[i].id + " prefix=PHX type=text} }";
/* -1 means root folder */
p.add_portfolio_file(-1, root_folder_docs[i].filename, optlist);
}
/* Create the "datasheets" folder in the root folder */
folder = p.add_portfolio_folder(-1, "datasheets",
"description={Folder with datasheets}");
/*
* Insert documents in the "datasheets" folder along with
* description and custom fields
*/
for (i = 0; i < datasheet_docs.length; i++) {
optlist = "description={" + datasheet_docs[i].description
+ "} fieldlist={ {key=status value="
+ datasheet_docs[i].status + "} {key=id value="
+ datasheet_docs[i].id + " prefix=PHX type=text} }";
/* Add the file to the "datasheets" folder */
p.add_portfolio_file(folder, datasheet_docs[i].filename,
optlist);
}
/* Create a single-page document as cover sheet */
p.begin_page_ext(0, 0, "width=a4.width height=a4.height");
p.fit_textline("Welcome to the PDFlib Portfolio sample!", 50, 700,
"fontname=NotoSerif-Regular fontsize=24");
p.end_page_ext("");
/* Set options for Portfolio display */
optlist = "portfolio={initialview=detail ";
/* Add schema definition for Portfolio metadata */
optlist +=
"schema={ "
/* Some predefined fields are included here to make them visible. */
+ "{order=1 label=Name key=_filename visible editable} "
+ "{order=2 label=Description key=_description visible} "
+ "{order=3 label=Size key=_size visible} "
+ "{order=4 label={Last edited} key=_moddate visible} "
/* User-defined fields */
+ "{order=5 label=Status key=status type=text editable} "
+ "{order=6 label=ID key=id type=text editable} ";
optlist += "}}";
p.end_document(optlist);
}
catch (PDFlibException e) {
System.err.println("PDFlib exception occurred:");
System.err.println("[" + e.get_errnum() + "] " + e.get_apiname()
+ ": " + e.get_errmsg());
exitcode = 1;
}
catch (Exception e) {
System.err.println(e);
exitcode = 1;
}
finally {
if (p != null) {
p.delete();
}
System.exit(exitcode);
}
}
}