AutoDeskew Method (GdPicturePDF)
Deskews the current page in the loaded PDF document and returns the calculated skew angle, in degrees. The page is subsequently rotated using this angle to correct the possible skewing if present.
Deskewing a page can help a lot to do OCR, OMR, barcode detection or just improve the reliability of the page itself. You can benefit from using this method especially for documents mixing vector and raster content.
public float AutoDeskew(
float ,
bool
)
public function AutoDeskew(
: Single;
: Boolean
): Single;
public function AutoDeskew(
: float,
: boolean
) : float;
public: float AutoDeskew(
float ,
bool
)
public:
float AutoDeskew(
float ,
bool
)
'Declaration
Public Function AutoDeskew( _
ByVal As Single, _
ByVal As Boolean _
) As Single
Parameters
- MaxAngleOfResearch
- Maximum skew angle set for providing the subsequent research.
For example, use the value of 10 to achieve deskiewing the page with a skew angle ±10 degrees. It is recommended to use a value lower than 15.
- Optimistic
- Determines if the engine must be optimistic in the skew detection.
Set this parameter to true if you are sure that the current page has a skew. Otherwise set it to false.
Return Value
The skew angle of the currently selected page, in degrees, between -MaxAngleOfResearch and +MaxAngleOfResearch. The
GdPicturePDF.GetStat method can be subsequently used to determine if this method has been successful.
How to autodeskew the pages in the PDF document.
Dim caption As String = "Example: AutoDeskew"
Using pdf As GdPicturePDF = New GdPicturePDF()
Dim message As String = ""
Dim status As GdPictureStatus = pdf.LoadFromFile("source.pdf", False)
If status = GdPictureStatus.OK Then
Dim pageCount As Integer = pdf.GetPageCount()
status = pdf.GetStat()
Dim pageNo As Integer = 1
While (pageNo <= pageCount) AndAlso (status = GdPictureStatus.OK)
status = pdf.SelectPage(pageNo)
If status = GdPictureStatus.OK Then
Dim angle As Single = pdf.AutoDeskew(15, False)
status = pdf.GetStat()
If status = GdPictureStatus.OK Then
message += "PageNo " + pageNo.ToString() + ". - skew angle = " + angle.ToString() + vbCrLf
Else
message += "PageNo " + pageNo.ToString() + ". - status: " + status.ToString() + vbCrLf
End If
End If
pageNo += 1
End While
If status = GdPictureStatus.OK Then
status = pdf.SaveToFile("dest.pdf")
If status = GdPictureStatus.OK Then
MessageBox.Show(message + vbCrLf + "The file has been saved.", caption)
Else
MessageBox.Show(message + vbCrLf + "The example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), caption)
End If
Else
MessageBox.Show("The example has NOT been followed successfully. Status: " + status.ToString(), caption)
End If
Else
MessageBox.Show("The file can't be loaded. Status: " + status.ToString(), caption)
End If
End Using
string caption = "Example: AutoDeskew";
using (GdPicturePDF pdf = new GdPicturePDF())
{
string message = "";
GdPictureStatus status = pdf.LoadFromFile("source.pdf", false);
if (status == GdPictureStatus.OK)
{
int pageCount = pdf.GetPageCount();
status = pdf.GetStat();
for (int pageNo = 1; (pageNo <= pageCount) && (status == GdPictureStatus.OK); pageNo++)
{
status = pdf.SelectPage(pageNo);
if (status == GdPictureStatus.OK)
{
float angle = pdf.AutoDeskew(15, false);
status = pdf.GetStat();
if (status == GdPictureStatus.OK)
message += "PageNo " + pageNo.ToString() + ". - skew angle = " + angle.ToString() + "\n";
else
message += "PageNo " + pageNo.ToString() + ". - status: " + status.ToString() + "\n";
}
}
if (status == GdPictureStatus.OK)
{
status = pdf.SaveToFile("dest.pdf");
if (status == GdPictureStatus.OK)
MessageBox.Show(message + "\nThe file has been saved.", caption);
else
MessageBox.Show(message + "\nThe example has been followed successfully, but the file can't be saved. Status: " + status.ToString(), caption);
}
else
MessageBox.Show("The example has NOT been followed successfully. Status: " + status.ToString(), caption);
}
else
MessageBox.Show("The file can't be loaded. Status: " + status.ToString(), caption);
}