how to show pdf file in asp.net c# : Search a pdf file for text application SDK utility azure wpf html visual studio vba-to-vb.net-xll-add-in-with-excel-dna4-part1820

' This is another way I can think of to pass a parameter from the Ribbon into a macro 
Sub RunTagMacroWithID(ByVal ctl As IRibbonControl
Application.Run(ctl.Tag, ctl.Id) 
' If I try to pass ctl as an object I get  
'Cannot run the macro 'TestRibbon'. The macro may not be available in this workbook or 
all macros may be disabled. 
End Sub 
Sub CCTWAVBButton2(ByVal ctl As IRibbonControl
Try 
TA_ShowFrmCount() 
Catch ex As Exception 
MsgBox(ex.Message, MsgBoxStyle.Exclamation, ex.Source) 
End Try 
End Sub 
End Class 
The available keytip letters in Excel are B, C, G, K, Q, S; others are already used by 
Excel builtin ribbon commands, eg H for Home. 
If the addin menu does not appear in the Ribbon 
First paste the XML into the Custom UI Editor (open any document in the editor first) 
and click Validate, to check for bad XML syntax or duplicate control or group IDs. 
Ensure you have <ComVisible(True)> in the Ribbon class (and therefore Imports 
System.Runtime.InteropServices) 
In your .dll you need to be sure that the class is Public and ComVisible.  
You can do this by marking the class as <ComVisible(True)> or by setting COM-
Visible for the assembly:  
Go to the project properties, and select the Application tab. Then click on Assembly 
Information and set the "Make assembly COM-Visible" checkbox. (This sets the 
assembly-wide [assembly:ComVisible(true)] attribute in your AssemblyInfo.cs file.)  
By default (if there is no assembly-wide attribute) assemblies are ComVisible, which 
is why the code in the .dna file works. But the Visual Studio library template sets the 
assembly attribute to false by default. The assembly-wide attribute can always be 
overridden by an attribute on the particular class.  
(Note that COM-Visible is a different setting to "Register for COM Interop" which 
you should never set for an Excel-Dna library.)  
If a Ribbon at some point causes Excel to crash, all custom Ribbons will be disabled 
in the future.  To re-enable custom ribbons, go to Excel Options => Add-Ins => 
Manage: Disabled Items Go... => Click on the disabled Excel-Dna addin and click 
Enable.   
Search a pdf file for 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
how to make a pdf document text searchable; convert a scanned pdf to searchable text
Search a pdf file for 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
convert a scanned pdf to searchable text; search text in pdf image
Global Helper Functions 
Prefix enumerated constants with their type, eg XlDirection.xlUp rather than simply 
xlUp (which is Global in VBA). This can be done in the VBA as well, so it is 
compatible both ways. In the absence of that, the change has to be done in the VB.Net 
IDE after copying the code from the VBA addin. One way of simplifying the amount 
of editing is to define a GlobalHelper.vb module that provides some compatibility 
code for constants and properties like Application.Selection. 
The code is in the GlobalHelper.vb file on the web site: 
http://www.sysmod.com/GlobalHelper.vb 
It defines functions and properties to support the VBA Array(), IsEmpty(), IsNull(), 
IsObject(), Round(), Selection, ActiveCell, ActiveSheet, ActiveChart, ActiveWindow, 
ActiveWorkbook, and the Workbooks collection. 
"Reference to a non-shared member requires an object reference" 
This error from "Workbooks.Open(…" illustrates a ty pical need for the helpers such 
as Workbooks. Firstly I must create an OBJECT called "Application" Then EITHER I 
change all "Workbooks" in the VBA code to an explicit reference to 
Application.Workbooks which requires editing the code 
OR I create a public module with a Property Workbooks. That is Govert's solution, 
and results in a Global Helper with lots of ReadOnly Properties like: 
Public Module GlobalHelper 
ReadOnly Property Application As Application  
Get 
Return ExcelDnaUtil.Application 
End Get 
End Property 
ReadOnly Property ActiveWorkbook As Workbook 
Get 
Return Application.ActiveWorkbook 
End Get 
End Property 
ReadOnly Property Workbooks As Workbooks 
Get 
Return Application.Workbooks 
End Get 
End Property  
End Module 
C# Word - Search and Find Text in Word
PDF to text, C#.NET convert PDF to images, C#.NET PDF file & pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET search text in
pdf editor with search and replace text; search a pdf file for text
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Embedded print settings. Embedded search index. Bookmarks. Flatten visible layers. VB.NET Demo Code to Optimize An Exist PDF File in Visual C#.NET Project.
pdf find highlighted text; text searchable pdf
Compatibility with VBA code that references ThisWorkbook 
I typically store some setup parameters in properties and worksheets in the xlam file. 
Instead of worksheets, you can use configuration files, see the following section.  
Config file Appsettings can only be simple key/value string pairs. For complex 
structures, it may be simpler to distribute a spreadsheet file that contains the setup 
worksheets, as long as that is always installed with the .XLL file. 
As an exercise I defined a ThisWorkbook class in the AddInMain.vb module and 
created properties as follows: 
'Create an ExcelAddIn-derived class with AutoOpen and AutoClose,  
'and add a module called AddInMain to hold the Application object reference: 
Imports LateBindingApi.Core 
Imports NetOffice.ExcelApi 
Imports ExcelDna.Integration 
' This class is implemented only to allow us to initialize NetOffice 
' We hook up a public field in the Module AddInMain  
'    that will be usable anywhere in the project. 
Public Class AddIn 
Implements IExcelAddIn 
Public Sub AutoOpen() Implements IExcelAddIn.AutoOpen 
' must initialise here because XlCall cannot be used from Ribbon context, only in a 
macro context 
ThisWorkbook.Name = System.IO.Path.GetFileName(XlCall.Excel(XlCall.xlGetName)) 
ThisWorkbook.Path = System.IO.Path.GetDirectoryName(XlCall.Excel(XlCall.xlGetName)) 
Factory.Initialize() 
' Set a public field in a module, so that Application will be available everywhere. 
Application = New Application(NothingExcelDnaUtil.Application) 
End Sub 
Public Sub AutoClose() Implements IExcelAddIn.AutoClose 
End Sub 
End Class 
Public Class ThisWorkbook 
'Shared means we don't need to instantiate ThisWorkbook to call these 
Shared Property Title As String = DnaLibrary.CurrentLibrary.Name 
Shared Property Name As String = "ThisWorkbook" 
Shared Property Path As String = "." 
Shared ReadOnly Property Worksheets As Object 
Get 
MsgBox("No Worksheets in ThisWorkbook"
Return Nothing 
End Get 
End Property 
Shared Function IsAddin() As Boolean 
Return True ' for debugging 
End Function 
End Class 
C# PDF delete text Library: delete, remove text from PDF file in
option). Description: Delete specified string text that match the search option from PDF file. Parameters: Name, Description, Valid Value.
select text in pdf file; text searchable pdf file
C# PowerPoint - Search and Find Text in PowerPoint
PDF to text, C#.NET convert PDF to images, C#.NET PDF file & pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET search text in
convert pdf to word searchable text; select text in pdf
Using .config files 
You need to: 
1)  Create a text file Myaddinname.xll.config and specify key & value pairs 
2)  In the VB code, add a reference to System.Configuration and import it so that 
the code need only refer to ConfigurationManager.AppSettings("keyname") 
ExcelDna will include the .config file if you created a packed .xll, thereby simplifying 
deployment. 
' Myaddinname.xll.config 
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<appSettings> 
<add key="DatabasePath" value="%USERPROFILE%\Database" /> 
<add key="SupportEmail" value="me@sysmod.com" /> 
</appSettings
</configuration> 
' MyAddinname.vb 
Imports System.Configuration            ' Add Reference: System.Configuration 
'... 
Dim dbPath As String = ConfigurationManager.AppSettings("DatabasePath"  
Dim email As String = ConfigurationManager.AppSettings("SupportEmail"
'... 
To iterate all elements: 
Dim appSettings As Specialized.NameValueCollection = ConfigurationManager.AppSettings 
For i As Integer = 0 To appSettings.Count - 1 
Debug.Print("Key : {0} Value: {1}", appSettings.GetKey(i), appSettings.get(i)) 
Next i 
See also: 
http://msdn.microsoft.com/en-
us/library/system.configuration.configurationmanager.appsettings(v=vs.80).aspx  
C# PDF File Compress Library: Compress reduce PDF size in C#.net
size, images size reducing can help to reduce PDF file size effectively. will also take up too much space, glyph file unreferenced can be Embedded search index.
pdf searchable text; how to search text in pdf document
C# PDF replace text Library: replace text in PDF content in C#.net
Replace old string by new string in the PDF file. option, The search and replace match rules. Description: Delete specified string text that match the search
find text in pdf image; how to select all text in pdf
Unit Testing using NotePad++ as the code editor 
To simplify testing isolated pieces of code, I used NotePad++ to edit a .Dna file and 
copied ExcelDna.xll to the test filename.xll. Then to run the test, I saved a command 
in Notepad++ assigned to Ctrl+F5: 
"C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" "$(CURRENT_DIRECTORY)\$(NAME_PART).XLL" 
Here is a sample test .Dna file: 
<DnaLibrary Language="VB" RuntimeVersion="v4.0" >  <Reference 
Path="F:\Programs\_PIA Excel\Microsoft.Office.Interop.Excel.14.dll"  
/><![CDATA[ 
' lines above CDATA are not counted in the compiler error messages 
Add 1 to reported error line number to get line in this file 
Imports Microsoft.Office.Interop.Excel 
Public Module MainProcs 
Sub TestASub() 
try 
' this works thanks to the Global Helper class Property "Workbooks" 
dim wb as Workbook=Workbooks.Add() 
dim ws as Worksheet=wb.worksheets(1) 
' use Application.Range for refs to other workbooks or sheets 
msgbox(Application.range("Sheet2!A2:C3").Address(false,false, 
xlReferenceStyle.xlA1,true) _ 
& vbcrlf & 
ws.range(ws.cells(2,1),ws.cells(3,3)).address(false,false, 
xlReferenceStyle.xlA1,true)) 
wb.Close(SaveChanges:=False) 
catch Ex as Exception 
msgbox(Ex.toString ,vbExclamation,"Error") 
Console.WriteLine(Ex.toString) 
end try 
Application.Quit 
End Sub 
End Module 
Public Class DnaAddIn 
Implements IExcelAddIn ' ExcelDna.Integration included implicitly from 
ExcelDna.xll copied to $(NAME_PART).xll 
Public Sub AutoOpen() Implements IExcelAddIn.AutoOpen 
TestASub() 
End Sub 
Public Sub AutoClose() Implements IExcelAddIn.AutoClose ' Must be 
declared even if not used 
End Sub 
End Class 
' This module contains <global> shortcuts to the Application members. 
Public Module GlobalHelper 
ReadOnly Property Application As Application  
VB.NET PDF replace text library: replace text in PDF content in vb
Replace Text in PDF File. The following coding example illustrates how to perform PDF text replacing function in your VB.NET project, according to search option
how to select text on pdf; select text pdf file
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
Name. Description. 13. Page Thumbnails. Navigate PDF document with thumbnails. 14. Text Search. Search text within file by using Ignore case or Whole word search
searching pdf files for text; find and replace text in pdf
Get 
Return ExcelDnaUtil.Application 
End Get 
End Property 
ReadOnly Property ActiveWorkbook As Workbook 
Get 
Return Application.ActiveWorkbook 
End Get 
End Property 
ReadOnly Property Workbooks As Workbooks 
Get 
Return Application.Workbooks 
End Get 
End Property  
End Module 
]]> 
</DnaLibrary> 
<!-- Notepad++  
Ctrl+F5 
Run "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE" 
"$(CURRENT_DIRECTORY)\$(NAME_PART).XLL"  
--> 
Performance Testing 
As an example, I tested the Levenshtein distance function with two 100 character 
strings. This does 100x100 or 10,000 MID$() operations to compare those two 
strings. This was in turn called 100 times. The timings are: 
1.  3900 ms for 100 iterations of the function using VBA and MID$() operations and 
WorksheetFunction.MIN(). 
2.  234 ms for 100 iterations of the function using VBA and Byte arrays and in-line logic 
for MIN(). 
3.  2886 ms for only one iteration of the XLL function using WorksheetFunction.MIN(). 
4.  156 ms for 100 iterations of the XLL function using in-line logic for MIN(), and the 
MIDS() operations. 
5.  63 ms for 100 iterations of the function using the XLL and Byte arrays. 
Bear in mind that performance optimisation applies just as much to VBA as VB.Net.  
For example, a test of 1 million iterations of three versions of a Minimum function in 
pure VBA performed as follows: 
The longest time was Application.Min at 7862 ms 
A UDF took 889 ms 
In-line logic took 62 ms 
Sub testmin() 
Dim m As Long, min1 As Long, min2 As Long, min3 As Long 
Dim i As Long, lTime As Long 
min1 = 3 
min2 = 2 
min3 = 1 
lTime = GetTickCount() 
For i = 1 To 1000000 
m = Application.WorksheetFunction.Min(min1, min2, min3) 
Next 
Debug.Print GetTickCount - lTime; " ms"  
'Application.Min 7862 ms 
'Application.WorksheetFunction.Min 3292 ms 
'WorksheetFunction.Min 3166 ms 
'Since Min() function is not a part of VBA, use UDF 
lTime = GetTickCount 
For i = 1 To 1000000 
m = Min(min1, min2, min3) 
Next 
Debug.Print GetTickCount - lTime; " ms" ' 889 ms/million  
'Finally test using inline logic for min of 3 
lTime = GetTickCount 
For i = 1 To 1000000 
If min1 <= min2 And min1 <= min3 Then 
m = min1 
ElseIf min2 <= min1 And min2 <= min3 Then 
m = min2 
Else 
m = min3 
End If 
Next 
Debug.Print GetTickCount - lTime; " ms" ' 62 ms/million  
End Sub 
Function Min(ParamArray values()) As Double 'VBA ParamArray must be Variant 
Dim i As Long 
Min = values(0) 'always Base 0 for Paramarray 
For i = 1 To UBound(values) 
If values(i) < Min Then Min = values(i) 
Next 
End Function 
Background reading 
Going further to C#, C++  
Charles Williams recommends this automatic code converter to ease the transition 
from VB to C# and C++ : 
http://tangiblesoftwaresolutions.com/ 
http://smurfonspreadsheets.wordpress.com/2010/02/ 
Simon Murphy reviews ExcelDna, XLL+ 
Currently (August 2012) the only documentation on Excel-Dna is effectively the 
Google group.  http://ExcelDna.typepad.com is old, not updated since 2006. 
The following is extracted from http://groups.google.com/group/Excel-Dna 
On Feb 2, 11:36 pm, Govert van Drimmelen <gov...@icon.co.za> wrote: 
With Excel-Dna you can talk to Excel using either 
1. using the C API or 
2. using the COM object model. 
If you're coming from VBA, the COM automation interface will be more familiar. So I'll focus on 
option 2. 
Excel-Dna has no built-in definitions for the COM object model types like 'Range' and 'Worksheet'. 
However, Excel-Dna gives you a way to get to the 'root' Application object that you need for any other 
access to the COM object model - just call ExcelDnaUtil.Application and you'll get an Application 
object that refers to the instance of Excel hosting your add-in. (Something like 
CreateObject("Excel.Application") may or may not give you the right Excel instance.) 
From your VB.NET add-in you can now talk to the COM automation types either: 
2(a) Late-bound. Your variables are types as 'Object' (the .NET equivalent of Variant), either explicitly 
or implicitly by not giving a type. Then code like this will work: 
Dim xlApp 
Dim myRange 
xlApp = ExcelDnaUtil.Application 
myRange = xlApp.Range("A1") 
The disadvantage is that you have no intellisense and no checking at compile time. 
2(b) Early-bound using an interop assembly. In this case you reference a .NET assembly that contains 
definitions for the COM object model. This interop assembly defines the types like 'Range' and 
'Worksheet' to your .NET code. 
There are two options for the interop assembly: 
2(b)(i) Use the official version-specific Primary Interop Assembly (PIA). This is where the namespace 
Microsoft.Office.Interop.Excel comes from. You can download and install the Office 2010 versions 
here:http://www.microsoft.com/download/en/details.aspx?id=3508. Once installed, you'll be able to 
add references to the assembly called 'Microsoft.Office.Interop.Excel', where the 'Range' and 
'Worksheet' types are defined. 
2(b)(ii) Use a version-independent interop assembly like the NetOffice assemblies. 
In both cases you need to make sure that you use the ExcelDnaUtil.Application object as the root of 
your access to the object model. 
---------------- 
The type ExcelDna.Integration.ExcelReference is defined by Excel-Dna as a thin wrapper around the C 
API datatype used to indicate a sheet reference. In the sense that it denotes a part of a sheet, it is 
similar to the COM Range type, but to actually use the ExcelReference type you would typically pass it 
as an argument to some other C API calls. The only helper methods currently there are methods to to 
get and set data in the referenced area. 
On Feb 3, 11:50 am, Govert van Drimmelen <gov...@icon.co.za> wrote: 
If you use any of the interop assembly options (NetOffice or PIA) you can say: 
Dim ws As Worksheet 
Then you have to have some definition of that type at runtime too, so you need to have the interop 
assembly at the client too (however, see the 'Embed Interop Types' option below). 
Otherwise, if you have no interop assembly referenced, you can say 
Dim ws As Object 
or equivalently (and also compatible with VBA, as you understand) 
Dim ws 
Not having an interop assembly means no intellisense and no checking for mistakes at compile time. So 
you could have a mistake like: 
Dim myRange 
myRange = Application.ActiveSheet.Ragne("A1") 
and the error would only appear at runtime. 
The performance of the late-binding (particularly from VB.NET) is very good, so not really an issue. 
And there is no deployment issue since you are not referencing additional libraries. 
The PIA assemblies are installed in the Global Assembly Cache (GAC) so you should reference then 
from the .NET tab of the Add Reference dialog, and look for "Microsoft.Office.Interop.Excel" and 
"Office" -so do not browse to them explicitly. They should not be copied to your output directory either, 
since they live in the .NET GAC. To deploy to another machine, you need to run the downloaded 
installer for the Office Primary Interop Assemblies, which puts the PIA assemblies in the GAC and 
does some registration in the registry. 
For the NetOffice assemblies you can just copy them somewhere, Add Reference and Browse there and 
Copy to Output. Then with the packing you can put them inside the .xll, so no other files or registration 
would be needed.
Actually if you are using .NET 4 (Visual Studio 2010) and targeting a single Excel version, say Excel 
2010, there is another option I have not mentioned yet. The option was added in .NET 4 to embed some 
interop information in the assembly that you compile. I have not tried this myself, but it might work 
well for you. To do this you reference the PIA (via the .NET tab on Add References, not browsing) and 
then in the Reference properties you set "Embed Interop Type: True". That should put the required 
information in your compiled assembly, and then you don't have to distribute the interop assemblies to 
other users. This will only work under .NET 4, and probably won't work with the NetOffice assemblies 
since they are not 'Primary' interop assemblies. 
Microsoft and other sources 
http://blogs.msdn.com/b/pstubbs/archive/2004/01/15/59049.aspx  
Convert VBA to VB .Net and C# 
http://msdn.microsoft.com/en-us/vstudio/ms788236  
Free Book - Upgrading Microsoft Visual Basic 6.0 to Microsoft Visual Basic .NET 
http://www.upsizing.co.uk/Art52_VBAToNet2.aspx 
Converting Access VBA to VB.NET – General Principal s 
http://msdn.microsoft.com/en-us/library/aa192490%28v=office.11%29.aspx  
Converting Code from VBA to Visual Basic .NET 
Office 2003 
For more information, see Introduction to Visual Basic .NET for Visual Basic 
Veterans.  
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/vbcon/html/vboriintroductiontovisualbasic70forvisualbasicveterans.asp 
Data Access: see Comparison of ADO.NET and ADO. 
Conversion of UserForms to Windows Forms.   VBA UserForms cannot be copied or 
imported into Visual Studio .NET. In most cases, you will need to recreate your forms 
as Windows Forms. Many new form controls are also available in Visual Basic .NET, 
such as data-entry validators, common dialog boxes, hyperlinked labels, system tray 
icons, panels, numeric-up/downs, on-the-fly designable tree views, Help file linkers, 
ToolTip extenders, and more. 
http://msdn.microsoft.com/en-us/library/aa168292(v=office.11).aspx  
Understanding the Excel Object Model from a .NET Developer's Perspective 
http://msdn.microsoft.com/en-us/library/kehz1dz1(vs.71).aspx 
Introduction to Visual Basic .NET for Visual Basic Veterans 
http://msdn.microsoft.com/en-us/library/kehz1dz1(v=vs.90).aspx 
Help for Visual Basic 6.0 Users 
http://msdn.microsoft.com/en-us/library/office/bb687883(v=office.14).aspx 
Microsoft Excel 2010 XLL Software Development Kit  
http://oreilly.com/catalog/vbdotnetnut/chapter/appa.html 
Documents you may be interested
Documents you may be interested