how to show pdf file in asp.net c# : Select text in pdf file control SDK platform web page wpf windows web browser vba14-part1827

VBA
135
Creating an Export Macro
To create an export macro, create a Public Sub in either the User_Macros or System_Macros module. This 
subroutine can only accept 1 parameter that is an IBBExportRow (for more information, see the Programmer’s 
Reference in the help file) object. When the export is run, the macro is called (Number of Rows in the export) two 
times. The first time it is called, the macro returns a .BOF = True (Begin Of File) condition. This allows you to 
perform any initialization operations. The event is then called for each row in the export. The macro is called the 
last time with a .EOF = True (End Of File) condition so you can perform any shutdown or cleanup operations. The 
following code sample is an example of this.
Option Explicit
Private moExcel As Excel.Application
Private moWorksheet As Excel.Worksheet
Private msLetters() As String
Private mlNumLetters() As Long
Private mlMaxLetters As Long
Public Sub Export_Macro(oRow As IBBExportRow)
Dim lCount As Long
If oRow.BOF Then
'This clears the module-level variables so we 
'   can run this macro multiple times
Erase msLetters() 
Erase msLetters() 
mlMaxLetters = 0
'Opens Excel
Set moExcel = CreateObject("Excel.Application")
moExcel.Visible = True
'Add a new worksheet
moExcel.Workbooks.Add
Set moWorksheet = moExcel.Worksheets(1)
moWorksheet.Cells(1, 1) = "Letter"
moWorksheet.Cells(1, 2) = "Count"
Select text in pdf file - 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
find and replace text in pdf file; select text in pdf reader
Select text in pdf file - 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
find and replace text in pdf; search a pdf file for text
C
HAPTER
2
136
Refer to the IBBExportRow object (for more information, see the Programmer’s Reference in the help file) for 
additional properties you may find helpful when moving through the results of the export.
VBA User Field (Export)
One VBA user field is included in the field list per group defined for the export type. If this field is selected as an 
output field, it is a read/write field you can manipulate using the VBA macro. This is the only field in the export file 
the end-user has write access to during export processing. Export does not put anything in this field. To populate 
this field, a VBA Macro must be used. 
ElseIf oRow.EOF Then
'Fill in Worksheet
For lCount = 1 To mlMaxLetters
moWorksheet.Cells(lCount + 1, 1) = msLetters(lCount)
moWorksheet.Cells(lCount + 1, 2) = mlNumLetters(lCount)
Next lCount
moWorksheet.Cells(mlMaxLetters + 2, 2) = _
"=SUM(B2:B" & mlMaxLetters + 1 & ")"
moWorksheet.Columns("A:B").EntireColumn.AutoFit
'Clean up
Set moWorksheet = Nothing
Set moExcel = Nothing
Else
For lCount = 1 To mlMaxLetters
If msLetters(lCount) = oRow.Field(2) Then
'We found a match so we increment the counter for that letter
'and exit the sub and go to the next record in the export.
mlNumLetters(lCount) = mlNumLetters(lCount) + 1
Exit Sub
End If
Next lCount
'This means we didn't find a match
mlMaxLetters = mlMaxLetters + 1
ReDim Preserve msLetters(1 To mlMaxLetters)
ReDim Preserve mlNumLetters(1 To mlMaxLetters)
msLetters(mlMaxLetters) = oRow.Field(2)
mlNumLetters(mlMaxLetters) = 1
End If
End Sub
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Extract various types of image from PDF file, like XObject Image, XObject Form, Inline Image, etc. C#: Select An Image from PDF Page by Position.
cannot select text in pdf file; select text pdf file
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
RsterEdge XDoc PDF SDK for .NET, VB.NET users are able to extract image from PDF page or file and specified VB.NET : Select An Image from PDF Page by
how to select text in pdf image; how to select text in pdf
VBA
137
Remember the VBA user field can be selected more than one time per group and follows standard naming 
conventions. This way, more than one user defined field can be specified per group. 
Code Sample
The following macro shows an example of using BOF, EOF, and the VBA user field. Remember all properties of 
the IBBExportRow are defined in the Programmer’s Reference in the help file. For an export with three output 
fields selected (in the following order): 
Biographical 
1. Constituent name 
2. Age 
3. VBA User Field 
¾
When the export runs: 
1. The message “Begin processing” with an OK button displays. When the end-user clicks OK, the export 
continues. 
2. For each row, if the second export field (Age) is greater than 55, the third export field (VBA user field) is 
set to “Senior citizen discount”. 
3. The message “End processing” with an OK button displays. 
Public Sub UserExportMacro(oExportRow As IBBExportRow)
Const NAME_FIELD = 1
Const AGE_FIELD = 2
Const VBA_FIELD = 3
If oExportRow.BOF Then
'This code will be processed once (at the beginning of the file). 
'   Here you would connect to an external database or run setup code
MsgBox "Begin processing"
ElseIf oExportRow.EOF Then
'This code will be processed once (at the end of the file).  
'  Here you would disconnect/close external databases if needed or run 
'  end of processing code
MsgBox "End processing"
Else
'This code will be processed once per row
If oExportRow.Field(AGE_FIELD) > 55 Then
'You can only write to a "VBA User field"
oExportRow.Field(VBA_FIELD) = "Senior citizen discount"
End If 
End If
End Sub
VB.NET PDF Text Redact Library: select, redact text content from
Convert PDF to SVG. Convert PDF to Text. Convert PDF to JPEG. Convert PDF to Png, Gif, Bitmap Images. File & Page Process. File: Merge, Append PDF Files. File
how to search pdf files for text; select text in pdf file
C# PDF Text Redact Library: select, redact text content from PDF
Enable users abilities to adjust color and transparency while scraping text from PDF file. Able to redact selected text in PDF document.
pdf find and replace text; how to search text in pdf document
C
HAPTER
2
138
VBA DLL Macros
There are two main advantages to compiling your macros into a DLL (Dynamic Linking Library). The first is that 
you do not have to distribute the source code to your users. The second advantage is that the macros can be used 
from programs using TheRaiser’s Edge objects other than TheRaiser’s Edge shell. For example, you can build a 
custom Raiser’s Edge API application that takes advantage of your macros. 
The DLL Tool
Any type of macro that can be created from within TheRaiser’s Edge shell can also be created using the DLL 
Tool. Refer to “Macros” on page99 for details and code samples. 
Creating DLL Macros
First, enter the VBA IDE by running the RE7VBA.EXE program (located in TheRaiser’s Edge installation 
directory). 
• Create a new project—Launches VBA and creates a new project. This is the easiest way to create RE7 DLLs. 
• Open a project—Open an existing project for editing. 
• Show VBA—Launches VBA without creating a new project. 
• Exit—Closes the program.
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
is loaded as sample file for viewing on the viewer. See screeshot as below. Tools Tab. Item. Name. Description. 1. Select tool. Select text and image on PDF document
how to search a pdf document for text; pdf text search tool
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
is loaded as sample file for viewing on the viewer. See screeshot as below. Tools Tab. Item. Name. Description. 1. Select tool. Select text and image on PDF document
how to select all text in pdf file; search pdf for text
VBA
139
After you click Create a new project, the VBA IDE loads with a project shell. The shell includes one module, 
MacroClass1, containing variable declarations and initialization code. Do not make changes to this code. You can 
begin writing macros at the bottom of the MacroClass1 module.
Debugging DLL Macros
Debugging DLL macros is more complicated than debugging macros within the shell. To debug DLL macros, 
complete the following steps. 
1. Make sure you log out of TheRaiser’s Edge. 
2. From within the RE7VBA.EXE IDE, select the project (by default named “RE7Custom1”). 
3. Select Tools, RE7Custom1 Properties, from the menu bar. 
4. On the Debugging tab of the Properties dialog, select the Start Program. 
5. Select the option and type in the path to the re7.exe executable. 
6. You are ready to debug. Set any breakpoints or debug messages you need. 
7. Select Run, Run Project (Note: not Run Macro) from menu bar. This launches Re7.exe. 
8. As Re7.exe calls your macro class you are able to step through your code in the VBA IDE. 
Remember a DLL may become unregistered after debugging. If you stop debugging and your macros do not get 
called, you need to register the built DLL again, or rebuild it to automatically register it.
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit OpenOffice
pptx) on webpage, Convert CSV to PDF file online, convert CSV to save signatures to OpenOffice and CSV file. Viewer particular text tool can select text on all
text searchable pdf file; pdf text searchable
VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
PDF to text, C#.NET convert PDF to images, C#.NET PDF file & pages Pan around the PDF document. Select text and image to copy and paste using Ctrl+C and Ctrl+V
pdf find text; how to select all text in pdf
C
HAPTER
2
140
Running DLL Macros
Before you can run DLL macros, the DLL needs to be compiled and properly registered. To compile the DLL, 
select File, Make <name>.Dll from the VBA menu bar. Once the DLL is compiled, the Active Object and Data 
Object macros are accessed the same way the are within the program shell. Standard macros are accessed from the 
Tools, Run DLL Macro VBA menu bar. 
After compiling and registering the macro DLL, the macros are available the next time you log into TheRaiser’s 
Edge.
Customizing RE:Anywhere for Remote 
Access Using VBA
RE:Anywhere for Remote Access does not support the integrated editing of VBA macros, as TheRaiser’s Edge 
user interface (UI) does. Any macros you create for RE:Anywhere must be created with the RE:Anywhere VBA 
DLL Tool. To access this, double-click REWeb7VBA.exe in your TheRaiser’s Edge install folder. Using this tool 
in RE:Anywhere is slightly different than using similar tools in TheRaiser’s Edge. In TheRaiser’s Edge, code is 
placed in the events of Active objects (for example, ActiveConstituent_BeforeSave). In RE:Anywhere, 
IBBWebActive interfaces are implemented, and code is placed in their methods (for example, 
IBBWebActiveConstituent_BeforeSave). The macro class template that appears when Create a new project is 
clicked differs accordingly.
Any DLLs you create must be placed on the Web server hosting RE:Anywhere and registered. Do not place them 
on client workstations. In addition, any libraries to which your DLL has a reference must also be installed on the 
Web server hosting RE:Anywhere.
You cannot create conventional UI elements within your RE:Anywhere VBA macros. You can manipulate 
Blackbaud data objects, as well as read data from and write it to other applications (for more information see “VBA 
DLL Macro Permissions and Memory” on page 142). However, you cannot create Raiser’s Edge UI elements 
(such as CConstituentForm) or even call the MsgBox function. If you do, the RE:Anywhere application shuts 
down. In addition, you cannot add forms to your VBA project. There are a few ways you can return information 
about the progress of your macro to the RE:Anywhere UI. For more information, see the next section, The 
RE:Anywhere VBA Object Hierarchy.
Please note...
You can create as many VBA macro DLLs as you want. However, if several VBA DLLs have code for the same 
event, there is no way to call the order. We do not recommend having code for an event in one DLL which 
depends on code for the same event in another DLL. If you have questions, send an email to 
dssupport@blackbaud.com or call 1-800-468-8996 for support assistance. 
C# WPF PDF Viewer SDK to view PDF document in C#.NET
PDF to text, C#.NET convert PDF to images, C#.NET PDF file & pages Pan around the PDF document. Select text and image to copy and paste using Ctrl+C and Ctrl+V
can't select text in pdf file; search text in pdf using java
C# WPF PDF Viewer SDK to annotate PDF document in C#.NET
Default create. Click to select drawing annotation with default properties. Other Tab. 17. Text box. Click to add a text box to specific location on PDF page.
how to make a pdf file text searchable; pdf search and replace text
VBA
141
The RE:Anywhere for Remote Access VBA Object 
Hierarchy
When writing code using the VBA DLL Tool, you have access to the following object hierarchy off of the 
RE:Anywhere application object.
The RE:Anywhere application object implements the REWebApplicationMT interface, which exposes the 
following methods.
• SessionContext As IBBSessionContext: the SessionContext is your hook into API, and can be used to 
initialize other API objects. For more information, see the API Essentials Guide.
• WebContext As IBBWebContext: an interface that provides access to certain functionality specific to 
RE:Anywhere.
The IBBWebContext interface exposes the following methods.
• VBAContext As IBBVBAContext: an interface that provides access to certain functionality provided to help 
you customize RE:Anywhere using VBA.
The IBBVBAContext interface exposes the following properties and methods.
• AppendMessage(sMessage As String, [sDelimiter As String]): Using AppendMessage you can pass text to the 
Web context that displays when the current process is complete. The content of the message clears at the 
beginning of any VBA-enabled process and accumulates over calls made to AppendMessage during the 
process. When the process ends, the contents of the message display to the RE:Anywhere user in a message 
box. You can include in the message text basic HTML tags such as bold, italics, or a simple HTML table if 
you want. The message box sizes dynamically to accommodate the HTML it receives (however, only to a 
certain point). 
• GetMessage As String: returns the current contents of the message.
• ClearMessage: clears the contents of the message.
• Error As IBBVBAError: information about any run-time error encountered during the execution of your VBA 
code. This is used by RE:Anywhere to handle run-time errors robustly.
C
HAPTER
2
142
The IBBVBAError interface exposes the following properties and methods.
• Number As Long: the error number encountered by VBA at run-time.
• Description As String: the description of the error encountered by VBA at run-time.
• Source As String: a string identifying the source of the error encountered by VBA at run-time.
• Clear: allows the contents of the VBA error object to be cleared.
VBA DLL Macro Permissions and Memory
You may want to use VBA DLL macros to integrate other databases or applications with RE:Anywhere. If you do, 
remember that RE:Anywhere runs using the user context assigned to it in Internet Information Services (IIS), if 
Anonymous Access is enabled (or as the network user logged into the Web server if Anonymous Access is 
disabled). The user context employed by IIS, on behalf of RE:Anywhere, must have appropriate security rights to 
any local or network resources accessed or modified by your RE:Anywhere code. For example, your Web server is 
CLIENTWEB1 and you have Anonymous Access enabled. A developer writes a VBA DLL macro that reads data 
from and writes data to an Access database called Custom.mdb. This is located on another server called 
CLIENTDATA2. The anonymous user in IIS on CLIENTWEB1 needs to have rights to access resources over the 
network that connect the two machines. In addition, the anonymous user needs access to the CLIENTDATA2 
server with read and write access to Custom.mdb. A good way to manage this is to use the BBREWeb70Group 
created when RE:Anywhere is installed. For more information, see the RE:Anywhere for Remote Access 
Installation Guide
Any VBA DLL macro runs in process with the RE:Anywhere application on your Web server. This affects the 
server’s performance overall, for all users. The more complex a macro is, the more memory it uses, affecting 
overall performance. Make sure you monitor your code’s complexity or install additional server resources if 
necessary. In addition, any memory leak in VBA DLL macro code could cause periodic problems for the Web 
server that hosts RE:Anywhere. You should be extremely careful to release any resources obtained during the 
execution of your macros.
Debugging the VBA DLL Macro and Run-Time Errors
To use the interactive debugger in VBA to debug RE:Anywhere VBA DLLs, you need to disable Anonymous 
Access and enable Integrated Windows Authentication for all RE:Anywhere Web applications. To do this:
• Open My Computer. Select Manage and then Services and Applications from the treeview. 
• Select Internet Information Services. Right-click the REWeb70 application and select Properties. 
• Select the Direct Security tab and click Edit
• In the Anonymous access and Authentication access frames, unmark Anonymous Access and any other 
options that are marked. 
• Finally, mark Integrated Windows Authentication and then repeat this process for REWebRepView and 
REWeb70Viewers. After you complete this, right-click Internet Information Services and select Restart IIS
Please note...
The IBBVBAError interface exists so that information about run-time errors can communicate to 
RE:Anywhere. It is most likely you are not going to use this in your VBA code.
VBA
143
To debug an RE:Anywhere VBA DLL macro, log on to the RE:Anywhere Web server with administrative rights. 
Then, open the code using the RE:Anywhere VBA DLL Tool, on the server that hosts RE:Anywhere. Open the 
project properties screen by selecting Tools[Project Name] Properties from the menu bar. On the Debugging tab 
of that dialog, select Start browser with URL and enter the URL of the login page of RE:Anywhere (using the 
host machine’s name to identify it in the URL). For example, if RE:Anywhere is hosted on a Web server named 
CLIENTWEB1, the URL used on the Debugging tab should be “http://CLIENTWEB1/REWeb70/login.asp.” You 
should access the Web application locally. You do not want the execution to pass through any proxy server or 
firewall. Set breakpoints as necessary and select RunStart Project from the menu bar to launch the debugger.
Debugging is interfered if you recompile a project to a new filename without changing the project name and class 
name and if you do not unregister the old DLL. For example, you are working on a VBA DLL macro project named 
“WebTest”, the name of your macro class is “CWebTest1,” and you compile it to C:\WebTest.dll. When you 
launch the debugger, RE:Anywhere looks up the ProgID WebTest.CWebTest1 in the registry to find out that it is 
stored in C:\WebTest.dll. If the project is rebuilt to C:\WebTestNew.dll without unregistering the old 
C:\WebTest.dll, RE:Anywhere most likely still finds the old C:\WebTest.dll (which is still associated with the 
WebTest.CWebTest1 ProgID in the registry). If your breakpoints are not being hit when debugging, this is 
probably the cause.
If a bug in your VBA code results in a run-time error, a message box displays with a description of the error 
identifying the VBA DLL that raised it. If the event that raised the error has a parameter allowing you to cancel the 
event (for example, BeforeSave), it is not cancelled. However, code in downstream events is not executed. For 
example, if a run-time error occurs in the IBBWebConstituent_BeforeSave code, any change made to the 
constituent (either by the user or by the code up to the point of failure) saves to the database. However, if there is 
also code in IBBWebConstituent_AfterSave, it does not execute. An exception to this is the code in 
IBBWebActiveBatch_BeforePostRecord and IBBWebActiveBatch_HandleException. If there is a run-time error 
in one of these two methods, their code executes up to the point where the error occurs (for as many times as there 
are records or exceptions in the batch). The cancel flag in IBBWebActiveBatch_BeforePostRecord does not take 
effect even if set to True before the run-time error occurs. If a run-time error occurs in either of these methods, 
IBBWebActiveBatch_AfterPost does not execute.
Please remember...
RE:Anywhere needs to be able to read the interfaces of a VBA DLL from its file in order to access the DLL in 
debug mode. This means that any time a new interface or public object is added to the project, the DLL must be 
recompiled before that interface or object can be debugged. 
Please note...
Blackbaud strongly encourages you to write robust VBA code that handles errors correctly. Otherwise, memory 
leaks could result from unreleased resources. All code examples should include proper error handling. Errors 
can be reported back to the RE:Anywhere UI using the IBBVBAContext.AppendMessage method. If you have 
questions, send an email to dssupport@blackbaud.com or call 1-800-468-8996 for support assistance. 
C
HAPTER
2
144
Sharing Code Between RE:Anywhere for Remote Access 
and The Raiser’s Edge
Since the implementation of VBA DLL macros differs between TheRaiser’s Edge and RE:Anywhere, you may 
think you have to write all your code twice—once in the Active objects of VBA and once in the IBBWebActive 
methods of the RE:Anywhere DLL. If you want to code the same business logic into TheRaiser’s Edge and 
RE:Anywhere, you can use any third-party COM-enabled development tool (for example, Visual Basic) to write a 
COM object that implements your business logic, and call into that object from both TheRaiser’s Edge and 
RE:Anywhere VBA DLL macros. For example, you want to add a particular Constituent Code to any constituent 
before a constituent is saved. First, you can use Visual Basic to create a class (for example, CMyBusinessLogic) 
with a public method that adds the constituent code. Remember, this code can be called from either TheRaiser’s 
Edge or RE:Anywhere. The following code is an example of this.
Public Sub DoConstituentBeforeSave(ByRef oRecord As CRecord, ByVal bFromREAnywhere As 
Boolean, ByRef bCancel As Boolean, Optional ByRef oWebContext As IBBWebContext)
With oRecord.ConstituentCodes.Add()
.Fields(CONSTITUENT_CODE_fld_CODE) = "My Code"
.Fields(CONSTITUENT_CODE_fld_DATE_FROM) = Format(Now(), "mm/dd/yyyy")
End With
If bFromREAnywhere Then
oWebContext.VBAContext.AppendMessage "BeforeSave: Constituent Code Added."
Else
MsgBox "Constituent Code Added.", vbOKOnly, "BeforeSave"
End If
Documents you may be interested
Documents you may be interested