Управление загрузкой внешних ресурсов в книге 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); | |
} |