Можно ли сохранить pdf-документ в байтовый массив (aspose.pdf для java)

Мне нужно сохранить документ в формате pdf, сгенерированный библиотекой aspose.pdf for java, в память (без использования временного файла)

Я просматривал документацию и не нашел save метод с соответствующей подписью. (Я искал какой-то выходной поток или хотя бы массив байтов).

Является ли это возможным? Если это так, как я могу управлять этим?

Спасибо


person ppopoff    schedule 22.12.2015    source источник
comment
возможно, это может вам помочь: aspose.com/community/forums/thread/326929/   -  person ivan    schedule 23.12.2015
comment
также это может работать: aspose.com/docs/display/pdfjava/   -  person ivan    schedule 23.12.2015
comment
Спасибо, но первая ссылка про C#, я использую java. Во втором они используют pdf1.save("HelloWorld.pdf"), но я ищу что-то вроде pdf1.save(outputStream)   -  person ppopoff    schedule 23.12.2015


Ответы (2)


Aspose.Pdf для Java поддерживает сохранение вывода как в файл, так и в поток. Пожалуйста, проверьте следующий фрагмент кода, он поможет вам выполнить задачу.

byte[] input = getBytesFromFile(new File("C:/data/HelloWorld.pdf"));
ByteArrayOutputStream output = new ByteArrayOutputStream();
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(new ByteArrayInputStream(input));
pdfDocument.save(output);
//If you want to read the result into a Document object again, in Java you need to get the
//data bytes and wrap into an input stream.
InputStream inputStream=new ByteArrayInputStream(output.toByteArray());

Я Тилал Ахмад, евангелист-разработчик в Aspose.

person Tilal Ahmad    schedule 23.12.2015
comment
Спасибо, это то, что я искал! - person ppopoff; 23.12.2015

Я сделал подобную вещь.

Вот метод записи данных в байт:

public byte[] toBytes() {
        //create byte array output stream object
        ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
        //create new data output stream object
        DataOutputStream outStream = new DataOutputStream(byteOutStream);
        try {//write data to bytes stream
            if (data != null) {
            outStream.write(data);//write data
            }//return array of bytes
        return byteOutStream.toByteArray();
    }

Затем вы делаете что-то вроде

yourFileName.toBytes;
person mer063    schedule 23.12.2015
comment
Я искал решение для конкретной библиотеки в этом случае (aspose.pdf for java), которая сохраняет документы в виде файлов на жестком диске, используя следующий метод: pdfFile.save("/name/of/the/file.pdf"). Я ожидал решения с выходным потоком в качестве параметра. - person ppopoff; 23.12.2015
comment
Сталкивались ли вы с какими-либо проблемами при использовании объекта ByteArrayOutputStream, которым поделился Tilal выше. Если вы столкнулись с какой-либо проблемой, поделитесь своими файлами ресурсов, разместив запрос на форуме поддержки продукта Aspose.Pdf. - person codewarior; 27.12.2015