PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 51 of 124 
Configuration configuration = stub.getConfiguration(new GetConfiguration()).getGetConfigurationResult();  
ConverterConfiguration[] converters = configuration.getConverters().getConverterConfiguration();  
for (ConverterConfiguration cc : converters) {  
List<String> supportedExtension = Arrays.asList(cc.getSupportedFileExtensions().getString());  
if (supportedExtension.contains(fileExt)) {  
return true;  
}  
}  
return false;  
}  
}
Compiling Code 
Steps to compile your code very much depends on your environment, solution 
and build system. To build the sample code in this chapter use the following: 
rmdir /S /Q .\bin  
md bin  
javac -d ./bin -cp "%AXIS2_HOME%/lib/*"  -verbose 
./src/com/muhimbi/ws/*.java  
javac -d ./bin -cp "./bin;%AXIS2_HOME%/lib/*" –verbose 
./src/com/muhimbi/app/*.java 
Please note that on non-Windows platforms the classpath (-
cp) separator is ‘:’ 
rath
er than ‘;’.
Running the Code 
To  execute  the  sample and carry out the PDF  conversion of  a file named 
test.docx issue the following command. 
java -classpath "./bin;%AXIS2_HOME%/lib/*"  
com.muhimbi.app.WsClient test.docx 
Please note that on non-Windows platforms the classpath (-cp) separator 
is ‘:’ 
rather than ‘;’.
Pdf select text - search text inside PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn how to search text in PDF document and obtain text content and location information
convert pdf to searchable text online; search pdf files for text programmatically
Pdf select text - VB.NET PDF Text Search Library: search text inside PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Learn How to Search Text in PDF Document and Obtain Text Content and Location Information in VB.NET application
select text in pdf reader; pdf find highlighted text
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 52 of 124 
4.4  PDF Conversion in Ruby / Rails 
In this section we
’ll show how to create a simple ROR application to send a file 
to the PDF Converter. The latest version of this section, including details about 
how to install a full ROR environment on Linux, is available on our Blog
Creating the Rails application 
The Muhimbi PDF Converter exposes a comprehensive API via a standards 
based  Web  Services  interface.  A  number  of  Web  Service  frameworks  are 
available for Ruby (Savon, Handsoap), but in this example we use Soap4R to 
pre-generate Ruby proxies as it is simple, and it works. 
In the example below we will create a basic PDF Conversion Rails application. 
If you are looking to add PDF Conversion to an existing Rails application then 
modifying this example to suit your exact needs should be simple. 
1.  Use a terminal application of your choice to navigate to the location where 
you wish to create the Rails application. We use ~Sites
2.
Execute the following command to create the skeleton for the application: 
rails new MuhimbiPDFConverter –O 
3.  Navigate to MuhimbiPDFConverter, edit Gemfile using a text editor of your 
choice and add the following line: 
gem 'soap4r' 
4.  Install bundler as follows:  
gem install bundler 
5.  Execute the following command to pull in the applicable gems (Make sure 
you are still in the MuhimbiPDFConverter directory)  
bundle install 
Generating proxies 
The quickest way (also from a performance perspective) to interact with a Web 
Service  is  to  pre-generate  proxy  classes.  This  can  be  achieved  easily 
using soap4r, which has already been added to the application as described 
above. 
Before we can generate the proxies we need to make sure that the Muhimbi 
Conversion Service has been installed and is running. 
1.  Install the Muhimbi PDF Converter Services as described in Chapter 2 of 
the Administration guide
2.  Open Muhimbi.DocumentConverter.Service.exe.config in your favourite text 
editor. A  handy shortcut  to the configuration / installation  folder can be 
found in the Windows Start Menu Group. 
3.  Search for baseAddress  and  change localhost  to  the  DNS  name  or  IP 
address of the server running the Conversion Service. 
4.  Restart the Conversion Service as follows:  
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
C#: Select All Images from One PDF Page. C# programming sample for extracting all images from a specific PDF page. C#: Select An Image from PDF Page by Position.
how to search a pdf document for text; convert pdf to searchable text
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
VB.NET : Select An Image from PDF Page by Position. Sample for extracting an image from a specific position on PDF in VB.NET program.
how to select text on pdf; how to search text in pdf document
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 53 of 124 
Net stop "Muhimbi Document Converter Service"  
Net start "Muhimbi Document Converter Service" 
Please  use  the  included  Diagnostics  Tool  to verify  that  your  installation  is 
correct. 
Back on the Ruby system carry out the following steps to generate the proxies: 
1.  Navigate to MuhimbiPDFConverter/lib 
2.  Execute the following command. Please replace localhost with the name or 
ip address of the server that runs the Muhimbi PDF Converter Service.  
bundle exec wsdl2ruby.rb --wsdl 
http://localhost:41734/Muhimbi.DocumentConverter.WebService/?wsdl 
--type client 
This generates four new files and places them in the lib  folder. Note that the 
generated property and method names follow Ruby’s naming convention and 
not the  convention  used  in this  Developer  Guide.  This mainly  impacts  the 
capitalisation of the first letters. 
Implementing the sample 
All prerequisites are now 
in place. Let’s add some code to tie it all together. If 
you prefer you can access the full source code from the Sample Code folder. 
1.  Start by generating a controller where the form will be posted to:  
rails generate controller home upload_file 
2.  Delete  the  home  page  that  comes  with  every  new  Rails  application 
(Execute in the MuhimbiPDFConverter folder)  
rm public/index.html 
3.  If you are using Sublime-Text 
then this is the moment to execute ‘
subl .
’ to 
open the text editor and display the entire folder structure. 
4.  Edit config/routes.rb and after the following line  
get "home/upload_file"  
Add  
post "home/upload_file"   
root :to => 'home#upload_file' 
5.  Edit app/views/home/upload_file.html.erb  and  add  the  following  HTM:  
<form method="post" enctype="multipart/form-data"> 
<br/> 
<label for="file">Document:</label> 
<input type="file" name="file" id="file" /> 
<br/> 
<label for="outputFormat">Output format:</label> 
VB.NET PDF Text Redact Library: select, redact text content from
VB.NET PDF - Redact PDF Text. Help Users to Redact PDF Text to Protect PDF Document in VB.NET. Overview. Redact PDF Text using VB.NET. Add necessary references:
find and replace text in pdf; pdf find text
C# PDF Text Redact Library: select, redact text content from PDF
C#.NET PDF SDK - Redact PDF Text in C#.NET. C# Demo Code for Redacting PDF Text to Protect Your PDF Document in C#.NET Project. Best
select text pdf file; pdf text search
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 54 of 124 
<select name="outputFormat" id="outputFormat"> 
<option value="PDF">PDF</option> 
<option value="XPS">XPS</option> 
<option value="DOCX">DOCX</option> 
<option value="DOC">DOC</option> 
<option value="ODT">ODT</option> 
<option value="RTF">RTF</option> 
<option value="TXT">TXT</option> 
<option value="MHT">MHT</option> 
<option value="HTML">HTML</option> 
<option value="XML">XML</option> 
<option value="XLS">XLS</option> 
<option value="XLSX">XLSX</option> 
<option value="CSV">CSV</option> 
<option value="ODS">ODS</option> 
<option value="PPT">PPT</option> 
<option value="PPTX">PPTX</option> 
<option value="ODP">ODP</option> 
<option value="PPS">PPS</option> 
<option value="PPSX">PPSX</option> 
</select> 
<br/> 
<input type="submit" name="submit" value="Convert" /> 
</form> 
6.    Edit app/controllers/home_controller.rb and  replace  it  with  the  following: 
require Rails.root.to_s + '/lib/DocumentConverterServiceDriver' 
require "base64" 
class HomeController < ApplicationController 
def upload_file 
#** Get a reference to the uploaded file and check it was specified 
file = params['file'] 
if file 
#** Specify the URL of the server that holds the Conversion Service 
url = "http://localhost:41734/Muhimbi.DocumentConverter.Webservice/?wsdl
conversionClient = DocumentConverterService.new(url) 
#** Create OpenOptions and specify the absolute minimum information 
openOptions = OpenOptions.new() 
openOptions.fileExtension = file.original_filename.split(".").last 
openOptions.originalFileName = file.original_filename 
#** Create ConversionSettings and set the minimum fields.  
conversionSettings = ConversionSettings.new() 
conversionSettings.format = params['outputFormat'] 
conversionSettings.fidelity = "Full" 
conversionSettings.openPassword = "" 
conversionSettings.ownerPassword = "" 
#** Encode the source file into a Base64 encoded byte array 
sourceFile = Base64.encode64(file.read) 
#** Carry out the conversion 
convert = Convert.new(sourceFile, openOptions, conversionSettings) 
result =  conversionClient.convert(convert) 
#** Send the converted file back to the browser. ‘wsdl2ruby’ needs  
#** double Base64 decoding for some reason. 
send_data(Base64.decode64(Base64.decode64(result.convertResult)), 
:filename => "convert." + conversionSettings.format
:content_type => 'application/octet-stream', 
:disposition => 'attachment') 
end 
end 
end 
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Tools Tab. Item. Name. Description. 1. Select tool. Select text and image on PDF document. 2. Hand tool. Pan around the document. Go To Tab. Item. Name. Description
pdf find and replace text; pdf text select tool
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
Tools Tab. Item. Name. Description. 1. Select tool. Select text and image on PDF document. 2. Hand tool. Pan around the document. Go To Tab. Item. Name. Description
find text in pdf files; how to select text in pdf reader
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 55 of 124 
Please update the url variable with the IP address or DNS name of the server 
that runs the Muhimbi Conversion Service. 
That is it. Start the Rails server as follows: 
rails s 
Open  a web  browser and point it to http://localhost:3000.  If the browser  is 
opened on a system other than the one that runs the Rails application then 
replace localhost with the DNS name or IP number of that server. 
This sample application is very basic. Select a file to convert (please make sure 
that the file extension matches its format). Then select the Output format, e.g. 
PDF, and click the Convert button. 
This is a minimum code sample to illustrate how easy it is to convert a file using 
Ruby. This Developer Guide contains the entire object model, including details 
about how to Convert, Watermark, Split, Merge and Secure files. 
SOAP / Web Service Debugging 
The Muhimbi Conversion Service is a Windows Service based on the Microsoft 
Windows Communication Foundation (WCF) framework. This comprehensive 
framework is used to expose a standards based Web Services interface that 
can be consumed by many different platforms including .NET, Java, PHP, SAP, 
Ruby, Documentum and many others. 
Even  though  WCF  Web  Services  are  standards  based,  standards  are  not 
interpreted the same by everyone so from time to time you may need to do 
some  troubleshooting  when  programming  against   the  PDF Converter Web 
Service, especially from non-Microsoft platforms. 
For  details  about  how  to  debug Web  Service  /  SOAP  messages,  see this
Knowledge Base Article
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
Tools Tab. Item. Name. Description. Ⅰ. Hand. Pan around the PDF document. Ⅱ. Select. Select text and image to copy and paste using Ctrl+C and Ctrl+V.
make pdf text searchable; select text in pdf
C# WPF PDF Viewer SDK to view PDF document in C#.NET
Tools Tab. Item. Name. Description. Ⅰ. Hand. Pan around the PDF document. Ⅱ. Select. Select text and image to copy and paste using Ctrl+C and Ctrl+V.
select text in pdf file; search pdf documents for text
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 56 of 124 
4.5  PDF Conversion in PHP 
In this section we
’ll show how to create a simple PHP application to send a file 
to the PDF Converter. The latest version of this section, including details about 
how to install PHP on a Windows Server, is available on our Blog
Installing the Muhimbi PDF Conversion Services 
Using the Muhimbi PDF Conversion Services in combination with PHP requires 
a standard installation. If PHP is running on the same system as the Muhimbi 
PDF Converter Services then you can skip steps 2, 3 and 4. 
1.  Install the Muhimbi PDF Converter Services as described in Chapter 2 of 
the Administration guide. 
2.  Open Muhimbi.DocumentConverter.Service.exe.config in your favourite text 
editor. A  handy shortcut  to the configuration / installation  folder can be 
found in the Windows Start Menu Group. 
3.  Search for baseAddress  and  change localhost  to  the  DNS  name  or  IP 
address of the server running the Conversion Service. 
4.  Restart the Conversion Service as follows:  
Net stop "Muhimbi Document Converter Service"  
Net start "Muhimbi Document Converter Service" 
Please  use  the  included  Diagnostics  Tool  to verify  that  your  installation  is 
correct. 
Generating proxies 
Although out-of-the-box PHP comes with a SoapClient class to interact with 
web services, it is much easier and faster to pre-generate proxy classes to talk 
to the web service. 
Many tools  are available for generating PHP proxies. The  one that we are 
using in this tutorial is wsdl2phpgenerator. Pre-generated proxies are included 
in the Muhimbi PDF Converter Services’
Sample Code folder.  You can  also 
generate your own proxies using the following steps: 
1. Download wsdl2phpgenerator
and unzip it to a location of your choice. 
2.  Make sure PHP is added to your path (In Windows this is done for you if 
PHP has been installed using the steps in this blog post
). 
3.  Open  a  command  prompt  and  navigate  to  the  location  where 
wsdl2phpgenerator was unzipped. 
4.  Execute the following command to generate the PHP proxies:  
php wsdl2php.php -s -i 
"http://localhost:41734/Muhimbi.DocumentConverter.WebSe
rvice/?wsdl" -o documentConverterServices  
C# WPF PDF Viewer SDK to annotate PDF document in C#.NET
Line color. Select the line color when drawing annotations on PDF document. Default create. Click to select drawing annotation with default properties. Text box.
text searchable pdf; how to search pdf files for text
VB.NET PDF - Annotate PDF with WPF PDF Viewer for VB.NET
Line color. Select the line color when drawing annotations on PDF document. Default create. Click to select drawing annotation with default properties. Text box.
search pdf files for text; how to select text in pdf
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 57 of 124 
If the Conversion Service is running on a remote machine then please 
replace ‘localhost’ with the name of that machine.
5.  Copy  the  newly  generated documentConverterServices.php  file  to  the 
folder that holds your PHP code.  
Sample Code 
The sample code has been kept as simple as possible and is available from the 
Sample Code/PHP 
folder in the Conversion Service’s installation folder.
Create the following index.html file that allows a file to be uploaded and the 
output file type to be set.  
<html> 
<body> 
<form action="convert.php" method="post" enctype="multipart/form-data"> 
<a href="phpInfo.php">PHP Info</a> 
<br/> 
<label for="file">Document:</label> 
<input type="file" name="file" id="file" /> 
<br/> 
<label for="outputFormat">Output format:</label> 
<select name="outputFormat" id="outputFormat"> 
<option value="PDF">PDF</option> 
<option value="XPS">XPS</option> 
<option value="DOCX">DOCX</option> 
<option value="DOC">DOC</option> 
<option value="ODT">ODT</option> 
<option value="RTF">RTF</option> 
<option value="TXT">TXT</option> 
<option value="MHT">MHT</option> 
<option value="HTML">HTML</option> 
<option value="XML">XML</option> 
<option value="XLS">XLS</option> 
<option value="XLSX">XLSX</option> 
<option value="CSV">CSV</option> 
<option value="ODS">ODS</option> 
<option value="PPT">PPT</option> 
<option value="PPTX">PPTX</option> 
<option value="ODP">ODP</option> 
<option value="PPS">PPS</option> 
<option value="PPSX">PPSX</option> 
</select> 
<br/> 
<input type="submit" name="submit" value="Convert" /> 
</form> 
</body> 
</html> 
The HTML page submits the file to the following PHP file: 
<?php 
// Include the generated proxy classes 
require_once
"documentConverterServices.php"; 
// Check the uploaded file 
if
($_FILES["file"]["error"] > 0) 
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 58 of 124 
echo
"Error uploading file: " . $_FILES["file"]["error"]; 
else
// Get the uploaded file content 
$sourceFile = file_get_contents($_FILES["file"]["tmp_name"]); 
// Create OpenOptions 
$openOptions = new OpenOptions(); 
// set file name and extension 
$openOptions->FileExtension = pathinfo
($_FILES["file"]["name"], 
PATHINFO_EXTENSION); 
$openOptions->OriginalFileName = $_FILES["file"]["name"]; 
// Create conversionSettings 
$conversionSettings = new ConversionSettings(); 
// Set the output format 
if
(isset($_POST["outputFormat"])) 
$conversionSettings->Format = $_POST["outputFormat"]; 
else
$conversionSettings->Format = "PDF"; 
// Set fidelity 
$conversionSettings->Fidelity = "Full"; 
// These values must be set to empty strings or actual passwords when 
// converting to non PDF formats 
$conversionSettings->OpenPassword=""; 
$conversionSettings->OwnerPassword=""; 
// Set some of the other conversion settings.  
// Completely optional and just an example 
$conversionSettings->StartPage = 0; 
$conversionSettings->EndPage = 0; 
$conversionSettings->Range = "VisibleDocuments"; 
$conversionSettings->Quality = "OptimizeForPrint"; 
$conversionSettings->PDFProfile = "PDF_1_5"; 
$conversionSettings->GenerateBookmarks = "Automatic"; 
$conversionSettings->PageOrientation="Default"; 
// Create the Convert parameter that is send to the server 
$convert = new Convert($sourceFile, $openOptions, $conversionSettings); 
// Create the service client and point it to the correct Conversion Service 
$url = "http://localhost:41734/Muhimbi.DocumentConverter.WebService/?wsdl"; 
$serviceClient = new DocumentConverterService(array
(), $url); 
// If you are expecting long running operations then consider longer timeouts 
ini_set
('default_socket_timeout', 60); 
try  
// Execute the web service call 
$result = $serviceClient->Convert($convert)->ConvertResult; 
// Send the resulting file to the client. 
header
("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header
("Content-type: application/octet-stream"); 
header
("Content-Disposition: attachment; filename=\"convert." .  
$conversionSettings->Format . "\""); 
echo
$result; 
catch (Exception $e)  
print
"Error converting document: ".$e->getMessage(); 
    
?> 
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 59 of 124 
Place all files in the same folder  under your web server  root. Open a web 
browser and point it to index.html. Select a file, specify the output format and 
click ‘Convert’.
This is just a simple example. The full object model, including details about 
merging, splitting and watermarking files, is available in this Developer Guide. 
If you expect to execute long running operations then you may want to read-up 
on dealing with PHP socket timeouts: 
http://stackoverflow.com/questions/3500527/php-soapclient-timeout
http://stackoverflow.com/questions/835184/handling-soap-timeouts-in-php
Troubleshooting 
If  you  are  experiencing  any  problems  with  this  sample  code,  e.g.  warning 
messages such as Missing argument 1 for OpenOptions then please read the 
comment dated 15 November, 2013 09:12 at the end of this post
SOAP / Web Service Debugging 
The Muhimbi Conversion Service is a Windows Service based on the Microsoft 
Windows Communication Foundation (WCF) framework. This comprehensive 
framework is used to expose a standards based Web Services interface that 
can be consumed by many different platforms including .NET, Java, PHP, SAP, 
Ruby, Documentum and many others. 
Even  though  WCF  Web  Services  are  standards  based,  standards  are  not 
interpreted the same by everyone so from time to time you may need to do 
some  troubleshooting  when  programming  against   the  PDF Converter Web 
Service, especially from non-Microsoft platforms. 
For  details  about  how  to  debug Web  Service  /  SOAP  messages,  see this 
Knowledge Base Article
PDF Converter Services - User & Developer Guide
PDF Converter Services - User & Developer Guide - Version 8.0 - 07/12/15 
© Copyright 2015, Muhimbi Ltd 
Page 60 of 124 
4.6  Cross-Converting between document types 
Although the product names refers to PDF Conversion, as of version 6.0 it is 
also possible to cross convert between document types, e.g. doc to docx, xlsx 
to xls and even xls to doc. 
So, how is this useful? Well, let’s say that you have a large amount of legacy 
Office 97-2003 files, but your company now requires all files to be saved in the 
more modern, and open, Office 2007-2010 formats. By using the Muhimbi PDF 
Converter you can convert between these formats automatically using simple 
web service call using Java or .NET. 
Conversion in the other direction is possible as well. For example many users 
in an organisation may still be on Office 2000 or 2003, but those fancy guys in 
IT are saving documents in Office 2010 format, which no-one else can open. A 
simple application will automatically take care of this and convert all files to the 
desired format. 
Naturally  some  thought  needs  to  be  given  to  what  file  formats  to  convert 
between. Converting between AutoCAD and Excel makes little sense, but from 
Excel to Word and Word to Excel could be useful. The table listed below shows 
which file formats can be converted between. 
Some points of interest: 
1.  It is now possible to convert InfoPath files to MS-Word, Excel and HTML 
For details see section 4.6.2. 
2.  Although not displayed in this chart, it is also possible to convert PDF (and 
any other file type) to PDF/A. For details see Appendix - Post processing 
PDF output to PDF/A in the Administration Guide. 
3. 
It  is  even  possible  to  ‘convert’  to  the  same  f
ormat  as  the  source, 
e.g. docx to docx, but specify additional settings such as a password on the 
document. 
Documents you may be interested
Documents you may be interested