Управление загрузкой внешних ресурсов в книге MS Excel при рендеринге на PDF

Возможные сценарии использования

Ваш файл Excel может содержать внешние ресурсы, например связанные изображения или объекты. Когда вы конвертируете свой файл Excel в PDF, Aspose.Cells извлекает эти внешние ресурсы и отображает их в PDF. Но иногда вы не хотите загружать эти внешние ресурсы и более того, вы хотите манипулировать ими. Вы можете сделать это, используяPdfSaveOptions.StreamProviderкоторый реализуетIStreamProviderинтерфейс.

Управление загрузкой внешних ресурсов в книге MS Excel при рендеринге на PDF

В следующем примере кода объясняется, как использоватьPdfSaveOptions.StreamProviderконтролировать загрузку внешних ресурсов и манипулировать ими. Пожалуйста, проверьтеобразец файла Excelиспользуется внутри кода ивывод PDFгенерируется кодом.Скриншотпоказывает, какстарый внешний образв образце файла Excel был заменен нановое изображениена выходе PDF.

дело:изображение_альтернативный_текст

Образец кода

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// Implement IStreamProvider
class MyStreamProvider implements IStreamProvider {
public void closeStream(StreamProviderOptions options) throws Exception {
System.out.println("-----Close Stream-----");
}
public void initStream(StreamProviderOptions options) throws Exception {
System.out.println("-----Init Stream-----");
// Read the new image in a memory stream and assign it to Stream property
File imgFile = new File( srcDir + "newPdfSaveOptions_StreamProvider.png");
byte[] bts = new byte[(int) imgFile.length()];
FileInputStream fin = new FileInputStream(imgFile);
fin.read(bts);
fin.close();
ByteArrayOutputStream baout = new ByteArrayOutputStream();
baout.write(bts);
baout.close();
options.setStream(baout);
}
}//MyStreamProvider
// ------------------------------------------------
// ------------------------------------------------
void Run() throws Exception {
// Load source Excel file containing external image
Workbook wb = new Workbook(srcDir + "samplePdfSaveOptions_StreamProvider.xlsx");
// Specify Pdf Save Options - Stream Provider
PdfSaveOptions opts = new PdfSaveOptions();
opts.setOnePagePerSheet(true);
opts.setStreamProvider(new MyStreamProvider());
// Save the workbook to Pdf
wb.save(outDir + "outputPdfSaveOptions_StreamProvider.pdf", opts);
}