convert pdf to jpg c# codeproject : Convert locked pdf to word SDK application API .net html winforms sharepoint OOME_3_049-part2017

Table 188 and Table 189 reveal that there is a great deal of redundancy. For example, you can specify if the 
sort is case sensitive either globally (using Table 189) or for each specific field (using Table 188). Although 
the redundant fields in Table 189 are not required and are therefore typically not used, a new set of sort 
descriptors has been introduced (see Table 190). Although you can use properties from Table 189 or Table 
190, you cannot mix the two. My recommendation is that you use the new set in Table 190; the OO 
development team has already deprecated the use of the Orientation property in Table 189.
Table 190. The new way to specify a sort using a SortDescriptor2.
Property
Description
SortFields
Array of type TableSortField (see Table 188) that directs what is sorted.
MaxSortFieldsCount
Long Integer that specifies the maximum number of sort fields the descriptor can hold. This 
value cannot be set, but it can be read. 
IsSortColumns
If True, columns are sorted. If False, rows are sorted.
BindFormatsToContent
If True, cell formats are moved with the contents during the sort. This property matters only 
if different cells in the sort range use different formatting.
IsUserListEnabled
If True, a user-defined sorting list is used from the GlobalSheetSettings.
UserListIndex
Specify which user-defined sorting list is used as a Long Integer.
CopyOutputData
If True, the sorted data is copied to another position in the document.
OutputPosition
CellAddress that specifies where to copy the sorted data (if CopyOutputData is True).
ContainsHeader
If True, the first row or column is considered a header and is not sorted.
The first step in sorting a range is to define the fields on which to sort by using an array of type SortField. 
Next, define the properties from Table 190 that you intend to use in the sort. Finally, call the sort() routine 
on the range to sort. The macro in Listing 431 performs a descending sort on the first column.
Listing 431. Sort one column in a Calc sheet.
Sub SortColZero
Dim oSheet
Dim oRange
Dim oSortFields(0) as new com.sun.star.util.SortField
Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
oSheet = ThisComponent.Sheets(0)
REM Set the range on which to sort
oRange = oSheet.getCellRangeByName("B28:D33")
REM Sort on the first field in the range
oSortFields(0).Field = 0
oSortFields(0).SortAscending = FALSE
REM Set the sort fields to use
oSortDesc(0).Name = "SortFields"
oSortDesc(0).Value = oSortFields()
REM Now sort the range!
oRange.Sort(oSortDesc())
End Sub
488
Convert locked pdf to word - 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
decrypt pdf password online; create pdf security
Convert locked pdf to word - 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
change security settings pdf; add security to pdf in reader
Sorting on two columns rather than just one is as easy as adding a second sort field. Listing 432 sorts on the 
second and third columns.
Listing 432. Sort two columns in a Calc sheet.
Sub SortColOne
Dim oSheet
Dim oRange
Dim oSortFields(1) as new com.sun.star.util.SortField
Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
oSheet = ThisComponent.Sheets(0)
REM Set the range on which to sort
oRange = oSheet.getCellRangeByName("B28:D33")
REM Sort on the second field in the range
oSortFields(0).Field = 1
oSortFields(0).SortAscending = True
oSortFields(0).FieldType = com.sun.star.util.SortFieldType.NUMERIC
REM Sort on the third field in the range
oSortFields(1).Field = 2
oSortFields(1).SortAscending = True
oSortFields(1).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
REM Set the sort fields to use
oSortDesc(0).Name = "SortFields"
oSortDesc(0).Value = oSortFields()
REM Now sort the range!
oRange.Sort(oSortDesc())
End Sub
The method createSortDescriptor() returns an array of property values that define how a sort should occur. 
Inspecting this created sort descriptor indicates that you can use a maximum of three fields when sorting (see
the MaxSortFieldsCount in Table 190). The macro in Listing 433 creates a sort descriptor and then displays 
the properties that it contains (see Figure 105).
Listing 433. Display sort descriptor properties in Calc.
Sub DisplaySortDescriptor
On Error Resume Next
Dim oSheet
Dim oRange       ' A range is needed to create the sort descriptor.
Dim oSortDescript
Dim i%
Dim s$
Dim oDoc          'Reference newly created calc document.
oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_default", 0, Array())
oSheet = oDoc.Sheets(0)
oRange = oSheet.getCellRangeByName("B28:D33")
oSortDescript = oRange.createSortDescriptor()
For i = LBound(oSortDescript) To UBound(oSortDescript)
s = s & oSortDescript(i).Name & " = "
489
C# Word - Extract or Copy Pages from Word File in C#.NET
C#.NET convert PDF to text, C#.NET convert PDF to images VB.NET How-to, VB.NET PDF, VB.NET Word Besides, the capacity to be locked against editing or processing
copy text from encrypted pdf; decrypt pdf file online
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
even though they are using different types of word processors. Besides, the capacity to be locked against editing or processing by others makes PDF file become
decrypt pdf; pdf encryption
s = s & oSortDescript(i).Value
s = s & CHR$(10)
Next
MsgBox s, 0, "Sort Descriptor"
End Sub
Figure 105. Sort descriptor attributes.
15.5. Sheets
Most of a Calc document’s functionality is contained in the individual sheets rather than the document as a 
whole. The interfaces implemented by the spreadsheet document (see Table 160) are primarily related to the 
document as a whole, rather than the individual sheets. 
The sheets in a Calc document implement the SheetCellRange service, which provides extensive 
functionality. The functionality provided by sheet cell ranges applies to any sheet cell range and is not 
limited to sheets. In other words, any range is able to use the methods implemented by the SheetCellRange 
service. The individual sheets support other interfaces that are not directly related to sheet cell ranges (see
Table 191).
490
C# PowerPoint - Extract or Copy PowerPoint Pages from PowerPoint
PDF, VB.NET delete PDF pages, VB.NET convert PDF to SVG. VB.NET How-to, VB.NET PDF, VB.NET Word Besides, the capacity to be locked against editing or processing
pdf unlock; creating secure pdf files
VB.NET Word: Extract Text from Microsoft Word Document in VB.NET
Word documents are often locked as static images and the through VB.NET programming, convert Word document to & profession imaging controls, PDF document, tiff
pdf security password; pdf security remover
Table 191. Interfaces implemented by the com.sun.star.sheet.Spreadsheet service.
Interfaces
Description
com.sun.star.sheet.XSpreadsheet
Methods to create a cell cursor.
com.sun.star.container.XNamed
Access the spreadsheet name.
com.sun.star.util.XProtectable
Methods to protect and unprotect the individual sheet.
com.sun.star.sheet.XDataPilotTablesSupplier
Access the DataPilot tables with the method 
getDataPilotTables(). In LibreOffice, the Data Pilot is called 
Pivot Tables.
com.sun.star.sheet.XScenariosSupplier
Access the scenarios with the method getScenarios().
com.sun.star.sheet.XSheetAnnotationsSupplier
Access the annotations with the method getAnnotations().
com.sun.star.drawing.XDrawPageSupplier
Access the sheet’s draw page with the method getDrawPage().
com.sun.star.table.XTableChartsSupplier
Access the document’s chart objects with the method 
getCharts().
com.sun.star.sheet.XCellRangeMovement
Move cell ranges inside the sheet or to other spreadsheets in this 
document.
com.sun.star.sheet.XPrintAreas
Access to the print-area settings of this sheet. 
com.sun.star.sheet.XSheetPageBreak
Access and modify the page breaks in this sheet.
com.sun.star.sheet.XScenario
Provide methods for a scenario sheet.
com.sun.star.sheet.XSheetOutline
Access the row and column outline settings for the sheet.
com.sun.star.sheet.XSheetAuditing
Look for linked cells (detective).
com.sun.star.sheet.XSheetLinkable
Methods to link to existing sheets in other documents.
15.5.1. Linking to an external spreadsheet
An individual sheet may link to a sheet from another spreadsheet document. Linking causes the “link sheet” 
to act as a container for the “linked sheet.” After linking to a sheet, although you can modify the linked sheet
in the container, these updates are not propagated back to the original document. If the linked sheet is 
changed in the original document, the change is not visible in the link document unless the link itself is 
refreshed. You can link documents by using one of the enumerated values in Table 192.
Table 192. Values supported by the com.sun.star.sheet.SheetLinkMode enumeration.
Value
Description
com.sun.star.sheet.SheetLinkMode.NONE
The sheet is not linked.
com.sun.star.sheet.SheetLinkMode.NORMAL
Copy the entire content including values and 
formulas.
com.sun.star.sheet.SheetLinkMode.VALUE
Copy the content by value; each formula’s returned 
value is copied rather than the formula itself.
Use the link() method to establish a link with a sheet in another document. Table 193 lists the link-related 
methods supported by a sheet.
Table 193. Methods defined by the com.sun.star.sheet.XSheetLinkable interface.
Method
Description
getLinkMode()
Get the sheet’s link mode (see Table 192).
491
C# Excel - Extract or Copy Excel Pages to Excel File in C#.NET
C#.NET convert PDF to text, C#.NET convert PDF to images VB.NET How-to, VB.NET PDF, VB.NET Word Besides, the capacity to be locked against editing or processing
change security settings on pdf; convert secure pdf to word
Method
Description
getLinkMode(SheetLinkMode)
Set the link mode (see Table 192).
getLinkUrl()
Get the link URL.
setLinkUrl(url)
Set the link URL.
getLinkSheetName()
Get the name of the linked sheet.
setLinkSheetName(name)
Set the name of the linked sheet.
link(url, sheetName, filterName, filterOptions, 
SheetLinkMode)
Link the sheet to another sheet in another document.
The macro in Listing 434 creates a sheet named “LinkIt” and then links to a sheet in a specified external 
document. If the “LinkIt” sheet already exists, the link is obtained from the spreadsheet document and the 
link is refreshed. Refreshing a link causes the data linked into the current document to be updated.
Listing 434. Link to an external sheet.
Sub LinkASheet
Dim oSheets          'The sheets object that contains all of the sheets
Dim oSheet           'Individual sheet
Dim oSheetEnum       'For accessing by enumeration
Dim s As String      'String variable to hold temporary data
Dim i As Integer     'Index variable
Dim sURL As String   'URL of the document to import
Dim oLink            'The link object
sURL = "file://C:/My%20Documents/CH15/test.ods"
oSheets = ThisComponent.Sheets
If oSheets.hasbyName("LinkIt") Then
REM The links are available from the document object
REM based on the URL used to load them.
oLink = ThisComponent.SheetLinks.getByName(sURL)
oLink.refresh()
MsgBox "The sheet named LinkIt was refreshed"
Exit Sub
End If
REM Insert the new sheet at the end.
oSheets.insertNewByName ("LinkIt", oSheets.getCount())
oSheet = oSheets.getByName("LinkIt")
oSheet.link(sURL, "Sheet1", "", "", com.sun.star.sheet.SheetLinkMode.NORMAL)  
End Sub
The first application that I saw for linked sheets was to consolidate a list of various investments that were 
tracked in different Calc documents. Each of the Calc documents contained a summary sheet for the 
investments in the document. A single summary document inserted links to the summary page for each of 
the other investment sheets.
Although linked sheets are nice, they are sometimes overkill. If you don’t want to reference an entire sheet 
from another document, you can set the formula to directly access just one cell. See Listing 435.
492
Listing 435. Link cell A1 to K89 in another document.
oCell = thiscomponent.sheets(0).getcellbyposition(0,0) ' A1 
oCell.setFormula("=" & "'file:///home/USER/CalcFile2.odt'#$Sheet2.K89")
15.5.2. Finding dependencies by using auditing functions
The methods queryDependents() and queryPrecedents(), listed in Table 178, return a list of cells that depend 
on a range. The query methods are useful for writing macros that manipulate each dependent cell. The 
auditing functionality provided by the XSheetAuditing interface provides methods for visualizing cell 
dependencies (see 
Table 194).
Table 194. Methods supported by the com.sun.star.sheet.XSheetAuditing interface.
Method
Description
hideDependents(CellAddress)
Remove arrows for one level of dependents; return True if cells are marked.
hidePrecedents(CellAddress)
Remove arrows for one level of precedents; return True if cells are marked.
showDependents(CellAddress)
Draw arrows from the CellAddress (see Table 162) to its dependents; return True if 
cells are marked.
showPrecedents(CellAddress)
Draw arrows to the CellAddress (see Table 162) from its precedents; return True if 
cells are marked.
showErrors(CellAddress)
Draw arrows from the CellAddress (see Table 162) containing an error and the cells 
causing the error; return True if cells are marked.
showInvalid() 
Show all cells containing invalid values; return True if cells are marked.
clearArrows()
Remove all auditing arrows from the sheet.
Each time that the showPrecedents() method is called, another level of precedents is marked with arrows. 
After the first call, arrows are drawn from all cells directly referenced by the specified cell. The QueryRange
macro in Listing 419 displays the dependencies (see Figure 100); Listing 436, however, displays the 
precedents in the spreadsheet. Figure 106 shows one level of precedents. 
The cell B7 contains the formula “=Sum(B1:B6)”. As Figure 106 shows, cell B7 refers to all of the 
“summed” cells. If you call the method showPrecedents() again, you’ll see the cells that reference the cells 
B2:B6. The showPrecedents() method returns True as long as more precedent cells are marked with arrows.
Figure 107 shows the next level of precedents.
Listing 436. Display precedents.
Function SimpleCalcDocAddition()
Dim oDoc          'Reference newly created calc document.
Dim oSheet
Dim oRange
oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_default", 0, Array())
oSheet = oDoc.Sheets(0)
oSheet.getCellByPosition(0, 0).setValue(1)
oRange = oSheet.getCellRangeByName("A1:A6")
oRange.fillAuto(com.sun.star.sheet.FillDirection.TO_BOTTOM, 1)
oRange = oSheet.getCellRangeByName("B1:B6")
oRange.setArrayFormula("=A1:A6+1")
oSheet.getCellByPosition(1, 6).setFormula("=Sum(B1:B6)")
SimpleCalcDocAddition = oDoc
493
End Function
Sub ShowCellPrecedence()
Dim oDoc
Dim oSheet
Dim oAddr
oDoc = SimpleCalcDocAddition()
oSheet = oDoc.Sheets(0)
oAddr = oSheet.getCellByPosition(1, 6).CellAddress
oSheet.showPrecedents(oAddr)
Print "See one level of Precedents for cells B1:B6"
oSheet.showPrecedents(oAddr) 
Print "See two levels of Precedents for cell B1:B6"
End Sub
Figure 106. One level of precedents.
Figure 107. Two levels of precedents with an array formula in B1:B6.
The arrows in Figure 107 demonstrate two levels of precedents assuming an array formula. If a simple 
formula is used in each cell rather than an array formula, the figure changes noticeably. As an exercise, 
consider why this is.
494
Figure 108. Two levels of precedents with formulas in B2:B6.
15.5.3. Outlines
Outlines in a Calc document group rows and columns together so that you can collapse and expand the 
groups with a single mouse click. When you create an outline, you must specify whether it’s row-centric or 
column-centric by using TableOrientation enumeration (see Table 195). The methods in Table 196 behave 
like their menu counterparts in the OOo GUI for dealing with spreadsheet outlines.
Table 195. Values defined by the  com.sun.star.table.TableOrientation enumeration.
Value
Description
com.sun.star.table.TableOrientation.ROWS
Use rows.
com.sun.star.table.TableOrientation.COLUMNS
Use columns.
Table 196. Methods supported by the com.sun.star.sheet.XSheetOutline interface.
Method
Description
group(CellRangeAddress, TableOrientation)
Group the cells in the cell range into one group.
ungroup(CellRangeAddress, TableOrientation)
Remove the innermost levels from the group.
autoOutline(CellRangeAddress)
Create outline groups based on formula 
references.
clearOutline()
Remove all outline groups from the sheet.
hideDetail(CellRangeAddress)
Collapse an outline group.
showDetail(CellRangeAddress)
Open (uncollapse) an outline group.
showLevel(n, CellRangeAddress)
Show outlined groups from levels one through n.
15.5.4. Copying, moving, and inserting cells
In a Writer document, the primary method for moving or copying text content is to use the clipboard. The 
Spreadsheet service, however, provides methods for directly moving and inserting cells. When new cells are 
inserted, you specify how cells are moved out of the way by using the CellInsertMode enumeration (see
Table 197).
495
Table 197. Values defined by the com.sun.star.sheet.CellInsertMode enumeration.
Value
Description
com.sun.star.sheet.CellInsertMode.NONE
No cells are moved.
com.sun.star.sheet.CellInsertMode.DOWN
Move cells down.
com.sun.star.sheet.CellInsertMode.RIGHT
Move cells right.
com.sun.star.sheet.CellInsertMode.ROWS
Move the entire row down.
com.sun.star.sheet.CellInsertMode.COLUMNS
Move the entire column right.
Use the insertCells(CellRangeAddress, CellInsertMode) method to create space the size of the cell range 
address. If the insert mode is COLUMNS, then the entire column, starting with the leftmost column in the 
range, is shifted to the right the width of the range. If the insert mode is RIGHT, then the entire column is 
not shifted right; only the rows in the range are shifted. The cell insert modes ROWS and DOWN behave 
similarly to the COLUMNS and RIGHT modes. Using the cell insert range of NONE causes no cells to be 
moved; in other words, nothing happens. Listing 437 moves cells down.
Listing 437. Move the range L4:M5 down.
Dim oSheet
Dim oRangeAddress   'The range to move
oSheet = ThisComponent.Sheets(0)
oRangeAddress = oSheet.getCellRangeByName("L4:M5").getRangeAddress()
oSheet.insertCells(oRangeAddress, com.sun.star.sheet.CellInsertMode.DOWN)
Tip
The insertCells() and removeRange() methods silently fail if the insertion will cause an array formula to be
split.
The removeRange(CellRangeAddress, CellInsertMode) method is essentially an “undo” command for the 
insertCells() method.
Use the copyRange(CellAddress, CellRangeAddress) method to copy a range of cells to the location 
specified by the cell address. The top-left cell in the cell range address is positioned at the specified cell 
address when the range is copied. The net effect of the copyRange() method is the same as copying a range 
of cells to the clipboard, positioning the cursor at the specified cell, and then pasting the cells into place (see
Listing 438).
Listing 438. Copy the range L4:M5 to N8.
Dim oSheet
Dim oRangeAddress 'The range to copy
Dim oCellAddress  'Destination address
oSheet = ThisComponent.Sheets(0)
oRangeAddress = oSheet.getCellRangeByName("L4:M5").getRangeAddress()
oCellAddress  = oSheet.getCellByPosition(13, 7).getCellAddress()  'N8
oSheet.copyRange(oCellAddress, oRangeAddress)
Use the moveRange(CellAddress, CellRangeAddress) method to move (rather than copy) a range of cells. 
The behavior of the moveRange() method is similar to that of the copyRange() method except that the cells 
are moved, rather than copied; the cells in the original range are left empty.
496
15.5.5. Copy data between documents
The copyRange method only supports copying a range in the same document. Other methods must be used 
to copy data between different documents.
Data functions
Use getData() and setData() to copy numbers. Use getDataArray() and setDataArray() to copy numbers and 
strings. The data functions are fast and easy, but they only copy data, not formatting.
Clipboard
Use dispatch commands to copy data using the clipboard. The clipboard provides many options when 
copying data. The primary issue with using the clipboard, is that the clipboard is inherently unsafe because 
other applications may be using the clipboard at the same time. Although the clipboard is not inherently safe,
Paste Special provides numerous options when pasting data not available using other methods.
Listing 439. Use the clipboard to copy data between two documents.
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") 
oFrame1 = oDoc1.CurrentController.Frame 
' Use the documents controller to select the cells A1:B2.
oSheet = oDoc1.Sheets(0)
rng = oSheet.getCellRangeByName("A1:B2")
oDoc1.CurrentController.Select(rng)
' Use a dispatch to copy to the clipboard.
oDispatcher.executeDispatch(oFrame1, ".uno:Copy", "", 0, Array())
' Upper left corner of where to paste the data.
rng = oDoc2.Sheets(0).getCellRangeByName("A1")
' Place the view cursor there then paste the clipboard.
oDoc2.CurrentController.Select(rng) 
oFrame2 = oDoc2.CurrentController.Frame 
oDispatcher.executeDispatch(oFrame2, ".uno:Paste", "", 0, Array())
Use the macro recorder with Paste Special to see how arguments are set with paste special. One example is 
as follows:
Listing 440. Arguments for Paste Special.
Dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Flags"
args1(0).Value = "SVDNT"
args1(1).Name = "FormulaCommand"
args1(1).Value = 0
args1(2).Name = "SkipEmptyCells"
args1(2).Value = false
args1(3).Name = "Transpose"
args1(3).Value = false
args1(4).Name = "AsLink"
args1(4).Value = false
args1(5).Name = "MoveMode"
args1(5).Value = 4
oDispatcher.executeDispatch(oFrame2, ".uno:InsertContents", "", 0, args1()) 
497
Documents you may be interested
Documents you may be interested