2011-01-05 18 views
8

Używamy iText do automatycznego wypełniania pól formularza w wielu dokumentach, a następnie łączenia tych dokumentów w jeden wynikowy plik PDF.Łączenie plików PDF i zachowanie rozszerzonych funkcji w Acrobat Reader

Firma Adobe wprowadziła funkcję rozszerzania funkcji w programie Acrobat Reader, aby umożliwić użytkownikom programu Acrobat Reader zapisywanie pliku PDF ze zmianami w polach formularza.

Jest to zastrzeżona funkcja Adobe, którą iText może tylko obejść.

Udało mi się wykonać pracę dla jednego konkretnego dokumentu przy użyciu klasy PdfStamper w trybie dołączania. Ponieważ pliki PDF zawierają pola formularza, używamy klasy PdfCopyFields do wykonania konkatenacji. PdfCopyFields nie ma trybu append.

Czy istnieje inny sposób na dołączenie pliku PDF do istniejącego pliku PDF za pomocą iText (dowolnej wersji)?

Odpowiedz

5

Jest to możliwe, ale wymagałoby wiedzy na tyle, aby zmodyfikować PdfCopyFields, aby oszczędzał w trybie dołączania.

Możesz powielić funkcjonalność i użyć jej na górze PdfStamper (w swojej własnej klasie lub w inny sposób), podklasie PdfCopyFields lub bezpośrednio zmodyfikować PdfCopyFields.

Duży blok przeszkód Wszystkie pola o tej samej nazwie w pliku PDF mają tę samą wartość. Jeśli masz dwie kopie tego samego formularza w wynikowym pliku PDF, masz dwa widoki tych samych danych.

Nawet z różnymi formularzami, jeśli zdarzy ci się mieć kolizję nazwy ("Miasto" tutaj może być częścią aktualnego adresu, podczas gdy może to być miasto, w którym się urodziły), będą razem czuć się razem ta sama wartość.

Jeśli masz kompleksowy system taki, że wszystkie kolizje nazywania będą celowe, to świetnie, przejdź do zepsutego. Jeśli "FirstName" odnosi się zawsze do tej samej osoby, a jej zmiana POWINIEN zmienić wartość we wszystkich kwestionowanych formularzach, jesteś złoty. Jeśli nie ... to właśnie dlatego zdolność spłaszczania PdfStamper jest tak popularna.

Alternatywą staje się "zmiana nazwy wszystkich pól przed sklejeniem formularzy razem", aby uniknąć takich kolizji.

Mimo kompleksowego systemu nadal sugeruję dodanie małego narzędzia, które przejdzie przez formularze, które zamierzasz scalić i szukać kolizji. Może wypisz je wraz z ich wartościami w niektórych danych testowych. Możesz złapać coś w stylu "Fly: House, Common" a "Fly: Southwest Airlines".

Prawdopodobnie nie ten konkretny przykład, ale kto wie? ;)

+0

Dzięki Mark. W przypadku problemu z kolizją nazw pól dodaję po prostu przyrostek do każdego pola na podstawie liczby dołączonego dokumentu. Działa dla nas. –

Powiązane problemy