Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Itextsharp使用c动态将文本写入pdf#_C#_Itextsharp - Fatal编程技术网

C# Itextsharp使用c动态将文本写入pdf#

C# Itextsharp使用c动态将文本写入pdf#,c#,itextsharp,C#,Itextsharp,这件事让我很为难,需要上师的帮助 我正在使用itextsharp动态编写我不想保存到服务器的文本,只需将其放入内存流并以pdf格式显示即可 如何修改此代码 var reader = new PdfReader(filePath); var size = reader.GetPageSizeWithRotation(1); var document = new Document(size); var fs = new FileStream(filePath, Fi

这件事让我很为难,需要上师的帮助

我正在使用itextsharp动态编写我不想保存到服务器的文本,只需将其放入内存流并以pdf格式显示即可

如何修改此代码

    var reader = new PdfReader(filePath);
    var size = reader.GetPageSizeWithRotation(1);
    var document = new Document(size);

    var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
    var writer = PdfWriter.GetInstance(document, fs);
    document.Open();

    var cb = writer.DirectContent;

    for (int page = 1; page <= reader.NumberOfPages; page++)
    {
        document.NewPage();
        var importedPage = writer.GetImportedPage(reader, page);
        cb.AddTemplate(importedPage, 0, 0);

        BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        cb.BeginText();
        cb.SetFontAndSize(bf, 10);
        cb.ShowTextAligned(Element.ALIGN_LEFT, lefttext, 50, 400, 90);
        cb.EndText();

        cb.BeginText();
        cb.SetFontAndSize(bf, 10);
        cb.ShowTextAligned(Element.ALIGN_JUSTIFIED_ALL, headertext, 280, 720, 0);
        cb.EndText();

        cb.BeginText();
        cb.SetFontAndSize(bf, 10);
        cb.ShowTextAligned(Element.ALIGN_JUSTIFIED_ALL, footertext, 280, 50, 0);
        cb.EndText();
    }

    document.Close();
    fs.Close();
    writer.Close();
    reader.Close();
var reader=newpdfreader(filePath);
var size=reader.GetPageSizeWithRotation(1);
var文件=新文件(大小);
var fs=new FileStream(filePath,FileMode.Create,FileAccess.Write);
var writer=PdfWriter.GetInstance(文档,fs);
document.Open();
var cb=writer.DirectContent;

对于(int page=1;就iTextSharp而言,page):要将文档保存在内存中,请使用内存流而不是文件流。您的代码非常糟糕,因为它会丢弃原始文档中可能提供的所有交互功能。您应该使用PdfStamper而不是PdfWriter。请阅读文档:
    var reader = new PdfReader(server.MapPath("~/Data/162013.pdf"));
    using (var ms = new MemoryStream())
    {
        var stamper = new PdfStamper(reader, ms);
        var cb = stamper.GetOverContent(1);
        var size = reader.GetPageSizeWithRotation(1);
        var document = new Document(size);
        document.Open();
        for (var page = 1; page <= reader.NumberOfPages; page++)
        {
            document.NewPage();
            var importedPage = stamper.GetImportedPage(reader, page);
            cb.AddTemplate(importedPage, 0 , 0);

            var bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
            cb.BeginText();
            cb.SetFontAndSize(bf, 10);
            cb.ShowTextAligned(Element.ALIGN_LEFT, "sdfdsf", 50, 400, 90);
            cb.EndText();

            cb.BeginText();
            cb.SetFontAndSize(bf, 10);
            cb.ShowTextAligned(Element.ALIGN_JUSTIFIED_ALL, "sdfsdfsd", 280, 720, 0);
            cb.EndText();

            cb.BeginText();
            cb.SetFontAndSize(bf, 10);
            cb.ShowTextAligned(Element.ALIGN_JUSTIFIED_ALL, "sdfsdf", 280, 50, 0);
            cb.EndText();
        }

        stamper.FormFlattening = true;
        document.Close();
        stamper.Close();
        DownloadAsPDF(ms);
    }

}