Java 如何使用iText将InputStream读写到pdf文件?

Java 如何使用iText将InputStream读写到pdf文件?,java,pdf,stream,itext,itext7,Java,Pdf,Stream,Itext,Itext7,我有一个输入流。我正在尝试读取InputStream并使用iText将其写入pdf文件 我尝试了以下方法: FileOutputStream fileout = new FileOutputStream(file); Document document = new Document(); PdfWriter.getInstance(document, fileout); InputStream is=null; is = myInfo.getInputStream(); String re

我有一个输入流。我正在尝试读取InputStream并使用iText将其写入pdf文件

我尝试了以下方法:

FileOutputStream fileout = new FileOutputStream(file);
Document document = new Document();
PdfWriter.getInstance(document, fileout);

InputStream is=null;
is = myInfo.getInputStream();


String result = IOUtils.toString(is, "UTF-8");
Paragraph paragraph=new Paragraph();
paragraph.add(result);
document.add(paragraph);

is.close();
document.close();
在这里,输出文件包含许多不需要的字符、一些XML标记等。输出pdf文件中包含许多不可读的内容

我可以使用以下代码将其写入pdf文件:

OutputStream ostream = new FileOutputStream("c:\\test\\newfile1.pdf");
byte[] data = new byte[4096];
            int r = 0;
            while((r = is.read(data, 0, data.length)) != -1)
            {
                ostream.write(data, 0, r);
             }
ostream.flush();
ostream.close();
上面的代码帮助我将inputstream写入pdf文件。但是我想用itext做同样的事情

我第一次使用iText,不知道如何正确使用它。有人能帮我吗?谢谢


解决方案:

我将输入流更改为ByteArray

PdfReader pdfreader;
pdfreader = new PdfReader(myInfo.getByteArray());
PdfStamper pdfStamper = new PdfStamper(pdfreader, fileout);
pdfStamper.close();
pdfreader.close();

通过这种方式,我能够读取inputsteam并使用itext写入pdf。谢谢大家。

代码所做的是读取UTF-8文本,并将其作为段落添加到PDF文档对象中。首先将文本保存为
.txt
,不带itext,然后查看您得到的内容。(您的问题中没有列出关闭调用,但我假设它们在原始代码中。)是的,我的代码中有is.close()和document.close(),并且在这里进行了更新。我希望代码生成pdf文件。那么为什么要将其保存为.txt呢?垃圾输入,垃圾输出。如果原始文件中充满了不需要的字符、xml标记等,并且将这些不需要的字符和xml标记写入PDF文件,为什么它们会消失?什么是原始文件?它包含什么?原始文件只是一封信,其中包含诸如姓名、地址、信的内容等详细信息。如果我使用FileOutputStream,我可以将其写入pdf,但我不能使用itext完成相同的操作。那么,原始文件已经是pdf文件了?不是文本文件?那你为什么把它当作文本来读呢?如果已经是PDF文件,那么使用iText生成PDF文件有什么意义?你到底想达到什么目的?