how to show .pdf file in web application using c# : Search text in pdf image SDK control API .net azure winforms sharepoint UsingFlexCelPdfExport1-part1769

You will get a similar dialog to the one you got in Excel 2003. Again, make sure the normal 
style uses a font you have in your server. 
The “Normal” style is used not only for empty cells, but to set the column widths. For 
example, this is how an empty sheet looks with “Normal” style using Arial 10: 
And this is how it looks using Script MT 36: 
As you can see, the font used in the “Normal” style is used to draw the headings “A”, “B”, 
“1”, etc., and even more important, it is used to calculate the column width. Column with is 
measured as a percentage of the “0” character width in the normal font. If you change 
the normal font, column widths will change. 
If you do not have the “Normal” font installed in your server, Windows will replace it with a 
substitute, and it will probably have a different width for the “0”, leading to a wrong 
column width. So it is important that you have that font installed in your server. 
Dealing with missing fonts and glyphs 
There are three main font-related problems you might find when converting an xls file to 
PDF, and we are going to cover them in this section. The errors are non fatal, and that 
means that the file will be generated anyway, but it will not look as good as it could.  
Search text in pdf image - search text inside PDF file in, 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; search pdf files for text
Search text in pdf image - VB.NET PDF Text Search Library: search text inside PDF file in, 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
search text in multiple pdf; how to search pdf files for text
You can control what to do when any of these errors happen by hooking an event to the 
FlexCelTrace static class. From this event, you could write a log file when any of these errors 
happen, warn the user, or just raise an exception if you want to abort file generation. 
Problem 1: Missing fonts 
This is normally the easiest one to solve, and normally happens when deploying an 
application to a server. As explained in the section above, this often happens with “Calibri” 
font that gets installed by Excel 2007, and probably will not be installed in the server. As 
FlexCel needs the font to be present in order to create the pdf file, it will substitute it with a 
“similar” font, normally Arial or Microsoft sans serif. 
This might not be an issue if there are any fonts in the system that are similar to the one 
being replaced, but it can be a big issue with Calibri, since that font has very different 
metrics from the font it gets replaced (Arial). As an example, here you can see an Excel 
2007 exported to PDF in a machine that has Calibri installed an in other that doesn't: 
With Calibri installed in the fonts folder: 
Without Calibri installed (Replaced by Arial): 
As you can see in the images, Calibri is much narrower than Arial, so the text in cell B2 “This 
Text is in Calibri” is cut and only “Calibri” shows in the second screenshot. If you are seeing 
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
Home ›› XDoc.PDF ›› VB.NET PDF: Extract PDF Image. Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document in VB.NET Project.
search text in pdf image; pdf searchable text converter
VB.NET PDF insert image library: insert images into PDF in
VB.NET code to add an image to the inputFilePath As String = Program.RootPath + "\\" 1.pdf" Dim doc New PDFDocument(inputFilePath) ' Get a text manager from
make pdf text searchable; pdf find text
lots of cut text in the server while the files are exported fine in your development machines, 
this is probably the cause. 
The solution for this problem is easy; make sure you have all the fonts you use installed in 
your system. If you want to get notified whenever this automatic font replace happens, 
you can catch the “FlexCelError.PdfFontNotFound” errors in FlexCelTrace, and use it to 
notify the user he should install the missing fonts. 
Problem 2: Missing Glyphs 
This problem happens when you are using a font that doesn't contain the character you 
want to display. If you for example write 
“日本 に行きたい。”  
inside a cell and keep the font “Arial”, you will see the correct characters in Excel, but 
when exporting you might see blank squares like this: 
The reason for this is that “Arial” doesn't actually contain Japanese characters, and Excel is 
“under the hood” using other font (normally MS Mincho) to display the characters. To 
emulate this behavior, FlexCel provides a “FallbackFonts” property, where you can enter a 
list of fonts to try if the font that was supposed to be used doesn't have the character. If no 
font in the FallbackFont chain contains the glyph, you will see a blank square. 
The solution in this case is to use fonts that actually have the characters you want to 
display, or ensure that some fonts in the FallbackFonts properties have them. By default 
FlexCel uses “Arial Unicode MT” as a fallback font, but you can add as many others as you 
If you want to get notified when this happens so you can warn the user to change the 
fonts, you can catch the “FlexCelError.PdfGlyphNotInFont” and 
“FlexCelError.PdfUsedFallbackFont” errors in FlexCelTrace. 
Problem 3: Faux Italics and Bolds 
The last problem is related to fonts that don't have a specific “Italic” or “Bold” variant. 
Normally, a quality font comes with four files including four variants of the font: Bold, Italic 
and BoldItalic. If you look in your font folder, you will see things like this: 
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
PDF ›› C# PDF: Extract PDF Image. How to C#: Extract Image from PDF Document. Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document.
cannot select text in pdf file; pdf editor with search and replace text
C# Create PDF from images Library to convert Jpeg, png images to
If you want to turn PDF file into image file format in C# application, then RasterEdge XDoc.PDF for .NET can also help with this.
convert pdf to searchable text; search pdf documents for text
That is, a different file for each font variant. If the font comes with only one “Normal” file, 
the italics can be faked by the system by slanting the characters, and bold can be faked 
by adding some weight to the characters. But of course this leads to low quality results, and 
should be avoided whenever possible.   
There is other problem with “fake” Italics and Bold, and that is that Acrobat will not show 
them when you embed the fonts. 
The solution to this problem is to use fonts that include the variants you need.  
Normally this is not a problem, since all quality fonts designed to be used with Italics and 
Bold already come with files for those variants. But if absolutely you need to use fonts that 
don't come with the variants, you might at least not embed the fonts, so the “fake” style 
will show.  
To be notified whenever FlexCel finds a “fake” style, you can use the 
“FlexCelError.PdfFauxBoldOrItalics” notifications in FlexCelTrace. 
C# PDF insert image Library: insert images into PDF in, ASP
Free PDF image processing SDK library for Visual Studio .NET program. Powerful .NET PDF image edit control, enable users to insert vector images to PDF file.
select text in pdf file; how to select text in pdf and copy
C# PDF insert text Library: insert text into PDF content in
Text to PDF. C#.NET PDF SDK - Insert Text to PDF Document in C#.NET. Providing C# Demo Code for Adding and Inserting Text to PDF File Page with .NET PDF Library.
search a pdf file for text; how to select text in pdf reader
Accessibility of  the generated files 
Setting a natural language 
It is important to set a natural language for the document if you know it. This way a screen 
reader or a text-to-speech engine will be able to correctly read the text out loud. 
To set up the language in FlexCel, use code like this: 
using (FlexCelPdfExport pdf = new FlexCelPdfExport(xls)) 
pdf.Properties.Language = "es-es"; 
Tagging the files 
FlexCel allows to create Tagged PDFs, which contain extra information about the 
document structure (like for example what are the cells in the table). This information allows 
a screen reader to know the correct order to read the text.  
As it is an important accessibility feature, since FlexCel 6.5 files are tagged by default. You 
must explicitly turn tagging off in order to get untagged pdfs. Note that tagged pdfs are 
bigger than normal ones, so this might be a reason to turn it off. But also note that newer 
Acrobat versions will display a dialog when opening untagged pdf files: 
C# PDF Convert to Text SDK: Convert PDF to txt files in
be converted to plain text. Text can be extracted from scanned PDF image with OCR component. Professional PDF to text converting library
how to select text in a pdf; how to select all text in pdf
C# PDF replace text Library: replace text in PDF content in
The following demo code will show how to replace text in specified PDF page. PDFDocument doc = new PDFDocument(inputFilePath); // Set the search options.
how to search text in pdf document; how to select all text in pdf file
Creating PDF/A files 
PDF/A files are files designed specifically for archiving. FlexCel has full support for the 
variations of the standard: PDF/A1a, PDF/A1b, PDF/A2a, PDF/A2a, PDF/A3a and PDF/A3b. 
If you need to choose a version, we would recommend PDF/A2 or PDF/A3. PDF/A1 is a little 
too restrictive, and lacks some features that FlexCel could use to generate better files: It 
doesn’t support transparency and it doesn’t allow compressing the tags in the document. 
Due to the lack of transparency, if you have any transparent image in your file it might look 
wrong. Due to the lack of tag compression, files will be much bigger than PDF/A2. 
In order to create PDFA files, you need to set PdfWriter or FlexCelPdfExport property 
PdfType  to the correct version. For example: 
pdf.PdfType = TPdfType.PDFA1 
Then you need to choose if you want to generate “a” (PDF/A1a, PDF/A2a, PDF/A3a) or 
) or 
“b” (PDF/A1b, PDF/A2b, PDF/A3b) files. “a” files are the most complete, and they require 
you to tag the file. 
When using FlexCelPdfExport, you would just set the correct option by changing the 
TagMode property: 
pdf.TagMode = TTagMode.None;  //Generates “b” files 
As the TagMode is Full by default, FlexCel by default generates “a” files. 
When using PdfWriter, you need to manually tag the files, as FlexCel can’t know the 
structure form the drawing commands. You need to use the methods 
TagContentBegin / 
to specify the blocks of text you want to tag, and then set the 
property to specify how that tagged content relates to the structure of the 
file. Tagging in PdfWriter is an advanced topic outside the scope of this document. Due to 
the way PdfWriter is designed, it won’t keep tags in memory and you need to write them 
directly to the file as you are creating it. 
Signing PDF Files 
FlexCel allows you to sign your PDF files with a certificate, so any change to the file will 
invalidate it. This is how a signature looks like in Acrobat 8: 
In Acrobat 7 you will see the same sidebar at the left, but there is no blue bar at the top. 
Important Note: FlexCel signing algorithm is supported only in Acrobat 7 or 
newer, it will not work in Acrobat 6 or 5 since those versions do not have 
the required support. Because of this reason, the header in the generated 
PDF file will automatically switch to say that the file is “Adobe 7 or newer” 
compatible when you include a signature in your files. If there are no 
signatures, the default header specifies the file is “Acrobat 5 or newer” 
It is also worth noting that users will still be able to see the generated files in Acrobat 5 
or 6, but they will get a warning when opening them and the signature will not validate. 
Concepts of signing are outside the scope of this document, but you can find a lot of 
information in signing in the Acrobat documentation or just in Internet. A good place to 
start might be:  
Customizing the Signing Engine 
FlexCel comes with a built-in signing implementation, but it allows you to change it by your 
own. There is mainly one reason you might want to do that: 
The  built-in engine is not optimal. It uses the standard .NET PKCS classes, and those 
classes do not allow for incremental signing. This means that the whole PDF document 
must be kept in memory so we can pass all the contents as a byte array to the signing 
method in .NET. If you have a library that supports incremental signing, that is, each 
time a small group of bytes is written you recalculate the hash instead of calculating 
the whole hash at the end, you can save memory by creating your own engine. Just 
make sure you need the extra performance before doing so, because normally the 
built in implementation is good enough, and has the advantage of being 100% 
managed and built-in in the framework. 
If you decide to create your own Signer class, you need to implement two simple abstract 
1. TPdfSigner: 
This is the class that implements the signing. You need to override three methods: 
Write, GetSignature and EstimateLength. The first method is called each time some bytes 
are written to the file. You should use them to calculate a PKCS7 signature with them. If you 
can't calculate the signature incrementally you will need to buffer them and calculate it 
when GetSignature is called. The second method, GetSignature, is called only once at the 
end of the pdf file and it should return the PKCS encoded signature as an array of bytes. 
The third method must return the length of the byte array that will be returned by 
GetSignature or a bigger number, but never smaller. Note that this third method will be 
called before the signature is computed so you might need to estimate the length. 
2. TPdfSignerFactory: 
This class is really simple, and it just should return an instance of the particular TPdfSigner 
child you created in 1). 
When creating your own classes, it might be helpful to look at the TBuiltInSigner 
implementation on file Signatures.cs. Also look at  PdfExport demo. 
Export to PDF and FlexCel recalculation 
When you create a report with FlexCel most formulas are recalculated, but some are not. 
This is not an issue when opening the xls file on Excel, as Excel will recalculate the whole file 
again, but will be an issue when exporting the xls file directly to PDF. 
FlexCel implements over 200 Excel functions, and most used formulas are all there so you 
should not experience big issues. But you need to make sure you do not use any not 
implemented function to get a properly recalculated sheet. You can find a list of currently 
implemented functions on the file SupportedFunctions.xls. All functions mentioned there 
are safe to use.   
FlexCel comes with a little utility, the demo “Validate Recalc” that will allow you to check if 
all the formulas on an xls file are ok to use. And of course you can use the code on this 
demo inside your own application to tell your users when they use a not supported formula. 
Using FlexCelPdfExport on MONO (linux) 
Mono is an incredible platform to deploy your .NET applications, and as FlexCel.NET is 100% 
managed code, most of the time running a FlexCel.NET application on MONO means just 
to copying the files to a linux server. 
But in the case of Pdf export there is one issue that you need to consider: 
As explained before on this document, in Linux the True-Type fonts are not installed on 
“\Windows\Fonts”, and might be on “/usr/X11R6/lib/X11/fonts/truetype”  (this folder 
is folder 
might change with the Linux distribution) . You can find where the ttf files are by writing  
find / -name *.ttf 
on a terminal window.  
Note that FlexCel will search for files with a ttf extension in lowercase. 
Fonts in Windows might be uppercase (i.e. SYSTEM.TTF), and you need 
to rename them (i.e. SYSTEM.ttf). 
If your ttf fonts are not on “/usr/X11R6/lib/X11/fonts/truetype”, you should make a symbolic 
link between the place where flexcel.dll is and the Font folder. For example,  
ln -s /font_folder Path_Where_FlexCel.dll_is/Fonts 
If you prefer, instead of creating a symbolic link you can create an OnGetFontFolder 
event. The drawback of this is that the folder will be hardcoded on the application, and it 
will not be so easy to move it from a machine to other. 
By the way, you will probably want to install the core Windows true type fonts on Linux:  
Your Linux distribution might have those core fonts available as RPM too. 
Documents you may be interested
Documents you may be interested