2012-02-22 12 views
9

Tôi đang sử dụng các tệp pdf có thể chỉnh sửa (được tạo bởi Nitro PDF Software) trong đơn đăng ký của mình. Các tệp pdf này có rất nhiều trường có thể chỉnh sửa (như hộp văn bản) và một nút (như gửi).Tạo và lưu tệp PDF

Bất cứ khi nào người dùng mở tệp pdf đó, hãy nhập văn bản và nhấp vào nút gửi họ sẽ được chuyển hướng đến trang aspx.

Làm cách nào để nhận tất cả các giá trị tĩnh và động được đăng lên trang này và tạo một tệp pdf khác với dữ liệu đã nhập? Và làm cách nào để lưu tệp pdf đã tạo?

+2

Tại sao bạn không hỏi tác giả của bộ công cụ PDF? – jgauffin

Trả lời

2

Làm cách nào để nhận tất cả các giá trị tĩnh và động được đăng lên trang này?

Bạn có thể truy xuất chúng như bạn lấy bất kỳ giá trị khác từ một điều khiển html, ví dụ:

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

và tạo một file pdf với các dữ liệu nhập vào?

Ở đây bạn có thể sử dụng thư viện PDF bạn chọn (iText.Net, Nitro PDF, Amyuni PDF Creator.Net), tải biểu mẫu PDF của bạn, đặt giá trị cho từng trường, làm phẳng tệp của bạn nếu cần và lưu. Mã cho phần này phụ thuộc vào thư viện đang được sử dụng, nhưng chúng được viết thành tài liệu rất tốt để bạn có thể dễ dàng tìm thấy mã mẫu.

4

Mã sau của người dùng để tạo PDF trong asp.net:

Có một mẫu mã đầy đủ bên dưới để giúp bạn bắt đầu. // Mã

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

Từ Wikipedia, PDF Interactive elements có hai khả năng tích hợp dữ liệu và các file PDF (có cũng được liên kết đến các thông số kỹ thuật):

  • acroforms (còn được gọi là hình thức Acrobat), được giới thiệu trong đặc tả định dạng PDF 1.2 và được bao gồm trong tất cả các thông số kỹ thuật PDF sau này.
  • Biểu mẫu Kiến trúc biểu mẫu XML của Adobe (XFA), được giới thiệu trong đặc tả định dạng PDF 1.5. Đặc tả XFA không được bao gồm trong đặc tả PDF, nó chỉ được tham chiếu như là một tính năng tùy chọn. Biểu mẫu Adobe XFA không tương thích với AcroForms.

Để biết các vấn đề về tính tương thích, tôi sẽ sử dụng AcroForms. Trong trường hợp đó tôi sẽ sử dụng XFDF, bởi vì nó là XML và do đó dễ dàng hơn để phân tích cú pháp. Tôi không bao giờ sử dụng Nitro, nhưng khi bạn xây dựng một hình thức PDF, bạn thường cung cấp một nút "Save" và chọn hành động cho nút này "Gửi/Đăng mẫu đến máy chủ" với định dạng dữ liệu XML mà chỉ là XFDF.

Điều này chỉ hoạt động khi PDF được xem trong trình duyệt. Vì vậy, trường hợp sử dụng điển hình là: có mẫu PDF trống trên máy chủ, trước khi trả lại PDF cho người dùng trộn dữ liệu của bạn vào PDF, người dùng nhập dữ liệu vào biểu mẫu (PDF được mở trong trình duyệt thông qua plugin hoặc nguyên bản trong Chrome), sau đó người dùng nhấn các nút lưu mà đăng một xml trên máy chủ. Lần sau khi người dùng yêu cầu tệp PDF của mình, bạn đã lấy dữ liệu gần đây và trộn lại với mẫu.

Vì vậy, chỉ có hai câu hỏi mở:

Xem toàn bộ quá trình tại đây: http://itextpdf.com/book/chapter.php?id=9. Ví dụ này cập nhật PDF với biểu mẫu động tại thời gian chạy. Vì iText được sử dụng nên không có sự khác biệt giữa Java và C#. Hãy lưu ý rằng các phiên bản trước của iText (Java lên đến 2.1.7 và C# lên đến 4.1.6) được phân phối theo Giấy phép Công cộng Mozilla hoặc LGPL, trong khi các phiên bản hiện tại được phân phối theo Giấy phép Công cộng Chung Affero. Thats giải thích lý do tại sao các phiên bản cũ hơn vẫn được sử dụng.

1

Để tạo PDF, sử dụng đoạn mã sau:

NameSpace:

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

Mở nút bấm:

 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(); 
    } 
Các vấn đề liên quan