简体   繁体   English

如何在ASP.NET MVC中创建PDF文件的副本

[英]How to create a copy of a PDF file in ASP.NET MVC

I'm reading a PDF file for writing a string on it like this : 我正在读取PDF文件,以便在上面写一个字符串:

public ActionResult Index(HttpPostedFileBase file)
{


    byte[] pdfbytes = null;
    BinaryReader rdr = new BinaryReader(file.InputStream);
    pdfbytes = rdr.ReadBytes((int)file.ContentLength);
    PdfReader myReader = new PdfReader(pdfbytes);

and I'm trying to pass a new file to FileStream like this : 并且我正在尝试像这样将新文件传递给FileStream

FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);

But I don't know how to pass the copied new file to fs object. 但是我不知道如何将复制的新文件传递给fs对象。 Can you help me with that? 你能帮我吗? Thanks. 谢谢。

If you have access to updated byte array pass it to File.WriteAllBytes . 如果您有权访问更新的字节数组, File.WriteAllBytes其传递给File.WriteAllBytes Or you might have an instance of PdfDocument or PdfWriter which usually allow saving the document to file on disk too. 或者您可能有一个PdfDocument或PdfWriter实例,它们通常也允许将文档保存到磁盘上的文件中。 Hope it helps! 希望能帮助到你!

Here is example which is reading existing pdf file, copying it to new one and adding new string line: 这是读取现有pdf文件,将其复制到新文件并添加新字符串行的示例:

using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string originalFile = "c:\\Users\\Admin\\Desktop\\receipt mod 3.pdf";
            string copyOfOriginal = "c:\\Users\\Admin\\Desktop\\newFile.pdf";

            using (var reader = new PdfReader(originalFile))
            {
                using (var fileStream = new FileStream(copyOfOriginal, FileMode.Create, FileAccess.Write))
                {
                    var document = new Document(reader.GetPageSizeWithRotation(1));
                    var writer = PdfWriter.GetInstance(document, fileStream);

                    document.Open();

                    for (var i = 1; i <= reader.NumberOfPages; i++)
                    {
                        document.NewPage();

                        var baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                        var importedPage = writer.GetImportedPage(reader, i);

                        var contentByte = writer.DirectContent;
                        contentByte.BeginText();
                        contentByte.SetFontAndSize(baseFont, 12);

                        var LineString = "Hello World!";

                        contentByte.ShowTextAligned(10,LineString,50,50,0);

                        contentByte.EndText();
                        contentByte.AddTemplate(importedPage, 0, 0);
                    }

                    document.Close();
                    writer.Close();
                }
            }
        }
    }
}

Try this. 尝试这个。 This program copies all pdf files from one location to another. 该程序将所有pdf文件从一个位置复制到另一位置。

protected void Button1_Click(object sender, EventArgs e)  
      {

    string sourceDirectory = @"D:\project training\source";

            string targetDirectory = @"D:\project training\destiny";

            Copy(sourceDirectory, targetDirectory);
        }
        public static void Copy(string sourceDirectory, string targetDirectory)
        {
            DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
            DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);

            CopyAll(diSource, diTarget);
        }
        public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
        {



            Directory.CreateDirectory(target.FullName);
            foreach (FileInfo fi in source.GetFiles())
            {
                if (fi.Extension.Equals(".pdf"))
                {
                    fi.CopyTo(Path.Combine(target.FullName, fi.Name), true);
                }
            }


            foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
            {
                DirectoryInfo nextTargetSubDir =
                    target.CreateSubdirectory(diSourceSubDir.Name);
                CopyAll(diSourceSubDir, nextTargetSubDir);
            }
        }

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

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