C# Windows App에서 iTextSharp를 사용하여 스캔 한 세로 형 PDF 인보이스 파일을 조작하고 있습니다. 파일을 스캔 한 후 페이지의 텍스트 방향을 자동으로 확인 (예상)하고 싶습니다 (사용자가 거꾸로 스캔했을 수 있음).iTextSharp를 사용하여 PDF 방향을 결정하십시오. C# .net
인보이스는 다양한 공급 업체에서 제공되므로 표준 텍스트 또는 이미지를 검색 할 수 없습니다.
PDF 페이지를 위아래로 자르고 2 개의 새로운 PDF 파일을 만들면 두 파일 크기를 비교할 수 있다고 생각했습니다. 가장 큰 파일은 아마 페이지의 상단 일 것입니다. 그런 다음 필요에 따라 페이지를 회전시킬 수 있습니다 (이 비트를 수행하는 방법을 알고 있습니다).
감사
업데이트 - 나는 반에서 페이지를 분할하지만, 생성 불행하게도이 개 파일이 동일한 크기 할 수있는 방법을 발견했다 (위쪽 절반에 더 많은 텍스트와 이미지가 있더라도) :
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();
}
'GetPageSize'를 사용하여 높이와 너비를 비교할 수 있습니까? (높이> 너비라면 세로입니다)? – petelids
Hello petelids & @Tsukasa. 미안 해요. 제 질문은 제가 생각하기에 다소 모호합니다. 내 모든 문서는 세로 방향 인보이스로 스캔됩니다. 각 문서의 내용을 180도 회전해야하는지 확인하려고합니다. 내 생각에 각 인보이스에있는 텍스트/이미지의 대부분이 맨 위에 표시됩니다.감사 –
세로 대 가로는 90도 또는 270도 회전이됩니다. 위쪽면이 180도 회전합니다. 그것이 우리가 혼란스러워하는 곳입니다. –