i am trying to add byte array to pdfbox box but unable to achieve it.. please find below the code
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
public class App
{
public static String getPDF(Blob l_bContent) throws IOException {
InputStream stream = l_bContent.getBinaryStream();
byte[] buffer = new byte[8192];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int bytesRead;//enter code here
while ((bytesRead = stream.read(buffer)) != -1) {
baos.write(buffer, 0, bytesRead);
}
byte[] buffer1= baos.toByteArray();
PDDocument doc = Loader.loadPDF(buffer1);
PDPage page = new PDPage();
doc.addPage(page);
String fileName = "C:\\Users\\dhs\\new.pdf";
doc.save(fileName);
stream.close();
return fileName;
}
public static void main( String[] args )
{
Blob l_bContent =managerservice.getblobcontent();
App test1 = new App();
try {
test1.getPDF(l_bContent);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println( "Hello World!" );
}
}
error
java.io.IOException: Error: End-of-File, expected line at offset 5 Hello World! at org.apache.pdfbox.pdfparser.BaseParser.readLine(BaseParser.java:1092) at org.apache.pdfbox.pdfparser.COSParser.parseHeader(COSParser.java:1609) at org.apache.pdfbox.pdfparser.COSParser.parsePDFHeader(COSParser.java:1588) at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:157) at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:136) at org.apache.pdfbox.Loader.loadPDF(Loader.java:224) at org.apache.pdfbox.Loader.loadPDF(Loader.java:196) at org.apache.pdfbox.Loader.loadPDF(Loader.java:176) at org.apache.pdfbox.Loader.loadPDF(Loader.java:159) at pdftest.testpdf.App.getPDF(App.java:36) at pdftest.testpdf.App.main(App.java:85)
Since this is almost certainly down to the fact that your source data is almost certainly plain text, try the following (with thanks):
public static void saveAsPdf(InputStream in, String outputPath) {
try (PDDocument doc = new PDDocument()) {
PDPage pdPage = new PDPage();
doc.addPage(pdPage);
try (PDPageContentStream contentStream = new PDPageContentStream(doc, pdPage);
Scanner s = new Scanner(in)) {
contentStream.beginText();
contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);
contentStream.setLeading(14.5f);
contentStream.newLineAtOffset(25, 500);
while (s.hasNextLine()) {
contentStream.showText(s.nextLine());
contentStream.newLine();
}
contentStream.endText();
}
doc.save(outputPath);
} catch (IOException e) {
e.printStackTrace();
}
}