2011-01-05 24 views
8

Chúng tôi đang sử dụng iText để tự động điền vào các trường biểu mẫu trên một số tài liệu và sau đó ghép các tài liệu đó thành một tệp PDF.Kết hợp các tệp PDF và giữ lại các tính năng mở rộng trong Acrobat Reader

Adobe đã giới thiệu tùy chọn Mở rộng tính năng trong Acrobat Reader để cho phép người dùng Acrobat Reader lưu tệp PDF với các thay đổi đối với các trường biểu mẫu.

Đây là một tính năng độc quyền của Adobe mà iText chỉ có thể hoạt động.

Tôi đã có thể thực hiện công việc xung quanh cho một tài liệu cụ thể bằng cách sử dụng lớp PdfStamper trong chế độ nối thêm. Vì PDF chứa các trường biểu mẫu, chúng tôi sử dụng lớp PdfCopyFields để thực hiện việc ghép nối. PdfCopyFields không có chế độ nối thêm.

Có cách nào khác để thực hiện thêm một tệp PDF vào một tệp PDF có sẵn trước đó với iText (mọi phiên bản) không?

Trả lời

5

Có thể, nhưng sẽ yêu cầu bạn biết đủ để sửa đổi PdfCopyFields để tiết kiệm trong chế độ nối thêm.

Bạn có thể sao chép chức năng và sử dụng nó trên đầu trang của PdfStamper (trong lớp của riêng bạn hoặc cách khác), phân lớp PdfCopyFields hoặc sửa đổi PdfCopyFields trực tiếp.

Chạng vạng lớn Tất cả các trường có cùng tên trong một tệp PDF có cùng giá trị. Nếu bạn có hai bản sao của cùng một biểu mẫu trong tệp PDF, thì bạn có hai chế độ xem cùng một dữ liệu. Ngay cả với các hình thức khác nhau, nếu bạn tình cờ có một vụ va chạm tên ("Thành phố" ở đây có thể là một phần của địa chỉ hiện tại, trong khi ở đó có thể là thành phố mà họ sinh ra), họ sẽ cùng nhau đến với nhau cùng một giá trị.

Nếu bạn có một Hệ thống toàn diện sao cho tất cả các xung đột đặt tên của bạn sẽ được cân nhắc, điều đó thật tuyệt, hãy phá vỡ. Nếu "FirstName" luôn luôn đề cập đến cùng một người, và thay đổi nó NÊN thay đổi giá trị trên tất cả các hình thức trong câu hỏi, bạn đang vàng. Nếu không ... đó là lý do tại sao khả năng làm phẳng của PdfStamper rất phổ biến.

Cách thay thế sẽ trở thành "đổi tên tất cả các trường của bạn trước khi dán các biểu mẫu lại với nhau" để tránh các xung đột đó.

Ngay cả với một hệ thống toàn diện, tôi vẫn gợi ý một công cụ nhỏ sẽ đi qua các biểu mẫu mà bạn đề xuất hợp nhất và tìm kiếm xung đột. Có thể liệt kê chúng cùng với giá trị của chúng trong một số dữ liệu thử nghiệm. Bạn có thể bắt thứ gì đó dọc theo dòng chữ "Fly: House, Common" và "Fly: Southwest Airlines".

Có lẽ không phải là ví dụ cụ thể, nhưng ai biết được? ;)

+0

Cảm ơn Mark. Đối với vấn đề va chạm tên trường, tôi chỉ thêm một postfix vào mọi trường dựa trên số lượng tài liệu được nối thêm. Nó làm việc cho chúng ta. –

Các vấn đề liên quan