Я пытаюсь написать изображение в PDF с помощью PDFBox. Я использую их образец (как прилагается). Все в порядке, но запись 3,5 МБ jpeg (3200 * 2500 пикселей) занимает примерно 2 секунды.Добавление JPG в PDF чрезвычайно медленно
Это нормально? Есть ли способ сделать это быстрее (не менее 10 раз)?
public void createPDFFromImage(String inputFile, String image, String outputFile)
throws IOException, COSVisitorException
{
// the document
PDDocument doc = null;
try
{
doc = PDDocument.load(inputFile);
//we will add the image to the first page.
PDPage page = (PDPage)doc.getDocumentCatalog().getAllPages().get(0);
PDXObjectImage ximage = null;
if(image.toLowerCase().endsWith(".jpg"))
{
ximage = new PDJpeg(doc, new FileInputStream(image));
}
else if (image.toLowerCase().endsWith(".tif") || image.toLowerCase().endsWith(".tiff"))
{
ximage = new PDCcitt(doc, new RandomAccessFile(new File(image),"r"));
}
else
{
//BufferedImage awtImage = ImageIO.read(new File(image));
//ximage = new PDPixelMap(doc, awtImage);
throw new IOException("Image type not supported:" + image);
}
PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, true);
contentStream.drawImage(ximage, 20, 20);
contentStream.close();
doc.save(outputFile);
}
finally
{
if(doc != null)
{
doc.close();
}
}
}
Я посмотрел на 1.8 источника, время используется в ImageIO.read(). Изображение считывается один раз, чтобы получить информацию об изображении (например, размер), поэтому. –