如何将从pdf接收的字节数组转换为另一个pdf? [英] How to convert Byte array received from a pdf to another pdf?

查看:155
本文介绍了如何将从pdf接收的字节数组转换为另一个pdf?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  byte  [] bytes = System.IO.File.ReadAllBytes( @   C:\ SGO3-1.pdf); 


// MemoryStream outPDF = new MemoryStream();
FileStream outPDF = new FileStream( @ C:\ pdf1.pdf,FileMode.Create);
// byte [] outBytes;
PdfReader pdfr = new PdfReader(字节);

凭证doc = new 文档(PageSize.LETTER);

Document.Compress = true ;

PdfWriter writer = PdfWriter.GetInstance(doc,outPDF);

doc.Open();

PdfContentByte cb = writer.DirectContent;
cb.SaveState();

PdfImportedPage页面;

for int i = 1 ; i < pdfr.NumberOfPages + 1 ; i ++)
{
page = writer.GetImportedPage(pdfr,i);
cb.AddTemplate(page,PageSize.LETTER.Width / pdfr.GetPageSize(i).Width, 0 0 ,PageSize.LETTER.Height / pdfr.GetPageSize(i).Height, 0 0 < /跨度>);
doc.NewPage();
Console.WriteLine( 创建pdf);
}





我正在尝试另一个pdf文件正在创建。但是在打开pdf时它会显示错误消息文件已损坏或无法修复

解决方案

使用BinaryReader和BinaryWriter

示例:

 字节 [] DocDataStream; 

使用(FileStream stream = File.Open(OriginalPDFFileName,FileMode.Open))
{
使用(BinaryReader br = new BinaryReader(stream))
{
DocDataStream = br.ReadBytes (( int )stream.Length);
}
}
// PDF现在作为内存中的字节数组<使用 var filestream = File.OpenWrite(NewPDFFileName) {
BinaryWriter bw = new BinaryWriter(filestream);
bw.Write(DocDataStream, 0 ,( int )DocDataStream.Length);
bw.Close();
}
// 您的文件已被重写!


byte[] bytes = System.IO.File.ReadAllBytes(@"C:\SGO3-1.pdf");
                               
           
       // MemoryStream outPDF = new MemoryStream();
            FileStream outPDF = new FileStream(@"C:\pdf1.pdf", FileMode.Create);
           // byte[] outBytes;
            PdfReader pdfr = new PdfReader(bytes);
            
                Document doc = new Document(PageSize.LETTER);
                
                    Document.Compress = true;
            
                    PdfWriter writer = PdfWriter.GetInstance(doc, outPDF);
                    
                    doc.Open();

                    PdfContentByte cb = writer.DirectContent;
                    cb.SaveState();

                    PdfImportedPage page;

                    for (int i = 1; i < pdfr.NumberOfPages + 1; i++)
                    {
                        page = writer.GetImportedPage(pdfr, i);
                        cb.AddTemplate(page, PageSize.LETTER.Width / pdfr.GetPageSize(i).Width, 0, 0, PageSize.LETTER.Height / pdfr.GetPageSize(i).Height, 0, 0);
                        doc.NewPage();
                        Console.WriteLine("creating pdf");
                    }



I am trying this another pdf file is being created.But while opening pdf it gives error message File is damaged or could not be repaired

解决方案

Use BinaryReader and BinaryWriter
example:

Byte[] DocDataStream;

using (FileStream stream = File.Open(OriginalPDFFileName, FileMode.Open))
                    {
                        using (BinaryReader br = new BinaryReader(stream))
                        {
                            DocDataStream = br.ReadBytes((int)stream.Length);
                        }
                    }
// The PDF is now as Byte Array in memory

 using (var filestream = File.OpenWrite(NewPDFFileName))
            {
                BinaryWriter bw = new BinaryWriter(filestream);
                bw.Write(DocDataStream, 0, (int)DocDataStream.Length);
                bw.Close();
            }					
// And your file is rewritten!			


这篇关于如何将从pdf接收的字节数组转换为另一个pdf?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆