2008-10-16 2 views

Odpowiedz

3

Jeśli pracujesz w Javie, spójrz na iText: http://www.lowagie.com/iText/ Myślę, że obsługuje to, czego szukasz.

Istnieją również wersje .Net okolicy: http://www.ujihara.jp/iTextdotNET/en/

+0

Czy możesz wskazać to w dokumentacji? –

+0

Oto prosty przykład: http://itextdocs.lowagie.com/tutorial/objects/anchors/index.php Zobacz sekcję JavaScript. –

0

Zrobiłem studiuje na PDF Specifications.

Okazało się, że format pliku PDF nie jest trudny.

Posiada przyjemną funkcję, która pozwala modyfikować dokument poprzez dodanie nowej treści na końcu pliku.

Jeśli próbujesz zrobić to samo ... nie bój się! idź i spójrz na specyfikacje.

+0

Po prostu dodajesz nowe i zaktualizowane strumienie obiektów, a następnie zaktualizowaną tabelę porównawczą (odnośnik) i zwiastun? Wygląda na to, że trzeba będzie przeanalizować istniejące strumienie obiektów i obliczyć przesunięcia bajtów. –

2

iText (i iText_Sharp_) są całkiem zdolne do dodania JS do istniejącego pliku PDF ... akcji strony, linków, skryptu poziomu dokumentu, ty go nazwij.

The JavaDoc can be found here.

Zostało to napisane z myślą o Javie, ale kod C# wyglądałby niemal identycznie (jeśli nie dokładnie taki sam, z wyjątkiem usuniętym w ten sposób obsługą wyjątków).

PdfReader myReader = new PdfReader(myFilePath); // throws IOException 
PdfStamper myStamper = new PdfStamper(myReader, new FileOutputStream(outPath)); // throws IOE, DocumentException 

// add a document script 
myStamper.addJavaScript(myScriptString); 

// add a page-open script, 1 is the first page, not zero0 
PdfAction jsAction = PdfAction.javaScript(someScriptString); 
myStamper.setPageAction(PdfWriter.PAGE_OPEN, jsAction, myStamper.getWriter(), pageNumber); // throws PdfException (for bad first param) 

PdfFormField button = PdfFormField.createButton(myWriter, PdfFormField.FF_PUSHBUTTON); 
button.setWidget(myRectangle, PdfAnnotation.HIGHLIGHT_INVERT); 

// the important part, adding jsAction 
jsAction = PdfAction.javaScript(buttonScriptString); 
button.setAdditionalActions(PdfAnnotation.AA_DOWN, jsAction); // mouse down 

myStamper.addAnnotation(pageNum, button); 

myStamper.close(); // write everything out, throws DocumentException, IOE