Это временное решение, которое я реализовал, так как я приближался к крайнему сроку, я все еще в поиске решения, в котором мне не нужно использовать устаревшие классы, и я хотел бы избежать ссылки на oracle.sql.BLOBи используйте java.sql.Blob.
Временное решение: создание объекта oracle.sql.BLOB вместо SerialBlob, а затем заполнение байтового массива из выходного потока следующим образом:
conn = new OracleDriver().defaultConnection();
desBlob = BLOB.createTemporary(conn, false, BLOB.DURATION_SESSION);
desBlob.setBytes(1, pdfDocumentOutputStream.toByteArray());
и подавление предупреждений об устареваниииспользуя,
@SuppressWarnings("deprecation")
Окончательный код Java
@SuppressWarnings("deprecation")
public static java.sql.Blob Convert_Image(java.sql.Blob srcBlob) {
java.sql.Blob desBlob = null;
try {
Document document = new Document();
ByteArrayOutputStream pdfDocumentOutputStream = new ByteArrayOutputStream();
PdfWriter pdfDocumentWriter = PdfWriter.getInstance(document, pdfDocumentOutputStream);
document.open();
if (document.newPage()) {
int indentation = 0;
Image img = Image.getInstance(srcBlob.getBytes(1, (int) srcBlob.length()));
float scaler =
document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin() - indentation;
img.scalePercent((scaler / img.getWidth()) * 100);
document.newPage();
document.add(Image.getInstance(img));
document.close();
//desBlob = new SerialBlob(pdfDocumentOutputStream.toByteArray());
conn = new OracleDriver().defaultConnection();
desBlob = BLOB.createTemporary(conn, false, BLOB.DURATION_SESSION);
desBlob.setBytes(1, pdfDocumentOutputStream.toByteArray());
pdfDocumentWriter.close();
pdfDocumentOutputStream.close();
}
} catch (Exception e) {
Show_Message(e);
}
return desBlob;
}
Я настроил вознаграждение, чтобы получить решение для решения этой проблемы без использования устаревшего класса, и яне смог найти один, хотя я получил внимание на этот вопрос.Это открытая проблема для меня, пока я не найду правильное решение.Спасибо всем, кто приложил усилия.
С уважением!