嵌入RTF内容的java PDFBox
我正在使用我的java代码中的PDFBox创建PDF文件。在此期间,我需要在这个新的PDF文件之间嵌入一个RTF(富文本格式)文件。我无法通过谷歌找到任何方法来做到这一点
我确信,我无法将RTF内容直接写入PDF。尽管我尝试了下面的代码,但在打开PDF时出现了错误。错误表示PDF已损坏
注意:类似的事情可以在C#和VB http://www.syncfusion.com/kb/845/how-to-insert-an-rtf-text-into-a-pdf-document中完成。所以我很乐观,java中肯定也有类似的东西
我使用的是PDFBox 1.8.10
示例代码:
public static void main(String arg[]) throws IOException, COSVisitorException
{
final PDFont font = PDType1Font.HELVETICA_OBLIQUE;
final int font_size = 8;
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDPage.PAGE_SIZE_LETTER);
document.addPage(page);
PDPageContentStream contents = new PDPageContentStream(document, page, true, true);
float x = 10f;
float y = page.getMediaBox().getHeight();
float yOffset = 15f;
float yCurrent = y - yOffset;
contents.beginText();
contents.moveTextPositionByAmount(x, yCurrent);
contents.setFont(font, font_size);
contents.drawString("Start Text before RTF");
contents.endText();
yCurrent = yCurrent - yOffset;
FileInputStream fi = new FileInputStream("C:\\Test.rtf");
StringBuffer sb = new StringBuffer();
BufferedReader br= new BufferedReader(new InputStreamReader(fi));
int c;
try {
while((c=br.read()) != -1){
sb.append((char)c);
}
} catch (IOException e) {
throw e;
}
br.close();
String rtfContent = sb.toString();
contents.beginText();
contents.moveTextPositionByAmount(x, yCurrent);
contents.setFont(font, font_size);
contents.drawString(rtfContent);
contents.endText();
yCurrent = yCurrent - yOffset;
contents.beginText();
contents.moveTextPositionByAmount(x, yCurrent);
contents.setFont(font, font_size);
contents.drawString("End Text after RTF");
contents.endText();
contents.close();
File file = new File("C:\\pdf\\RTF\\RRFSample1.pdf");
System.out.println("Sample file saved at : " + file.getAbsolutePath());
document.save(file);
document.close();
}
共 (0) 个答案