2017-01-31 5 views
0

XMLWebWorkerHelper를 통해 pdf에 html을 그리려면 columnText를 사용하고 있습니다.itext에 주석으로 columnText를 추가하는 방법 pdf

유일한 문제는

, 내가 함께 일하고 있어요 코드베이스는 모든 요구는 내가으로 추가 할 수있는 무언가에 columnText를 변환하는 방법을 잘 모르겠어요 stamper.addAnnotation()

을 통해 그려 질 주석?

일부 컨텍스트 : 프런트 엔드에서 내용 편집 가능한 div를 pdf 요소로 변환하는 방법으로 사용되지만 stamper.addAnnotation을 통해 수행해야합니다.

어쨌든 HTML을 PDFAnnotations에 그릴 수 없다면? 현재 열 텍스트를 사용

코드 (JRuby를) 주석이 정상적으로 추가하는 방법의

elementsList = XMLWorkerHelper::parseToElementList(html, css) 
@stamper = PdfStamper.new(@reader, output_stream) 
canvas = @stamper.getOverContent(page_no) 

ct = ColumnText.new(canvas) 
ct.setSimpleColumn(rect) 
elementsList.each{|element| ct.addElement(element)} 
ct.go() 

예제 코드 :

annotation = PdfAnnotation.createFreeText(@stamper.getWiter(), rect, "blah blah", defaultAppearance) 
@stamper = PdfStamper.new(@reader, output_stream) 
@stamper.addAnnotation(annotation, page_no) 

defaultAppearance은 어쩌면 형 PdfContentByte이다 내가 변환 할 수있는 방법을 프로그래머 그 안에 columnText? 나는 정확히 어떻게하는지 알지 못했습니다.

아이디어가 있으십니까?

+0

PdfAnnotation 어떤 방법으로 생성 할 수있는 모든 필요한 건물 벽돌 – JasonY

답변

1

귀하의 코드는 JRuby입니다. 귀하의 질문은 으로 태그를 지정 했으므로 Java 샘플도 도움이된다고 가정합니다.

당신은이 같은 ColumnText 객체를 통해 HTML의 모습에 컨텐츠를 추가 할 수 있습니다 :이 소스 문서

source

를 들어

String html ="<html><h1>Header</h1><p>A paragraph</p><p>Another Paragraph</p></html>"; 
String css = "h1 {color: red;}"; 
ElementList elementsList = XMLWorkerHelper.parseToElementList(html, css); 

PdfReader reader = new PdfReader(resource); 
PdfStamper stamper = new PdfStamper(reader, result); 

Rectangle cropBox = reader.getCropBox(1); 

PdfAnnotation annotation = stamper.getWriter().createAnnotation(cropBox, PdfName.FREETEXT); 
PdfAppearance appearance = PdfAppearance.createAppearance(stamper.getWriter(), cropBox.getWidth(), cropBox.getHeight()); 

ColumnText ct = new ColumnText(appearance); 
ct.setSimpleColumn(new Rectangle(cropBox.getWidth(), cropBox.getHeight())); 
elementsList.forEach(element -> ct.addElement(element)); 
ct.go(); 

annotation.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, appearance); 
stamper.addAnnotation(annotation, 1); 

stamper.close(); 
reader.close(); 

(AddAnnotation.java 시험 방법 testAddAnnotationLikeJasonY)

결과는 보시다시피

result

, 당신이 이미 가지고이 거의 ...

+0

감사 필요한 것 같습니다! 완벽하게 작동했습니다. – JasonY