5 페이지를 가지고 있습니다. pdf 좌표를 기준으로 특정 요소를 강조해야합니다
와이즈 비즈 .
iTextsharp를 사용하여 아래 코드를 시도했지만 페이지 번호를 포함하여 어떻게 할 수 있는지 제안하십시오
X top left,Y top left,X top right ,Y top right , X bottom right , Y bottom right ,X bottom left, Y bottom left
출력 직사각형으로 요소를 강조 표시하십시오. PDF의 3 페이지를 강조 표시해야합니다.
using System;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
//Create a simple test file
string outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf");
//Create a new file from our test file with highlighting
string highLightFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Highlighted.pdf");
//Bind a reader and stamper to our test PDF
PdfReader reader = new PdfReader(outputFile);
using (FileStream fs = new FileStream(highLightFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
using (PdfStamper stamper = new PdfStamper(reader, fs))
{
//Create a rectangle for the highlight. NOTE: Technically this isn't used but it helps with the quadpoint calculation
iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(60.6755f, 749.172f, 94.0195f, 735.3f);
//Create an array of quad points based on that rectangle. NOTE: The order below doesn't appear to match the actual spec but is what Acrobat produces
float[] quad = { rect.Left, rect.Bottom, rect.Right, rect.Bottom, rect.Left, rect.Top, rect.Right, rect.Top };
//Create our hightlight
PdfAnnotation highlight = PdfAnnotation.CreateMarkup(stamper.Writer, rect, null, PdfAnnotation.MARKUP_HIGHLIGHT, quad);
//Set the color
highlight.Color = BaseColor.YELLOW;
//Add the annotation
stamper.AddAnnotation(highlight,1);
}
}
이"text": "66 66 6666 6666"이 강조 표시됩니다
입력 파일 출력 파일
"boundingBox": [3.2924,7.7146,5.7564,7.7038,5.7671,7.9836,3.3032,7.9943]
- 답변 # 1
관련 자료
- c# - 모델에 그러한 값이 있는지 여부에 따라 하나의 요소를 표시하는 방법은 무엇입니까?
- Google 스프레드 시트는 조건부 서식 맞춤 수식을 기반으로 행을 강조 표시합니다
- php - HighChart의 범주를 기반으로 정적 계열 이름을 요소 결과로 설정하는 방법
- bash - 배열에서 요소에 무작위로 가중치를 부여한 다음 해당 가중치를 기준으로 요소를 선택하려면 어떻게해야합니까?
- javascript - HTML 요소의 특정 단어 만 강조 표시하는 방법
- SSIS의 요소를 기반으로 두 개의 XML 파일을 결합하는 방법은 무엇입니까?
- python - 다른 열의 값을 기반으로 팬더 목록 열에서 목록 요소 가져 오기
- python - dictvalues ()를 기반으로 사전 요소 제거
- java - Selenium은 속성을 기반으로 XPath로 요소를 선택할 수 없습니다
- javascript - svg 요소의 좌표를 가져 오면 SVGAnimatedLength가 반환됩니다
- 파이썬 목록은 텍스트를 기반으로 고유 한 요소를 얻습니다
- 스칼라의 요소 값을 기반으로 목록 분할
- python - Pandas Series 내부 요소를 기반으로 마스크 만들기
- javascript - 주어진 속성을 기반으로하는 Vue 렌더링 요소
- javascript - 클래스를 기반으로 addEventListener로 현재 요소를 검색하는 방법은 무엇입니까?
- javascript - 인형과 함께 x/y 좌표를 사용하여 요소를 클릭하는 방법은 무엇입니까?
- javascript - 조건에 따른 VueJS HTML 요소 유형
- c# : aspx 페이지에서 PDF 다운로드
- C#의 PDF에 Microsoft OCR 결과 오버레이
- Active Directory에서 사용자 그룹을 얻는 방법은 무엇입니까? (c#, asp.net)
- c# : MuPdf 라이브러리에 유니code 또는 텍스트 검색 기능이 있습니까?
- c# : 단일 asp.net 응용 프로그램에서 2개의 서로 다른 데이터베이스에서 2개의 서로 다른 Oracle 종속성을 가질 수 있습니까?
- Android Date to C# long DateTime-Ticks
- c# : 깊은 json 자식의 데이터 필터링
- c# : Excel에서 검색할 수 있는 asp.net API를 통해 QR 이미지 제공
- c# : byte[]가 pdf 파일인지 확인
- c# : 날짜 형식이 dd-MM-yyyy인 시스템의 ValueToCompare="MM/dd/yyyy"에 대해 CompareValidator가 제대로 작동하지 않습니다.
잘못된 페이지
먼저 잘못된 페이지에 주석을 추가합니다.
말씀
와이즈 비즈하지만 1 페이지에 넣었습니다.
이 문제를 해결하려면 페이지 번호를 변경하십시오 :
잘못된 좌표코드의 좌표가 아닙니다
당신이 그 JSON'ish 방식으로 준 사람들도
적어도 페이지 미디어 상자에서 제공하는 일반 PDF 좌표계가 아닌 강조 표시하려는 위치 근처에 있어야합니다. Adobe Acrobat에서 측정하여 다음과 같은 대략적인 좌표를 얻었습니다.
표시 한 좌표 중 일부가 강조 할 이미지 부분의 실제 좌표 인 경우 해당 좌표를 사용 된 좌표계에 대해 해당 제공자에게 문의하여 주어진 페이지의 미디어 상자에서 좌표로 변환하십시오.
QuadPoints에서 질문 가능한 순서iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(240f, 264f, 413f, 289f);
를 만듭니다 이 순서를 사용하여 :이로 인해 캡이 오목 해집니다. 아마도 사용하고 싶을 것입니다
대신 Adobe Reader가 볼록한 캡으로 표시됩니다. 배경은이 답변을 읽으십시오.
예제 출력당신은 말합니다 :
와이즈 비즈위의 세 가지 변경 사항을 코드에 적용하면 다음과 같이 나타납니다.
float[] quad = { rect.Left, rect.Top, rect.Right, rect.Top, rect.Left, rect.Bottom, rect.Right, rect.Bottom };