Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
176 
std::wstring creator = L"Foxit Reader"
//set thread number. 
int thread_number = 4; 
// log level 
int log_level = 4; 
// recursion depth of search sub-folders. 0: search the full folders. 
int depth = 0; 
// -------------------------------------------------- 
// Given the above settings build a command string. 
std::wstring strCommandline = L""
if(!input_folder.empty()) 
strCommandline.append(L"-i ").append(input_folder).append(L" "); 
if(!output_folder.empty())  
strCommandline.append(L"-o " ).append(output_folder).append(L" "); 
if(!set_password.empty()) 
strCommandline.append(L"-op ").append(set_password).append(L" "); 
if(!title.empty()) 
strCommandline.append(L"-title " ).append(title).append(L" "); 
if(!subject.empty())  
strCommandline.append(L"-subject " ).append(subject).append(L" "); 
if(!keywords.empty())  
strCommandline.append(L"-keywords " ).append(keywords).append(L" "); 
if(!author.empty())  
strCommandline.append(L"-author " ).append(author).append(L" "); 
if(!creator.empty())  
strCommandline.append(L"-creator " ).append(creator).append(L" "); 
if(!log_file.empty())  
strCommandline.append(L"-log ").append(log_file).append(L" "); 
const int MAX_LEGHT = 128; 
const int DATA_RADIX  = 10; 
wchar_t temp[MAX_LEGHT] = {0}; 
if (thread_number >= 0)       //set thread number 
wmemset(temp, 0 , MAX_LEGHT); 
_itow(thread_number, temp ,DATA_RADIX); 
strCommandline.append(L"-t ").append(temp).append(L" "); 
if (log_level > 0) 
_itow(log_level,temp,DATA_RADIX); 
strCommandline.append(L"-l ").append(temp).append(L" "); 
if (depth >= 0) 
Extract image from pdf using - Select, copy, paste PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
pdf extract images; extract images from pdf files
Extract image from pdf using - VB.NET PDF Image Extract Library: Select, copy, paste PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract text from image pdf file; extract photos pdf
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
177 
wmemset(temp, 0 , MAX_LEGHT); 
_itow(depth, temp ,DATA_RADIX); 
strCommandline.append(L"-r ").append(temp).append(L" "); 
//set color/gray images DownSample 
std::wstring dcAlgorithm = L"b";  //or "a","s" 
std::wstring dcDpiAbove  = L"225"; 
std::wstring dcDpiSet    = L"150"; 
strCommandline.append(L"-dc ").append(dcAlgorithm).append(L" "); 
strCommandline.append(dcDpiAbove).append(L" "); 
strCommandline.append(dcDpiSet).append(L" "); 
//set color/gray images compress  
std::wstring ccAlgorithm = L"j";  //or "j2" 
std::wstring ccLevel = L"medium";  //or "min","low","high","max" 
strCommandline.append(L"-cc ").append(ccAlgorithm).append(L" "); 
strCommandline.append(ccLevel).append(L" "); 
//set monochrome images DownSample 
std::wstring dmAlgorithm = L"b";    //or "a","s" 
std::wstring dmDpiAbove  = L"450"; 
std::wstring dmDpiSet    = L"300"; 
strCommandline.append(L"-dm ").append(dmAlgorithm).append(L" "); 
strCommandline.append(dmDpiAbove).append(L" "); 
strCommandline.append(dmDpiSet).append(L" "); 
//set monochrome images compress 
std::wstring cmAlgorithm = L"jbig2" //or "ccitt","runlength" 
std::wstring cmLevel = L"lossless"  //or "lossy" 
strCommandline.append(L"-cm ").append(cmAlgorithm).append(L" "); 
strCommandline.append(cmLevel).append(L" "); 
//Discard objects or User Data. 
std::wstring discardList = L"\"1-11\""; 
strCommandline.append(L"-d ").append(discardList).append(L" "); 
//Cleans up streams, bookmarks, or links. 
std::wstring cleanupList = L"\"1-4\""; 
strCommandline.append(L"-cl ").append(cleanupList).append(L" "); 
strCommandline.append(L"-rd "); 
//Unembeds all fonts in selected PDF document(s). 
strCommandline.append(L"-u "); 
FXT_OptimizerRun(strCommandline.c_str(), myCallBack, NULL); 
FXT_DestroyLibrary(); 
5.5.2
Reporting Progress Messages and Errors 
To find out if PDFOptimizer processing was successful, the application can query the status code returned by 
FXT_OptimizerRun(). 
For example, 
VB.NET PDF Text Extract Library: extract text content from PDF
Extract highlighted text out of PDF document. Image text extraction control provides text extraction from PDF images and image files.
how to extract images from pdf file; how to extract images from pdf files
C# PDF Text Extract Library: extract text content from PDF file in
Ability to extract highlighted text out of PDF document. Supports text extraction from scanned PDF by using XDoc.PDF for .NET Pro. Image text extraction control
how to extract pictures from pdf files; some pdf image extractor
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
178 
int ret = FXT_OptimizerRun(...); 
if (ret == FXT_ERROR_SUCCESS) { 
// No errors... 
else if (ret == FXT_ERROR_LICENSE) { 
// Invalid license... 
else if (ret == FXT_ERROR_PARAM) { 
// Invalid parameter 
else if (ret == FXT_ERROR_LIBRARY) { 
// Failed to initialize Foxit PDF SDK Library 
else if (ret == FXT_ERROR_ERROR) { 
// Failed to optimize PDF file 
else { 
// Other error 
A non-zero value indicates that an error was encountered. You can find the list for all error codes in the 
“include/fxpdftools.h” header. 
For more detailed error and message reporting, you can pass a pointer to the custom callback 
function in the second parameter of FXT_OptimizerRun(). The last parameter in FXT_OptimizerRun() is a 
pointer to custom data that you may want to pass to the callback function. 
The following is a sample callback function: 
// Using C/C++ 
wchar_t* MyCallback(void* userData, int mode, wchar_t* msg, bool* isStop) { 
if (mode == CALLBACK_PDFTOOL_RUN_ERROR) { 
wcout << L"Error: " << msg << endl; 
else if (mode == CALLBACK_PDFTOOL_PARAM_ERROR) { 
wcout << msg; 
else if (mode == CALLBACK_PDFTOOL_MSG) { 
wcout << msg; 
else if (mode == CALLBACK_PDFTOOL_PASSWORD) { 
static wstring password; 
wcin >> password; 
return (wchar_t*)password.c_str(); 
return 0; 
C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
extract image from pdf using; extract image from pdf in
VB.NET PDF insert image library: insert images into PDF in vb.net
Insert Image to PDF Page Using VB. Add necessary references: RasterEdge.Imaging. Basic.dll. RasterEdge.Imaging.Basic.Codec.dll. RasterEdge.Imaging.Drawing.dll.
extract color image from pdf in c#; extract pdf images
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
179 
5.6
PDFRedactor 
5.6.1
Working with PDFRedactor API 
The following is the simplest application that can be built using PDFRedactor API: 
// Using C/C++ 
void main(int argc, char* argv[]) 
int ret = FXT_InitLibrary(L"license_key", 0); 
FXT_RedactorRun(L"-i d:\\input -o d:\\output -mode 1 -keyword "foxit"", myCallBack, 
NULL); 
FXT_DestroyLibrary(); 
This application redacts (removes) the sensitive content “Foxit” from the PDF files in the “d:\input” folder 
except for the secured files, and the redacted PDF files will be saved to the “d:\output” folder. 
The command string (
"-i d:\\input -o d:\\output -mode 1 -keyword "foxit""
) of the above application 
is set by users directly in advance. Users also can get the command string through command line. Building a 
command line application using PDFRedactor API is as simple as the following: 
// Using C/C++
void main(int argc, char* argv[]) 
int ret = FXT_InitLibrary(L"license_key", 0); 
std::wstring strCommandline = GetCommandLineW(); 
std::wstring::size_type pos = strCommandline.find(L".exe"); 
strCommandline = strCommandline.substr (pos+6); 
FXT_RedactorRun(strCommandline.c_str(), myCallBack, NULL); 
FXT_DestroyLibrary(); 
It is also possible to build the command string dynamically (e.g. based on the user or a dynamic input) as 
illustrated in the following code snippet: 
void main(int argc, char* argv[]) 
int ret = FXT_InitLibrary(L"license_key", 0); 
std::wstring input_folder = L"d:\\samples\\input";//or a PDF file: input.pdf 
std::wstring output_folder = L"d:\\samples\\output";//or a PDF file: output.pdf... 
std::wstring open_password = L"secret"; //open password 
std::wstring log_file = L"d:\\samples\\output\\convert2pdf.log"
// the mode of keyword to be searched. 
int mode = 1; 
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Able to extract single or multiple pages from adobe portable document format, known as PDF document, is a documents even though they are using different types
pdf image extractor c#; extract jpg from pdf
C# Create PDF from images Library to convert Jpeg, png images to
Free library is access to downloading and using in .NET framework. If you want to turn PDF file into image file format in C# application, then RasterEdge XDoc
extract pdf pages to jpg; extract jpeg from pdf
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
180 
// the keyword needed to be searched. 
std::wstring keyword = L"Foxit"
// the characters of the keyword you want to redact. 
int character = 3; 
// the page range to apply redaction. 
std::wstring range = L"1,5,9"
// fill color for redaction marks. 
int markcolor = 255 255 0; 
// specify the overlay text for redaction marks. 
std::wstring tx = L"secret"
// the alignment of the overlay text. 
int ta = 1; 
// the font style of the overlay text. 
std::wstring font = L"Calibri"
// the font size of the overlay text. 
int fs = 11; 
// font color of the overlay text. 
int fontcolor = 200 255 0; 
// Search the specified keyword in both PDF forms and the main body of text. 
bool form = true
// set title of PDF files. 
std::wstring title = L"Foxit PDF Toolkit User Manual"
// set subject of PDF files. 
std::wstring subject = L"Foxit PDF Toolkit"
// set keywords of PDF files. 
std::wstring keywords = L"PDF Toolkit"
// set author of PDF files. 
std::wstring author = L"Jessie"
// set file creation application information of PDF files. 
std::wstring creator = L"Foxit Reader"
// recursion depth of search sub-folders. 0: search all of the full folders. 
int depth = 0; 
//set thread number. 
int thread_number = 4; 
// log level. 
int log_level = 4; 
// -------------------------------------------------- 
// Given the above settings build a command string. 
std::wstring strCommandline = L""
if(!input_folder.empty()) 
C# PDF - Extract Text from Scanned PDF Using OCR SDK
VB.NET Write: Add Image to PDF; VB.NET Protect: Add Password to PDF; VB.NET Form: extract value from VB.NET Annotate: PDF Markup & Drawing. XDoc.Word for C#;
extract text from pdf image; extract images from pdf online
C# PDF Form Data Read Library: extract form data from PDF in C#.
PDF software, it should have functions for processing text, image as well as C#.NET Project DLLs: Read and Extract Field Data in C#. using RasterEdge.XDoc.PDF;
how to extract text from pdf image file; how to extract images from pdf in acrobat
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
181 
strCommandline.append(L"-i ").append(input_folder).append(L" "); 
if(!output_folder.empty())  
strCommandline.append(L"-o " ).append(output_folder).append(L" "); 
if(!keyword.empty())  
strCommandline.append(L"-keyword ").append(keyword).append(L" "); 
if(!range.empty()) 
strCommandline.append(L"-range ").append(range).append(L" "); 
if(!tx.empty()) 
strCommandline.append(L"-tx ").append(tx).append(L" "); 
if(!font.empty()) 
strCommandline.append(L"-font " ).append(font).append(L" "); 
if(!open_password.empty())  
strCommandline.append(L"-op ").append(open_password).append(L" "); 
if(!title.empty()) 
strCommandline.append(L"-title " ).append(title).append(L" "); 
if(!subject.empty())  
strCommandline.append(L"-subject " ).append(subject).append(L" "); 
if(!keywords.empty())  
strCommandline.append(L"-keywords " ).append(keywords).append(L" "); 
if(!author.empty())  
strCommandline.append(L"-author " ).append(author).append(L" "); 
if(!creator.empty())  
strCommandline.append(L"-creator " ).append(creator).append(L" "); 
if(!log_file.empty())  
strCommandline.append(L"-log ").append(log_file).append(L" "); 
const int MAX_LEGHT = 128; 
const int DATA_RADIX = 10; 
wchar_t temp[MAX_LEGHT] = {0}; 
if (log_level > 0) 
_itow(log_level,temp,DATA_RADIX); 
strCommandline.append(L"-l ").append(temp).append(L" "); 
if (depth >= 0) 
wmemset(temp, 0 , MAX_LEGHT); 
_itow(depth, temp ,DATA_RADIX); 
strCommandline.append(L"-depth ").append(temp).append(L" "); 
if (thread_number>= 0) 
wmemset(temp, 0, MAX_LEGHT); 
_itow(thread_number, temp ,DATA_RADIX); 
strCommandline.append(L"-t ").append(temp).append(L" "); 
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
182 
if (mode >= 0) 
wmemset(temp, 0, MAX_LEGHT); 
_itow(mode, temp ,DATA_RADIX); 
strCommandline.append(L"-mode ").append(temp).append(L" "); 
if (character >= 0) 
wmemset(temp, 0, MAX_LEGHT); 
_itow(character, temp ,DATA_RADIX); 
strCommandline.append(L"-character ").append(temp).append(L" "); 
if (R >= 0 && G >= 0 && B >= 0) 
wmemset(temp, 0, MAX_LEGHT); 
_itow(markcolor, temp ,DATA_RADIX); 
strCommandline.append(L"-markcolor ").append(temp).append(L" "); 
if (ta>= 0) 
wmemset(temp, 0, MAX_LEGHT); 
_itow(ta, temp ,DATA_RADIX); 
strCommandline.append(L"-ta ").append(temp).append(L" "); 
if (fs>= 0) 
wmemset(temp, 0, MAX_LEGHT); 
_itow(fs, temp ,DATA_RADIX); 
strCommandline.append(L"-fs ").append(temp).append(L" "); 
if (R >= 0 && G >= 0 && B >= 0) 
wmemset(temp, 0, MAX_LEGHT); 
_itow(fontcolor, temp ,DATA_RADIX); 
strCommandline.append(L"-fontcolor ").append(temp).append(L" "); 
if(form) 
strCommandline.append(L"-form").append(L" "); 
FXT_RedactorRun(strCommandline.c_str(), myCallBack, NULL); 
FXT_DestroyLibrary() ; 
5.6.2
Reporting Progress Messages and Errors 
To find out if PDFRedactor processing was successful, the application can query the status code returned by 
FXT_RedactorRun(). 
For example, 
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
183 
int ret = FXT_RedactorRun(...); 
if (ret == FXT_ERROR_SUCCESS) { 
// No errors... 
else if (ret == FXT_ERROR_LICENSE) { 
// Invalid license... 
else if (ret == FXT_ERROR_PARAM) { 
// Invalid param 
else if (ret == FXT_ERROR_LIBRARY) { 
// Failed to initialize Foxit PDF SDK Library 
else if (ret == FXT_ERROR_ERROR) { 
// Failed to redact PDF file. 
else { 
// Other error 
A non-zero value indicates that an error was encountered. You can find the list for all error code in the 
“include/fxpdftools.h” header. 
For more detailed error and message reporting, you can pass a pointer to the custom callback 
function in the second parameter of FXT_RedactorRun(). The last parameter in FXT_RedactorRun() is a 
pointer to custom data that you may want to pass to the callback function. 
The following is a sample callback function: 
// Using C/C++ 
wchar_t* MyCallback(void* userData, int mode, wchar_t* msg, bool* isStop) { 
if (mode == CALLBACK_PDFTOOL_RUN_ERROR) { 
wcout << L"Error: " << msg << endl; 
else if (mode == CALLBACK_PDFTOOL_PARAM_ERROR) { 
wcout << msg; 
else if (mode == CALLBACK_PDFTOOL_MSG) { 
wcout << msg; 
else if (mode == CALLBACK_PDFTOOL_PASSWORD) { 
static wstring password; 
wcin >> password; 
return (wchar_t*)password.c_str(); 
return 0; 
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
184 
5.7
PDFMetadata 
5.7.1
Working with PDFMetadata API 
The following is the simplest application that can be built using PDFMetadata API: 
// Using C/C++ 
void main(int argc, char* argv[]) 
int ret = FXT_InitLibrary(L"license_key", 0); 
FXT_MetadataRun(L"-i d:\\input -o d:\\output -title "Foxit PDF Toolkit User Manual""
myCallBack, NULL); 
FXT_DestroyLibrary(); 
This application adds document title information to the PDF files in the “d:\input” folder except for the 
secured files, and the output PDF files will be saved to the “d:\output” folder. 
The command string (
"-i d:\\input -o d:\\output -title "Foxit PDF Toolkit User Manual""
) of the 
above application is set by users directly in advance. Users also can get the command string through 
command line. Building a command line application using PDFMetadata API is as simple as the following: 
// Using C/C++
void main(int argc, char* argv[]) 
int ret = FXT_InitLibrary(L"license_key", 0); 
std::wstring strCommandline = GetCommandLineW(); 
std::wstring::size_type pos = strCommandline.find(L".exe"); 
strCommandline = strCommandline.substr (pos+6); 
FXT_MetadataRun(strCommandline.c_str(), myCallBack, NULL); 
FXT_DestroyLibrary(); 
It is also possible to build the command string dynamically (e.g. based on the user or a dynamic input) as 
illustrated in the following code snippet: 
void main(int argc, char* argv[]) 
int ret = FXT_InitLibrary(L"license_key", 0); 
std::string input_folder = L"d:\\samples\\input";//or a PDF file: input.pdf 
std::string output_folder = L"d:\\samples\\output";//or a PDF file: output.pdf... 
std::string open_password = L"secret"; //open password 
std::string log_file = L"d:\\samples\\output\\pdfmetadata.log"
// set title of PDF files. 
std::string title = L"Foxit PDF Toolkit User Manual"
Foxit PDF Toolkit User Manual 
www.foxitsoftware.com 
185 
// set subject of PDF files. 
std::string subject = L"Foxit PDF Toolkit"
// set keywords of PDF files. 
std::string keywords = L"PDF Toolkit"
// set author of PDF files. 
std::string author = L"Jessie"
// set file creation application information of PDF files. 
std::string creator = L"Foxit Reader"
// recursion depth of search sub-folders. 0: search all of the full folders. 
int depth = 0; 
//set thread number. 
int thread_number = 4; 
// log level. 
int log_level = 4; 
// -------------------------------------------------- 
// Given the above settings build a command string. 
std::string strCommandline = L""; 
if(!input_folder.empty()) 
strCommandline.append(L"-i ").append(input_folder).append(L" "); 
if(!output_folder.empty())  
strCommandline.append(L"-o " ).append(output_folder).append(L" "); 
if(!title.empty()) 
strCommandline.append(L"-title " ).append(title).append(L" "); 
if(!subject.empty())  
strCommandline.append(L"-subject " ).append(subject).append(L" "); 
if(!keywords.empty())  
strCommandline.append(L"-keywords " ).append(keywords).append(L" "); 
if(!author.empty())  
strCommandline.append(L"-author " ).append(author).append(L" "); 
if(!creator.empty())  
strCommandline.append(L"-creator " ).append(creator).append(L" "); 
if(!open_password.empty())  
strCommandline.append(L"-op ").append(open_password).append(L" "); 
if(!log_file.empty())  
strCommandline.append(L"-log ").append(log_file).append(L" "); 
const int MAX_LEGHT = 128; 
const int DATA_RADIX = 10; 
wchar_t temp[MAX_LEGHT] = {0}; 
if (log_level > 0) 
_itow(log_level,temp,DATA_RADIX); 
Documents you may be interested
Documents you may be interested