我正在使用iText阅读现有PDF(INPUT
):
PdfReader reader = new PdfReader(INPUT);
我正在使用此reader
实例来操作PDF,但最终结果需要进行Base64编码(我需要将其作为文本BLOB插入到db2数据库中)。如何确保iText的输出是Base64编码?
答案 0 :(得分:0)
你的问题不清楚,或者至少含糊不清。
询问如何在Base64中转换PdfReader pdfReader?没有任何意义,这就是为什么你的问题不清楚的原因。您的问题可能是您使用Base64编码的输入,或者您想要使用Base64编码的输出。这使你的问题含糊不清。
如果INPUT
是String
代表使用Base64编码的PDF文件,那么您可以像这样对其进行解码:
import com.itextpdf.text.pdf.codec.Base64;
...
PdfReader reader = new PdfReader(Base64.decode(INPUT));
如果INPUT
是您要操作的PDF文件(路径),而PDF文件被编码为Base64字符串,那么您可以这样做:
import com.itextpdf.text.pdf.codec.Base64;
PdfReader reader = new PdfReader(INPUT);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, baos);
// do stuff with stamper
stamper.close();
String base64 = Base64.encode(baos.toByteArray());
可能还有其他方法可以生成Base64输出,例如:使用某种Base64OutputStream
,但我更喜欢使用iText附带的Base64类。
如果您不需要操作PDF,则甚至不需要iText。您只需使用此问题的答案:Out of memory when encoding file to base64
<强>更新强>
在对这个答案的评论中,你写道:
我有这个:
byte[] bdata = blob.getBytes(1, (int) blob.length());
InputStream inputStream = blob.getBinaryStream();
String recuperataDaDb = convertStreamToString(inputStream);
byte[] decompilata = Base64.decode(recuperataDaDb);
我想在pdf文件whit itext.jar
中写下这个“decompilata”您有两种选择:
[1。]你不需要iText。您只需将byte[]
写入文件,如下所述:byte[] to file in Java
FileOutputStream stream = new FileOutputStream(path);
try {
stream.write(bytes);
} finally {
stream.close();
}
[2.]你读到了这个问题的答案:
PdfReader reader = new PdfReader(decompilata);
FileOutputStream fos = new FileOutputStream(pathToFile);
PdfStamper stamper = new PdfStamper(reader, fos);
stamper.close();
您对使用iText的渴望感到非常惊讶。你真的不需要iText来满足你的要求。您所需要的只是教授如何编写Java代码来执行一些简单的I / O.