2017-03-02 1 views
0

버튼을 누르면 체크리스트의 항목을 PDF로 작성해야합니다. PDF 문서에는 20 개의 필드가있는 1 페이지가 있지만 유연해야합니다. 따라서 checkedlistbox에 52 개의 항목이있는 경우 프로그램은 3 페이지 (PDF를 복사하고 2 번 추가)로 PDF를 만듭니다. 이것은 작동하지만 다음 페이지의 필드는 첫 번째 필드와 동일한 이름을 갖습니다. 나는 이것이 문제가되지 않기를 바란다. ,itextsharp 빈 필드가있는 pdf 복사 pdf에 추가, 첫 번째 페이지의 필드 만 읽음

PdfReader pdfReader = new PdfReader(path); 
AcroFields pdfFormFields = pdfReader.AcroFields; 
foreach (KeyValuePair<string, AcroFields.Item> kvp in pdfFormFields.Fields) { 
    listoffieldnames.Add(kvp.Key.ToString()); 
} 
pdfReader.Close(); 

내 문제는 독자가 첫 번째 페이지의 필드를 읽

는 그런 다음 필드 이름을 읽습니다.

답변

0

프로그램은 3 페이지 (PDF를 복사하고 2 번 추가)로 PDF를 만듭니다. 이것은 작동하지만 다음 페이지의 필드는 첫 번째 필드와 동일한 이름을 갖습니다. 나는 이것이 문제가되지 않기를 바란다.

음,이 입니다.

PDF에는 필드가 고유 한 이름으로 완전히 식별되는 단일 추상 형식 정의 만 있습니다. 반면, 필드는 여러 위젯, 즉 여러 가지 시각화를 가질 수 있습니다.이 위젯은 표시 세부 사항이 다를 수 있습니다 (예 : 다른 글꼴 또는 글꼴 크기 사용). 그러나 모두 동일한 값을 나타냅니다. 대상 PDF에 동일한 소스 PDF의

코드 복사 여러 복사본을 다른 방법으로이 문제를 해결할 수 있습니다

  • 이 분야 고유성 문제를 무시하고 같은 이름을 가진 여러 양식 필드가있는 PDF를 만들 수 있습니다.
  • 중복 된 필드 이름을 인식하고 해당 필드를 단일 필드의 여러 위젯과 동일한 이름으로 병합 할 수 있습니다.
  • 중복 된 필드 이름을 인식하고 중복 된 이름을 변경하면 결국 고유 한 이름을 가질 수 있습니다.

(당신은이 사본 생성 iTextSharp를 사용하는 경우. iTextSharp이 중 두 번째 또는 세 번째 옵션을 구현, 빠른 벙어리 여부를 꽤 빠르고 지능 중 PDF 파일을 병합하기 위해 다른 방법으로 사용할 수 있습니다)

멍청한 첫 번째 방법으로 작성된 PDF 파일을 PDF 뷰어에서 처리하는 방법은 여러 뷰어 및 동일한 뷰어의 다른 버전에 따라 다릅니다. 중복 필드는 동일한 필드의 여러 위젯 또는 동일한 필드가있는 하나의 필드로 해석됩니다 이름은 적절한 필드로 처리되고 다른 필드는 비활성/비활성화됩니다.

다음 페이지의 필드는 첫번째와 같은 이름을 가지고 귀하의 경우 에서와 같이 같은 분야의 여러 사본이 모든 기능이 있다면, 그들이 대표 있도록, 당신의 복사 코드는, 처음 두 유형 중 하나입니다 동일한 단일 양식 필드.