2008-10-16 24 views

Antwort

3

Wenn Sie in Java entwickeln, werfen Sie einen Blick auf iText: http://www.lowagie.com/iText/ Ich denke, es unterstützt, was Sie suchen.

Es gibt auch einige .Net-Versionen um: http://www.ujihara.jp/iTextdotNET/en/

+0

Können Sie in den Dokumenten darauf hinweisen? –

+0

Es gibt ein einfaches Beispiel hier: http://itextdocs.lowagie.com/tutorial/objects/anchors/index.php Schauen Sie sich den JavaScript-Abschnitt an. –

0

ich getan habe, die PDF Specifications beschlagen.

Stellt sich heraus, dass das PDF-Dateiformat nicht so schwer ist.

Es hat eine nette Funktion, die in der Lage ist, das Dokument zu modifizieren, indem man am Ende der Datei neuen Inhalt hinzufügt.

Wenn Sie versuchen, das gleiche zu tun ... seien Sie nicht Angst! geh und sieh dir die Spezifikationen an.

+0

Sie fügen also einfach neue und aktualisierte Objektströme hinzu, gefolgt von einer aktualisierten Cross-Reference Table (Xref) und einem Trailer? Scheint so, als müssten Sie in der Lage sein, die vorhandenen Objektströme zu parsen und die Byte-Offsets zu berechnen. –

2

iText (und iText_Sharp_) sind durchaus in der Lage, JS zu einem vorhandenen PDF hinzuzufügen ... Seitenaktionen, Links, Skript auf Dokumentebene, Sie nennen es.

The JavaDoc can be found here.

Dies wurde mit Java im Hinterkopf geschrieben, aber der C# -Code würde fast identisch aussehen (wenn nicht genau das gleiche, mit der Ausnahmebehandlung ausgezogen wie diese).

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