Following Code streams PDF file to the Browser, however I want to SAVE it to the disk (c:\\myfile.pdf)...
Dim FilePath As String = Server.MapPath("/docs/templates/page_1_cover.pdf")
Dim reader As New PdfReader(FilePath)
Dim output As MemoryStream = New MemoryStream()
Dim stamper As PdfStamper = New PdfStamper(reader, output)
stamper.AcroFields.SetField("APPLICANT NAME", "KnowlegeZone")
reader.Close()
stamper.Close()
Response.AddHeader("Content-Disposition", "attachment; filename=YourPDF_I9.pdf")
Response.ContentType = "application/pdf"
Response.BinaryWrite(output.ToArray())
Response.End()
I am using iTextSharp.
That should be as simple as calling File. WriteAllBytes
Response.AddHeader("Content-Disposition", "attachment; filename=YourPDF_I9.pdf")
Response.ContentType = "application/pdf"
Dim data = output.ToArray();
File.WriteAllBytes("c:\\myfile.pdf",data)
Response.BinaryWrite(data)
Response.End()
In this solution, I can use "PdfStamper" to Save the file, instead of using any other method.
Dim FilePath As String = Server.MapPath("/docs/templates/page_1_cover.pdf")
Dim reader As New PdfReader(FilePath)
Dim newfile As FileStream
newfile = New FileStream(Server.MapPath("/docs/output/go.pdf"), FileMode.Create, FileAccess.Write)
Dim stamper As PdfStamper = New PdfStamper(reader, newfile)
stamper.AcroFields.SetField("APPLICANT NAME", "han")
reader.Close()
stamper.Close()
<%@ WebHandler Language="C#" Class="mergeByteForms" %>
using System;
using System.IO;
using System.Web;
using iTextSharp.text;
using iTextSharp.text.pdf;
public class mergeByteForms : IHttpHandler {
HttpServerUtility Server;
public void ProcessRequest (HttpContext context) {
Server = context.Server;
HttpResponse Response = context.Response;
Response.ContentType = "application/pdf";
using (Document document = new Document()) {
using (PdfSmartCopy copy = new PdfSmartCopy(
document, Response.OutputStream) )
{
document.Open();
for (int i = 0; i < 2; ++i) {
PdfReader reader = new PdfReader(_getPdfBtyeStream(i.ToString()));
copy.AddPage(copy.GetImportedPage(reader, 1));
}
}
}
}
public bool IsReusable { get { return false; } }
// simulate your method to use __one__ byte stream for __one__ PDF
private byte[] _getPdfBtyeStream(string data) {
// replace with __your__ PDF template
string pdfTemplatePath = Server.MapPath(
"~/app_data/template.pdf"
);
PdfReader reader = new PdfReader(pdfTemplatePath);
using (MemoryStream ms = new MemoryStream()) {
using (PdfStamper stamper = new PdfStamper(reader, ms)) {
AcroFields form = stamper.AcroFields;
// replace this with your form field data
form.SetField("title", data);
// ...
// this is __VERY__ important; since you're using the same fillable
// PDF, if you don't set this property to true the second page will
// lose the filled fields.
stamper.FormFlattening = true;
}
return ms.ToArray();
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.