我在c#Windows应用程序中使用iTextSharp来操作扫描的纵向PDF发票文件。在扫描文件后,我想自动检查(估计)页面上文本的方向(用户可能已经颠倒扫描)。
发票来自各种供应商,因此我无法搜索标准文字或图片。
我想如果我可以将PDF页面裁剪为两个(顶部和底部),并创建两个新的PDF文件,那么我可以比较两个文件大小。最大的文件可能是页面的顶部。如果需要,我可以旋转(我知道如何做这一点)页面。
由于
更新 - 我找到了一种方法将页面分成两半但不幸的是,创建的2个文件大小相同(即使上半部分有更多文本和图像):
private void TrimDocument()
{
//derived from http://www.namedquery.com/cropping-pdf-using-itextsharp
PdfReader pdfReader = new PdfReader("C:/Docman/RawScans/PDFWeightedTop.pdf");
PdfRectangle rect = new PdfRectangle(0, pdfReader.GetPageSizeWithRotation(1).Height / 2, pdfReader.GetPageSizeWithRotation(1).Width, pdfReader.GetPageSizeWithRotation(1).Height); //Top
//***PdfRectangle rect = new PdfRectangle(0, 0, pdfReader.GetPageSizeWithRotation(1).Width, pdfReader.GetPageSizeWithRotation(1).Height/2); //Bottom
//***FileStream output = new FileStream("C:/Docman/Matched/top.pdf", FileMode.Create);
FileStream output = new FileStream("C:/Docman/Matched/bottom.pdf", FileMode.Create);
Document doc = new Document(PageSize.A4);
//Make a copy of the document
PdfSmartCopy smartCopy = new PdfSmartCopy(doc, output);
doc.Open();
var page = pdfReader.GetPageN(1);
page.Put(PdfName.CROPBOX, rect);
page.Put(PdfName.MEDIABOX, rect);
var copiedPage = smartCopy.GetImportedPage(pdfReader, 1);
smartCopy.AddPage(copiedPage);
doc.Close();
}
答案 0 :(得分:0)
我可以通过几种方式确定文档的方向,每种方法都有自己的效率,准确性和努力/成本的优缺点。
祝你好运,让我们知道你是如何进行的!