2012-02-22 54 views
9

Estoy usando archivos PDF editables (creados por Nitro PDF Software) en mi aplicación. Estos archivos pdf tienen muchos campos editables (como cuadros de texto) y un botón (como enviar).Generar y guardar un archivo PDF

Cada vez que un usuario abre ese archivo pdf, ingresa el texto y hace clic en el botón enviar que se redirecciona a una página aspx.

¿Cómo obtengo todos los valores estáticos y dinámicos que se publican en esta página, y creo otro archivo pdf con los datos ingresados? ¿Y cómo guardo el archivo pdf creado?

+2

Por qué no le preguntas al creador del juego de herramientas de PDF? – jgauffin

Respuesta

2

¿Cómo obtengo todos los valores estáticos y dinámicos que se publican en esta página?

Puede retreive como recuperar cualquier otro valor de un control HTML, por ejemplo:

string MyVal = Request.Form["FieldName"]; 

y crear otro archivo pdf con los datos introducidos?

Aquí puede utilizar una biblioteca PDF de su elección (iText.Net, Nitro PDF, Amyuni PDF Creator.Net), cargar el formulario en PDF, establezca los valores en cada campo, aplanar su archivo si es necesario, y guardar. El código para esta parte depende de la biblioteca que se utilice, pero están bien documentados, por lo que debería poder encontrar código de muestra fácilmente.

4

usuario siguiente código para generar PDF en asp.net:

Hay un ejemplo de código completo a continuación para empezar. // Código

using System; 
using System.IO; 
using System.Diagnostics; 

using iTextSharp.text; 
using iTextSharp.text.pdf; 

public class iTextDemo 
{ 
public static void Main() 
{ 
    Console.WriteLine("iText Demo"); 

    // step 1: creation of a document-object 
    Document myDocument = new Document(PageSize.A4.Rotate()); 

    try 
    { 

    // step 2: 
    // Now create a writer that listens to this doucment and writes the document to desired Stream. 

    PdfWriter.GetInstance(myDocument, new FileStream("Salman.pdf", FileMode.Create)); 

    // step 3: Open the document now using 
    myDocument.Open(); 

    // step 4: Now add some contents to the document 
    myDocument.Add(new Paragraph("First Pdf File made by Salman using iText")); 

    } 
    catch(DocumentException de) 
    { 
    Console.Error.WriteLine(de.Message); 
    } 
    catch(IOException ioe) 
    { 
    Console.Error.WriteLine(ioe.Message); 
    } 

    // step 5: Remember to close the documnet 

    myDocument.Close(); 
} 
} 
8

De Wikipedia, PDF Interactive elements hay dos posibilidades para la integración de datos y archivos PDF (También hay enlaces a las especificaciones):

  • AcroForms (también conocido como formularios de Acrobat), introducido en la especificación de formato PDF 1.2 e incluido en todas las especificaciones de PDF posteriores.
  • formularios de Adobe XML Forms Architecture (XFA), introducidos en la especificación de formato PDF 1.5. La especificación XFA no está incluida en la especificación PDF, solo se menciona como una función opcional. Los formatos de Adobe XFA no son compatibles con AcroForms.

Para problemas de compatibilidad, me gustaría ir a AcroForms. En ese caso, usaría XFDF, porque es XML y, por lo tanto, es más fácil de analizar. Nunca utilicé Nitro, pero cuando construyes un formulario PDF usualmente proporcionas un botón "Guardar" y eliges en la acción para este botón "Enviar/Enviar formulario al servidor" con el XML de formato de datos que es solo XFDF.

Esto funciona solo cuando el PDF se ve en el navegador. El caso de uso típico es: tener una plantilla vacía en PDF en el servidor, antes de devolver el PDF al usuario, mezclar sus datos en el PDF, el usuario ingresa los datos en el formulario (el PDF se abre en el navegador mediante un complemento o de forma nativa en Chrome), luego el usuario presiona los botones de guardar que publican un xml en el servidor. La próxima vez que el usuario solicite su PDF, usted tomó los datos recientes y los mezcló nuevamente con la plantilla.

Así sólo dos preguntas están abiertas:

Consulte el proceso completo aquí: http://itextpdf.com/book/chapter.php?id=9. Este ejemplo actualiza el PDF con el formulario dinámicamente en tiempo de ejecución. Desde iText se utiliza, no hay diferencia entre Java y C#.

Tenga en cuenta que las versiones anteriores de iText (Java hasta 2.1.7 y C# hasta 4.1.6) se distribuyeron bajo la Licencia pública de Mozilla o la LGPL, mientras que las versiones actuales se distribuyen bajo la Licencia pública general de Affero. Eso explica por qué las versiones anteriores todavía se usan.

1

Para generar PDF, el uso siguiente código:

NameSpace:

 Using System.IO; 
    Using.iTextSharp.text; 
    Using.iTextSharp.text.pdf; 

El botón de clic:

 private void button1_Click(object sender, EventArgs e) 
    { 
     Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35); 
     PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"C:\Test.pdf", FileMode.Create)); 
     doc.Open(); 
     Paragraph paragraph = new Paragraph("Hi, \n This is xxx from yyy \n This is my pdf file"); 
     doc.Add(paragraph); 
     doc.Close(); 
    } 
Cuestiones relacionadas