我正在尝试将字节数组添加到 pdfbox 框中,但无法实现。请在下面找到代码
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\\dhamijas\\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!" );
}
}
错误
java.io.IOException:错误:文件结束,预期行位于偏移量 5 处 你好世界! 在 org.apache.pdfbox.pdfparser.BaseParser.readLine(BaseParser.java:1092) 在org.apache.pdfbox.pdfparser.COSParser.parseHeader(COSParser.java:1609) 在org.apache.pdfbox.pdfparser.COSParser.parsePDFHeader(COSParser.java:1588) 在org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:157) 在org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:136) 在 org.apache.pdfbox.Loader.loadPDF(Loader.java:224) 在 org.apache.pdfbox.Loader.loadPDF(Loader.java:196) 在 org.apache.pdfbox.Loader.loadPDF(Loader.java:176) 在 org.apache.pdfbox.Loader.loadPDF(Loader.java:159) 在 pdftest.testpdf.App.getPDF(App.java:36) 在 pdftest.testpdf.App.main(App.java:85)
由于这几乎肯定是由于您的源数据几乎肯定是纯文本,因此请尝试以下操作:
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();
}
}