繁体   English   中英

将PDF保存到DISC

[英]Save PDF to DISC

以下代码将PDF文件流式传输到浏览器,但是我想将其保存到磁盘(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()

我正在使用iTextSharp。

那应该和调用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()

在此解决方案中,我可以使用“ PdfStamper”来保存文件,而不是使用任何其他方法。

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();
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM