PDF 파일에 텍스트 워터 마크를 추가하는 데 대한 자습서가 없습니다. 당신은 모두 나를 인도 해 주실 수 있습니까, 저는 PDFBOX를 처음 접했습니다.Apache PDFBox를 사용하여 Java에서 pdf에 텍스트 워터 마크를 추가하는 방법은 무엇입니까?
중복되지 않았기 때문에 주석의 링크가 도움이되지 못했습니다. PDF에 이미지가 아닌 텍스트를 추가하고 싶습니다.
PDF 파일에 텍스트 워터 마크를 추가하는 데 대한 자습서가 없습니다. 당신은 모두 나를 인도 해 주실 수 있습니까, 저는 PDFBOX를 처음 접했습니다.Apache PDFBox를 사용하여 Java에서 pdf에 텍스트 워터 마크를 추가하는 방법은 무엇입니까?
중복되지 않았기 때문에 주석의 링크가 도움이되지 못했습니다. PDF에 이미지가 아닌 텍스트를 추가하고 싶습니다.
다음은 PDFBox 2.0.2를 사용한 예입니다. 그러면 PDF가로드되고 오른쪽 하단 모서리에 빨간색 투명 글꼴로 텍스트가 작성됩니다. 여러 페이지 PDF 인 경우 모든 페이지에 워터 마크가 나타납니다. 검사 할 필요가있는 추가 null 조건이 있는지 확실하지 않으므로 프로덕션 준비가되지 않았을 수도 있지만 올바른 방향으로 실행해야합니다.
이 특정 코드 블록은 원본 PDF를 수정하지 않지만 Tmp_ (파일 이름)을 출력으로 사용하여 새 PDF를 만듭니다. [PDFBox와 복제 관리]의
private static void watermarkPDF (File fileStored) {
File tmpPDF;
PDDocument doc;
tmpPDF = new File(fileStored.getParent() + System.getProperty("file.separator") +"Tmp_"+fileStored.getName());
doc = PDDocument.load(fileStored);
for(PDPage page:doc.getPages()){
PDPageContentStream cs = new PDPageContentStream(doc, page, AppendMode.APPEND, true, true);
String ts = "Some sample text";
PDFont font = PDType1Font.HELVETICA_BOLD;
float fontSize = 14.0f;
PDResources resources = page.getResources();
PDExtendedGraphicsState r0 = new PDExtendedGraphicsState();
r0.setNonStrokingAlphaConstant(0.5f);
cs.setGraphicsStateParameters(r0);
cs.setNonStrokingColor(255,0,0);//Red
cs.beginText();
cs.setFont(font, fontSize);
cs.setTextMatrix(Matrix.getTranslateInstance(0f,0f));
cs.showText(ts);
cs.endText();
}
cs.close();
}
doc.save(tmpPDF);
}
* 프로덕션 준비가되지 않았을 수 있습니다 * - 더 많이 만들려면 ** 좌표계의 원점이 왼쪽 아래 일 필요는 없다는 것을 고려하여 위치 계산을 업데이트하십시오 ** B ** PDPAGEContentStream 생성자를 사용하십시오 'resetContext' 매개 변수를 사용하고'true'로 설정하면 ** C ** **는'PDExtendedGraphicsState' 처리를 단순화합니다. 특히 자원을 명시 적으로 간섭하지 않으려면'setGraphicsStateParameters'가 필요하다면 이미 자원에 상태를 추가하십시오. 그리고 OP *가 pdf *에 이미지가 아닌 텍스트를 추가하려고하므로 이미지 추가도 중단됩니다. – mkl
안녕하세요. MKL - 다른 예제를 온라인으로 게시 한 바로 그날에 함께 패치했습니다. 그러나, 내가 수집 한 것부터, 나는 IF 섹션 전체를 제거하고 r0.setNonStrokingAlphaConstant 만 유지함으로써이를 변경할 수 있어야합니다. 그 맞습니까? – MDig
예, ** C ** 항목을 수정해야합니다. – mkl
가능한 복제 (http://stackoverflow.com/questions/8929954/watermarking-with-pdfbox) –
* 나는이 전에 iText를 시도했지만, iText를 무료로하지 않습니다. 나는 오픈 소스를 원한다. * * - 그러한 주장은 여기서 부적절하다. XXX 라이브러리를 사용하여 작업을 수행하려는 경우 YYY 라이브러리를 사용하지 않는 이유를 설명 할 필요가 없습니다. 대신 당신은 당신이 시도한 것과 당신이 붙어있는 곳을 설명 했어야합니다. 소유권 주장 자체와 관련하여 iText *는 오픈 소스이므로 AGPL 규칙을 준수하는 한 로열티를 지불하지 않고도 사용할 수 있습니다. 마찬가지로 PDFBox는 오픈 소스이기 때문에 Apache License v2.0 규칙을 따르는 한 사용할 수 있습니다. – mkl
소스 코드 다운로드에서 AddMessageToEachPage.java 예제를 살펴보십시오. 그런 다음 남은 문제에 대한 질문을 편집하십시오. –