asp如何生成pdf格式的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp如何生成pdf格式的文件相关的知识,希望对你有一定的参考价值。

如题

原来的是下载DOC文档的一个页面,用的是
Response.Clear
Response.ContentType = "application/pdf"
Response.AddHeader "content-disposition", "attachment; filename=" & FileName
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = adTypeBinary
Stream.Open
Stream.LoadFromFile Server.MapPath(FileName)
While Not Stream.EOS
Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End
参考技术A 1、Setup:
Set theDoc = Server.CreateObject("ABCpdf5.Doc")
theDoc.Rect.Inset 72, 144 2、Page:
theDoc.Page = theDoc.AddPage()
theURL = "http://www.yahoo.com/"
theID = theDoc.AddImageUrl(theURL)3、Chain
Do
theDoc.FrameRect ' add a black border
If Not theDoc.Chainable(theID) Then Exit Do
theDoc.Page = theDoc.AddPage()
theID = theDoc.AddImageToChain(theID)
Loop4、Flatten
For i = 1 To theDoc.PageCount
theDoc.PageNumber = i
theDoc.Flatten
Next5、Save:
theDoc.Save "c:\mypdfs\pagedhtml.pdf"
参考技术B 另存为pdf格式,如果不能另存在网上下载一个格式转换器就可以

如何合并物理文件(pdf)和生成的文件(pdf)并将它们输出到浏览器?

【中文标题】如何合并物理文件(pdf)和生成的文件(pdf)并将它们输出到浏览器?【英文标题】:How to merge a physical file (pdf) and a generated one (pdf) and output them to the browser? 【发布时间】:2016-01-10 23:27:36 【问题描述】:

一直在努力解决这个问题。

我有一个物理文件 (pdf) 和一个由 iTextSharp (pdf) 生成的生成文件,我的目标是合并它们并将其输出到浏览器。

顺便说一句,我使用的是 ASP.NET MVC 4

所以,在我的控制器中,我有这样的东西:

public ActionResult Index()

  MemoryStream memoryStream = new MemoryStream();
  var path = Server.MapPath("~/Doc/../myfile.pdf"); // This is my physical file
  var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);

  GenerateFile(); // This is my generated file thru iTextSharp

  Response.AddHeader("Content-Disposition", "inline");
  memoryStream.Position = 0;

  return new FileStreamResult(// Maybe merged file goes here? not sure.
                             ,"application/pdf");


private void GenerateFile()

  MemoryStream stream = new MemoryStream();
  var document = new Document(/*some settings here*/);
  PdfWriter.GetInstance(document, stream).CloseStream = false;

  document.Open();
  // generate pdf here
  document.Close();

是否可以将生成的 pdf 设置为第一个(或它将生成多少页)页面,然后附加物理文件?

任何帮助将不胜感激。谢谢

【问题讨论】:

请访问此链接***.com/questions/6029142/… var generatedFile = GenerateFile();GenerateFile 返回void @codroipo 哦,是的,那是个错误。我会编辑它。 @MuhammadUsman 谢谢老兄,我试试这个 @MuhammadUsman 嘿伙计,你能告诉我如何使用这个功能吗?似乎无法使它工作。我无法使其与生成的 pdf 和物理 pdf 一起使用 【参考方案1】:

我可以为 c# 提供一个示例

首先你需要安装一个第三方库:例如pdfium.net sdk

你可以通过 nuget 做到这一点 安装包 pdfium.net.sdk

public void MergeDocument()

    //Initialize the SDK library
    //You have to call this function before you can call any PDF processing functions.
    PdfCommon.Initialize();

    //Open and load a PDF document in which will be merged other files
    using (var mainDoc = PdfDocument.Load(@"c:\test001.pdf"))
    
        //Open one PDF document.
        using (var doc = PdfDocument.Load(@"c:\doc1.pdf"))
        
            //Import all pages from document
            mainDoc.Pages.ImportPages(
                doc,
                string.Format("1-0", doc.Pages.Count),
                mainDoc.Pages.Count
                );
        

        //Open another PDF document.
        using (var doc = PdfDocument.Load(@"c:\doc2.pdf"))
        
            //Import all pages from document
            mainDoc.Pages.ImportPages(
                doc,
                string.Format("1-0", doc.Pages.Count),
                mainDoc.Pages.Count
                );
        

        mainDoc.Save(@"c:\ResultDocument.pdf", SaveFlags.NoIncremental);


    
    //Release all resources allocated by the SDK library
    PdfCommon.Release();

【讨论】:

你忘了说 patagames 提供付费解决方案【参考方案2】:

如果有帮助的话,我已经使用 PDFSharp 做了类似的事情(合并物理和代码生成的 PDF)。

PdfDocument document = new PdfDocument();

PdfDocument physicalDoc = PdfSharp.Pdf.IO.PdfReader.Open(filepath);
PdfPage coverPage = physicalDoc.Pages[0];

document.AddPage(coverPage);

然后添加您自己生成的页面可以这样完成:

PdfPage generatedPage = new PdfPage();
XGraphics g = XGraphics.FromPdfPage(generatedPage);

g.DrawRectangle(color, x, y, width, height);  
g.DrawString("This release document describes the contents of..."
             ,font, textColor, x, y);

document.AddPage(generatedPage)

【讨论】:

你怎么知道哪个页面会先出现? @BoyPasmo Pages 数组的排序方式与物理 pdf 相同。所以 PDF 中的第一页将是数组中的第一页 生成的pdf怎么样?我将如何添加它们?很抱歉提出此类问题 @BoyPasmo 我已经更新了我的答案以包含生成的页面。您需要按照希望它们在 PDF 中显示的顺序添加页面。

以上是关于asp如何生成pdf格式的文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 s-s-rS 和 ASP.NET 合并以 Pdf 格式生成的报告

PDF文件生成

如何利用ASP生成WORD文档

如何从 ASP.NET 中的 Web 请求返回 pdf?

如何以 HTML 格式显示 PDF 文件?

如何合并物理文件(pdf)和生成的文件(pdf)并将它们输出到浏览器?