2013-05-23 1 views
0

이 코드를 사용하여 pdf를 평평하게 만듭니다. "DBA_Name"이라는 양식 필드가 있습니다. 이것은 다중 행입니다. 수직으로 정렬됩니다. 그러나 pdf를 평평하게 한 후에 상단 정렬. 하단 정렬되어야하므로 왜이 동작을 보여주고 있는지 잘 모르겠습니다. 내 코드양식 필드 텍스트가 FormFlattening 후 세로로 정렬됩니다.

PdfReader readerFlat = new PdfReader(inputFilePath); 
    FileOutputStream foutFlat = null; 
    PdfStamper stamperFlat = null; 
    foutFlat = new FileOutputStream(outputFilePath);    
    stamperFlat = new PdfStamper(readerFlat, foutFlat); 
    stamperFlat.setFormFlattening(true); 
    stamperFlat.close(); 

을 - 이것도 PDF 파일에 대한 링크가 사전에 http://www.mediafire.com/download/5ccqjvg4676h0j2/Test.pdf

감사합니다.

답변

2

은 "수직으로 하단 정렬 됨"이라는 혐의로 귀하의 주장은입니다. ISO-32000-1은 AcroForm 양식 필드의 내용을 세로로 정렬 할 수있는 매개 변수를 정의하지 않았기 때문에 혼란 스럽습니다. 당신이 나를 믿지 않는다면 the spec을 읽으십시오.

Google에서 공유 한 PDF를 살펴본 결과 하이브리드 양식이 포함 된 것으로 나타났습니다. 여기에는 AcroForm 기술을 기반으로하는 필드에 대한 설명과 XML 양식 아키텍처 (XFA)를 기반으로하는 설명이 포함되어 있습니다. AcroForm 기술은 XFA 기술보다 앞선 기술입니다. XFA는 수직 정렬과 같은 새로운 개념을 도입했습니다.

코어 iText가 XFA 폼을 평평하게한다는 가정을하고 있습니다. 그 가정은 잘못되었습니다. 핵심 iText는 AcroForm 정의 만 살펴보고 양식을 병합 할 때 XFA 스트림을 무시합니다. 닫힌 소스 iText 추가 기능 XFA Worker 만 XFA를 병합 할 수 있습니다.

요약 : iText가 적어도 AcroForm 필드에는없는 속성을 해석 할 것으로 예상됩니다. 해결 방법을 찾아야합니다.

+0

즉각적인 답변을 주셔서 감사합니다. Adobe Live Cycle tool을 사용하고 있습니다. 파일을 PDF로 인쇄하면 정렬 작업이 제대로 작동합니다. 텍스트가 올바르게 정렬되도록 정렬됩니다. 즉, pdf 코드를 사용하면 텍스트가 세로로 정렬됩니다. 인쇄하는 동안 "Adobe Live Cycle tool"이 올바르게 정렬되는 이유를 알 수 없습니까? 어떤 제안이라도 인정 될 것입니다. – Dexter

+0

Adobe Live Cycle은 XFA 양식 설명을 사용합니다. iText AcroForm 병합은 AcroForm 양식 설명을 사용합니다. 그 의미를 이해하지 못하는 경우 XFA와 AcroForm 기술의 차이점을 조사하십시오. –

관련 문제