convert pdf to jpg c# codeproject : Decrypt pdf file online software Library dll winforms asp.net wpf web forms OOME_3_032-part1999

ThisComponent.storeAsURL(sUrl, args())
TIP
The com.sun.star.frame.XComponentLoader interface defines the object method 
LoadComponentFromUrl(), which is used to load a file. The different document types do not implement 
this interface, but the document frame and the desktop both implement the interface. The method 
LoadComponentFromUrl() also uses the values in Table 107 to direct how the file is loaded.
Listing 296. Save the document with an inappropriate file extension.
ThisComponent.storeToURL("file:///c:/two.xls", Array())
TIP
The macro in Listing 296 uses the file extension “xls”, which is typically used by Microsoft Excel. This 
does not cause the file to be stored using the Microsoft Excel format. The file is saved using the standard 
OOo file format if an export filter is not explicitly stated.
When you open a file, OOo checks to see if the file is in a standard OOo file format. If not, the file type is 
determined based on the file extension. I cannot even count the number of times that I have been asked why 
OOo is not able to open a comma-delimited text file. The usual answer is that a comma-delimited file must 
have the file extension CSV or OOo cannot recognize the file. Although the file extension is important while
loading a file from the GUI, it is not important while saving. If you want to save a file in a non-
OpenOffice.org native format, you must explicitly tell OOo to save in a different file format (see Listing 
297).
Listing 297. Export a document to the specified Microsoft Excel file format.
Dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "FilterName"         'I am so excited, which filter will we use?
args(0).Value = "MS Excel 97"       'Oh, the Excel 97 format!
ThisComponent.storeToURL("file:///c:/one.xls",args())
TIP
Although the export filter names are the same as the import filter names, not every import filter can export 
and not every export filter can import.
Impress and Draw, used to edit graphical content, support multiple draw pages. To export a draw page to a 
specific graphics format requires the use of a graphics export filter (see Listing 298). The media type must 
be specified or the export will fail.
Listing 298. Export the first draw page to a JPG file.
Dim oFilter
Dim args(1) as new com.sun.star.beans.PropertyValue
oFilter=CreateUnoService("com.sun.star.drawing.GraphicExportFilter")
oFilter.setSourceDocument(ThisComponent.drawPages(0))
args(0).Name = "URL"                 'Where the file will be saved
args(0).Value = "file:///c:/one.JPG" 'The destination URL
args(1).Name = "MediaType"           'What type of file
args(1).Value = "image/jpeg"         'The file type
oFilter.filter(args())
318
Decrypt pdf file online - C# PDF Digital Signature Library: add, remove, update PDF digital signatures in C#.net, ASP.NET, MVC, WPF
Help to Improve the Security of Your PDF File by Adding Digital Signatures
change pdf security settings; change security on pdf
Decrypt pdf file online - VB.NET PDF Digital Signature Library: add, remove, update PDF digital signatures in vb.net, ASP.NET, MVC, WPF
Guide VB.NET Programmers to Improve the Security of Your PDF File by Adding Digital Signatures
create pdf the security level is set to high; pdf secure signature
13.12. Manipulating styles
Styles provide a method of grouping formatting information. For example, a paragraph style defines the 
font, character size, margins, and many other formatting options. Changing a style changes every object 
using the style. The interface com.sun.star.style.XStyleFamiliesSupplier provides access to the styles used by
a document. The macro in Listing 299 displays the names of all styles in the current document; Figure 88 
shows the results for one of my documents.
Listing 299. Display styles used in a document.
Sub DisplayAllStyles
Dim oFamilies     'Families is interface com.sun.star.container.XNameAccess
Dim oFamilyNames  'Names of family types. Array of string
Dim oStyleNames   'Names of styles. Array of string
Dim oStyles       'Styles is interface com.sun.star.container.XNameAccess
Dim oStyle        'An individual style
Dim s As String   'Utility string variable
Dim n As Integer  'Index variable
Dim i As Integer  'Index variable
oFamilies = ThisComponent.StyleFamilies
oFamilyNames = oFamilies.getElementNames()
REM First, display the style types and the number
REM of each style type.
For n = LBound(oFamilyNames) To UBound(oFamilyNames)
oStyles = oFamilies.getByName(oFamilyNames(n))
s = s & oStyles.getCount() & " " & oFamilyNames(n) & CHR$(10)
Next
MsgBox s, 0, "Style Families"
REM Now, display all of the different style names
For n = LBound(oFamilyNames) To UBound(oFamilyNames)
s = ""
oStyles = oFamilies.getByName(oFamilyNames(n))
oStyleNames = oStyles.getElementNames()
For i = LBound(oStyleNames) To UBound (oStyleNames)
s=s + i + " : " + oStyleNames(i) + CHR$(10)
If ((i + 1) Mod 30 = 0) Then
MsgBox s,0,oFamilyNames(n)
s = ""
End If
Next i
If Len(s) <> 0 Then MsgBox s,0,oFamilyNames(n)
Next n
End Sub
319
C# PDF Password Library: add, remove, edit PDF file password in C#
Allow to decrypt PDF password and open a password protected document in to add password to PDF document online or in C#.NET WinForms for PDF file protection.
create pdf security; convert locked pdf to word
Figure 88. The style families in one of my Writer documents.
The different document types contain different types of styles. Figure 88 shows the style families in a Writer 
document. Calc documents contain the style families CellStyles and PageStyles; Impress documents contain 
the style families Graphics and Default; Draw documents contain the style family Graphic. Although each 
style type is different, they do have similarities. For example, each style implements both the 
com.sun.star.style.Style service and the com.sun.star.style.XStyle interface. The common methods and 
properties provide very rudimentary functionality (see Table 110).
Table 110. Object methods defined in the com.sun.star.style.Style service.
Method or 
Property
Description
isUserDefined()
Is this style user-defined? If not, it is included with OOo.
isInUse()
Is this style used in the document?
getParentStyle()
What is the parent style?
setParentStyle(name)
Set the parent style.
IsPhysical
Is the style physically created?
FollowStyle
Style name applied to the next paragraph. For example, while using a heading 
style I might want the next paragraph to be regular text.
DisplayName
Name of the style as displayed in the user interface.
IsAutoUpdate
If the properties of an object using this style are changed (for example, if I 
change the font), are these changes automatically updated to the style? 
Table 110 shows methods and properties that can be used to answer the common question, “How do I obtain
a list of styles that are currently used by a document?” See Listing 300 and Figure 89.
TIP
Listing 299 accesses styles by name; Listing 300 accesses styles by index. Notice that when getCount() 
returns 10, there are 10 items present, indexed 0 through 9.
Listing 300. Display all used paragraph styles.
Sub DisplayAllUsedParagraphStyles
Dim oStyles       'Styles is interface com.sun.star.container.XNameAccess
Dim oStyle        'An individual style
Dim s As String   'Utility string variable
Dim i As Integer  'Index variable
oStyles = ThisComponent.StyleFamilies.getByName("ParagraphStyles")
320
REM If getCount() says that there are 10 styles, this means from 0 to 9
For i = 1 To oStyles.getCount()
oStyle = oStyles.getByIndex(i-1)
If oStyle.isInUse() Then s = s & oStyle.DisplayName & CHR$(10)
Next
MsgBox s,0,"Paragraph Styles In Use"
End Sub
Figure 89. Paragraph styles used in a Writer document.
Initially, I was confused by the results shown in Figure 89 because it included paragraph styles that I thought
I wasn’t using. I assumed that I had made a mistake while writing my document, so I started looking for 
these accidentally used styles. To find the incorrectly styled text, I started with the Find & Replace dialog 
(Edit | Find & Replace). If you check the box labeled “Search for Styles,” all of the styles used in the 
document become available in the “Search for” drop-down box. I used this method to search for the style 
“Text body” (shown in Figure 89), but it was not found in the document. After some moments of confusion 
— in this case, roughly five minutes — I realized that I had not found a bug in OpenOffice.org, but rather I 
had uncovered an interesting behavior of which I had not been previously aware. When a style is used in a 
document, the parent style is listed as used even if it is not directly used. For example, in my document, the 
style “Table Contents” uses “Text body” as the parent style.
The different style types contain methods and properties appropriate for their type. See 
http://api.openoffice.org/docs/common/ref/com/sun/star/style/module-ix.html for the common services, 
interfaces, structs, and constants related to styles. The types shown in the style module are the base on which
the other styles are built. For example, the two services com.sun.star.text.TextPageStyle and 
com.sun.star.sheet.TablePageStyle both have the service com.sun.star.style.PageStyle in common. To get a 
feel for a style it is frequently expedient to start by inspecting the object.
MsgBox  vObj.dbg_methods
MsgBox  vObj.dbg_supportedInterfaces
MsgBox  vObj.dbg_properties
The style objects, like many other objects, implement the XPropertySet interface. The macro in Listing 301 
uses this interface to display a list of properties contained in the “_body text” paragraph style. Listing 301 
does not display the value of each property; it only displays the name of each property. It is an interesting 
exercise to modify Listing 301 to also display the value of each property that is a standard data type — a 
property may be a complex object.
Listing 301. Display Properties for a paragraph style.
Sub StyleProperties
Dim oStyles       'Styles is interface com.sun.star.container.XNameAccess
Dim s As String   'Utility string variable
321
Dim i As Integer  'Index variable
Dim Props         'Array of properties
REM Each style supports the com.sun.star.beans.XPropertySet interface
REM This supports the method getPropertySetInfo(), which allows
REM an enumeration of the contained properties.
REM Get properties returns an array of com.sun.star.beans.Property
oStyles = ThisComponent.StyleFamilies.getByName("ParagraphStyles")
Props = oStyles.getByName("_body text").getPropertySetInfo().getProperties()
For i = 0 To UBound(Props)         'For each property
s = s & Props(i).Name & CHR$(10) 'Include the property name and new line
If (i+1) MOD 30 = 0 Then         'If the string becomes too large
MsgBox s,0,"Style Properties"  'display the current string
s = ""                         'Reset the list 
End If
Next
REM In case the entire list was not printed.
If Len(s) <> 0 Then MsgBox s,0,"Style Properties"
End Sub
In my experience, it’s rare to access and inspect styles. It’s even less common to modify a style from a 
macro. There are times, however, when this is done. For example, the page size is defined by the current 
page style. Use the current controller to determine the current page style, and then use that to determine the 
page dimensions. Listing 302 displays the size of the page, the margins, and the current cursor position on 
the page. Figure 90 shows the results. 
TIP
The most common reason that I have seen for modifying a page style is to add a header or footer to the 
current page style.
Portions of this code are speculative and have changed since I originally created the code. The current 
controller returns the current cursor position based on the leftmost corner of the first page in the document. 
On page 200, therefore, the Y coordinate may be very large. The following code attempts to compensate for 
this, but, it does so poorly – where poorly means that I believe the answer is incorrect with respect to the top 
and the bottom of the page.
Listing 302. PrintPageInformation 
Sub PrintPageInformation
Dim oViewCursor     'Current view cursor
Dim oStyle          'Current page style 
Dim lHeight As Long 'Page height from Page Style in 1/100 mm
Dim lWidth  As Long 'Page width  from Page Style in 1/100 mm
Dim s As String     'Temporary string variable 
REM The current controller interfaces with the human — that's you!
REM Well, we hope you are human anyway.
REM Obtain the current view cursor from the controller. It is
REM the thing that knows where the current cursor is, after all.
oViewCursor = ThisComponent.CurrentController.getViewCursor()
REM That view cursor knows a lot of things, including the 
REM current page style. Use the page style name to get
REM a reference to the current page style.
s = oViewCursor.PageStyleName
322
oStyle = ThisComponent.StyleFamilies.getByName("PageStyles").getByName(s)
s = "Page Style = " & s & CHR$(10)
lHeight = oStyle.Height  'Page height in 1/100 mm
lWidth  = oStyle.Width   'Page width  in 1/100 mm
REM Page dimensions in mm, inches, and picas.
s = s & "Page size is " & CHR$(10) &_
"     " & CStr(lWidth / 100.0) & " mm By " &_
"     " & CStr(lHeight / 100.0) & " mm" & CHR$(10) &_
"     " & CStr(lWidth / 2540.0) & " inches By " &_
"     " & CStr(lHeight / 2540.0) & " inches" & CHR$(10) &_
"     " & CStr(lWidth *72.0 / 2540.0) & " picas By " &_
"     " & CStr(lHeight *72.0 / 2540.0) & " picas" & CHR$(10)
Dim dCharHeight As Double 'Character height in inches
Dim iCurPage As Integer   'Current page
Dim dXCursor As Double    'Distance from cursor to left in inches
Dim dYCursor As Double    'Distance from cursor to top in inches
Dim dXRight  As Double    'Distance from cursor to right in inches
Dim dYBottom As Double    'Distance from cursor to bottom in inches
Dim dBottom As Double     'Bottom margin in inches
Dim dLeft   As Double     'Left margin in inches
Dim dRight  As Double     'Right margin in inches
Dim dTop    As Double     'Top margin in inches
dCharHeight = oViewCursor.CharHeight / 72.0 'Convert points to inches
iCurPage =  oViewCursor.getPage()           'Page number
s = s & "Current page = " & iCurPage & CHR$(10)
dBottom = oStyle.BottomMargin / 2540.0 : dLeft = oStyle.LeftMargin / 2540.0
dRight  = oStyle.RightMargin  / 2540.0 : dTop  = oStyle.TopMargin  / 2540.0
s = s & "Margin (inches): Left= " & dLeft & "  Right= " & dRight & CHR$(10)
s = s & "Margin (inches): Top= " & dTop &  Bottom= " & dBottom & CHR$(10)
Dim v
REM Cursor's coordinates relative to the top left position of the page
REM Return type is com.sun.star.awt.Point
REM Units are in twips. Convert them to inches.
v = oViewCursor.getPosition()
REM Page number from the view cursor includes "phantom" pages because
REM two pages in a row must both be on say a right side.
REM v.Y does not include this.
Dim realPageNumber As Long
realPageNumber = Fix(v.Y / lHeight)
Dim realY : realY = v.Y - realPageNumber * lHeight
REM Place the cursor as the distance to the margin and then add the margin.
REM For the vertical height add half the character height. I should
REM probably do this for the character width as well for horizontal.
323
dYCursor = realY/2540.0 + dTop + dCharHeight / 2
dYBottom = (lHeight - realY)/2540.0 - dTop - dCharHeight / 2
dXCursor = v.X/2540.0 + dLeft
dXRight  = (lWidth - v.X)/2540.0 - dLeft
s=s &"Cursor is "&Format(dXCursor, "0.##") & " inches from left "&CHR$(10)
s=s &"Cursor is "&Format(dXRight, "0.##") & " inches from right "&CHR$(10)
s=s &"Cursor is "&Format(dYCursor, "0.##") & " inches from top "&CHR$(10)
s=s &"Cursor is "&Format(dYBottom, "0.##") & " inches from bottom "&CHR$(10)
s=s &"Char height = " & Format(dCharHeight, "0.####") & " inches"&CHR$(10)
MsgBox s, 0, "Page information"
End Sub
Figure 90. Information from the page style.
Calc documents are composed of spreadsheets. Each sheet can use a different page style. The macro in
Listing 302 obtains the current page style using the view cursor. To obtain the style from a Calc document, 
use the active sheet.
REM Use the currently active sheet to obtain the page style.
REM In a Calc document, the current controller knows which sheet
REM is active. 
Print "Style = " & ThisComponent.CurrentController.getActiveSheet().PageStyle
13.12.1. Style utilities
Although modifying styles using macros is easy, small details can cause big problems; for example, 
specifying a paragraph style is not available on the current computer. 
Listing 303. Check a document for a paragraph style.
Function DocHasParStyle(oDoc, sName$) As Boolean
Dim oStyles
oStyles = oDoc.StyleFamilies.getByName("ParagraphStyles")
DocHasParStyle() = oStyles.hasByName(sName)
End Function
Checking for the character style is equally trivial.
Listing 304. Check a document for a character style.
Function DocHasCharStyle(oDoc, sName$) As Boolean
Dim oStyles
oStyles = oDoc.StyleFamilies.getByName("CharacterStyles")
324
DocHasCharStyle() = oStyles.hasByName(sName)
End Function
To determine if a document supports a specific font, check the font descriptors available from the container 
window.
Listing 305. Check a document for a font.
Function DocHasFontName(oDoc, sName$) As Boolean
Dim oWindow
Dim oFonts()
Dim i%
oWindow  = oDoc.getCurrentController().getFrame().getContainerWindow()
oFonts() = oWindow.getFontDescriptors()
For i = LBound(oFonts()) To UBound(oFonts())
If oFonts(i).Name = sName Then
DocHasFontName() = True
Exit Function
End If
Next
DocHasFontName() = False
End Function
A property is a structure with a name and a value. The following macro accepts a name and a value and 
returns a property with the name and value. 
Listing 306. Create a property with the specified name and value.
'****************************************************************
'** Create and return a PropertyValue structure.
'****************************************************************
Function CreateProperty( Optional cName As String, Optional uValue ) As 
com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
CreateProperty() = oPropertyValue
End Function 
Listing 306 allows properties to be created directly in an array.
Listing 307. Creating properties used to create a character style.
REM Base style for all. 
REM computer code that is not color coded and used in regular text
REM uses this style.
oProps() = Array(CreateProperty("CharFontName", sFontName), _
CreateProperty("CharColor", RGB(0, 0, 0)), _
CreateProperty("CharNoHyphenation", True) )
CreateCharacterStyle("OOoComputerCode", oProps())
REM Base style for normal listings.
oProps() = Array(CreateProperty("ParentStyle", "OOoComputerCode"))
325
CreateCharacterStyle("_OOoComputerBase", oProps())
The difficult part is determining what properties to set and what properties to not set. It is a useful exercise 
to inspect a manually created style containing the values of interest. A property that is not specifically set 
inherits its value from the parent style or existing format; for example, setting a character style to bold but 
not specifying the font or font size, produces a character style that will not affect font or font size and only 
set the font to be bold.
Listing 308. Character styles used to format code examples.
'****************************************************************
'** Create character styles for StarBasic using the same colors
'** as the OOo IDE.
'****************************************************************
Function CreateStarBasicCharStyles()
Dim oProps()
REM If you do not want something to have a language, which prevents
REM a spell check, set CharLocale to noLocale.
Dim noLocale As New com.sun.star.lang.Locale
noLocale.Country = ""
noLocale.Language = "zxx"
If NOT CreateBaseCharStyles() Then
CreateStarBasicCharStyles() = False
Exit Function
End If
oProps() = Array(CreateProperty("ParentStyle", "_OOoComputerBase"), _
CreateProperty("CharColor", RGB(76, 76, 76)))
CreateCharacterStyle("_OOoComputerComment", oProps())
oProps() = Array(CreateProperty("ParentStyle", "_OOoComputerBase"), _
CreateProperty("CharColor", RGB(255, 0, 0)))
CreateCharacterStyle("_OOoComputerLiteral", oProps())
oProps() = Array(CreateProperty("ParentStyle", "_OOoComputerBase"), _
CreateProperty("CharLocale", noLocale), _
CreateProperty("CharColor", RGB(0, 0, 128)))
CreateCharacterStyle("_OOoComputerKeyWord", oProps())
oProps() = Array(CreateProperty("ParentStyle", "_OOoComputerBase"), _
CreateProperty("CharColor", RGB(0, 128, 0)))
CreateCharacterStyle("_OOoComputerIdent", oProps())
CreateStarBasicCharStyles() = True
End Function
The following macro creates a character style if it does not exist. A special check is performed to verify that 
the parent style exists; the parent style must be created before the child style.
Listing 309. Create a character style if it does not exist.
Sub CreateCharacterStyle(sStyleName$, oProps())
Dim i%
Dim oFamilies
326
Dim oStyle
Dim oStyles
oFamilies = ThisComponent.StyleFamilies
oStyles = oFamilies.getByName("CharacterStyles")
If oStyles.HasByName(sStyleName) Then
'PrintColor(oStyles.getByName(sStyleName).CharColor)
Exit Sub
End If
oStyle = ThisComponent.createInstance("com.sun.star.style.CharacterStyle")
For i=LBound(oProps) To UBound(oProps)
If oProps(i).Name = "ParentStyle" Then
If oStyles.HasByName(oProps(i).Value) Then
oStyle.ParentStyle = oProps(i).Value
Else
Print "Parent character style (" & oProps(i).Value & _
") does not exist, ignoring parent."
End If    
oStyle.ParentStyle = oProps(i).Value
Else
oStyle.setPropertyValue(oProps(i).Name, oProps(i).Value)
End If
Next
oStyles.insertByName(sStyleName, oStyle)
End Sub
A paragraph style is a bit more complicated because a few elements require special consideration; for 
example, setting tab stops.
Listing 310. Create a paragraph style if it does not exist.
Sub CreateParStyle(sStyleName$, oProps())
Dim i%, j%
Dim oFamilies
Dim oStyle
Dim oStyles
Dim tabStops%
oFamilies = ThisComponent.StyleFamilies
oStyles = oFamilies.getByName("ParagraphStyles")
If oStyles.HasByName(sStyleName) Then
Exit Sub
End If
oStyle = ThisComponent.createInstance("com.sun.star.style.ParagraphStyle")
For i=LBound(oProps) To UBound(oProps)
If oProps(i).Name = "ParentStyle" Then
If oStyles.HasByName(oProps(i).Value) Then
oStyle.ParentStyle = oProps(i).Value
Else
Print "Parent paragraph style (" & oProps(i).Value & _
") does not exist, ignoring parent"
End If
ElseIf oProps(i).Name = "ParaTabStops" Then
tabStops = oProps(i).Value
327
Documents you may be interested
Documents you may be interested