3

生成 PDF 表单 BMP 时,结果总是古玩。

输入“hellowworld.bmp”

输入文件:helloworld.bmp

输出(仅相关部分) 结果文件

  • 为什么会有质量损失
  • 为什么重复三遍
  • 为什么有一个黑色方块(绿框)

下面是我如何测试它:

@Test
public final void testWriteSingleBMPtoPDF() throws IOException {
    Assert.assertTrue("File existst", TestFileHelper.getBMP(BMPS.HELLOWORLD).exists());
    Assert.assertTrue("File readable", TestFileHelper.getBMP(BMPS.HELLOWORLD).canRead());
    ArrayList<File> doc = new ArrayList<EncodedPage>();
    doc.add(createPage(BMPS.HELLOWORLD));
    File result = null;
    try {
        result = ConvertPDF.bmpToPDF(doc);
    } catch (COSVisitorException e) {
        e.printStackTrace();
    }
    Assert.assertTrue("File existst", result.exists());
    Assert.assertTrue("File readable", result.canRead());
    System.out.println("Please Check >"+result+"<");
}

这是我的java实现的一部分

public static File bmpToPDF(ArrayList<File> inputDoc)
        PDDocument document = new PDDocument();
        String saveTo = "C:\\temp\\" + System.currentTimeMillis() + ".pdf";
        for (File bmpPage : inputDoc) {
            PDPage page = null;
            PDXObjectImage ximage = null;
            page = new PDPage();
            document.addPage(page);
            BufferedImage awtImage = ImageIO.read(bmpPage);
            ximage = new PDPixelMap(document, awtImage);
            PDPageContentStream content = new PDPageContentStream(document, page);
            content.drawImage(ximage, 0, 0);
            content.close();
        }
        document.save(saveTo);
        document.close();
return new File(saveTo) ;

Apache PDFBox 的版本是 1.7.1

4

0 回答 0