Controlar la carga de recursos externos en el libro de Excel de MS al renderizar a PDF
Escenarios de uso posibles
Su archivo de Excel puede contener recursos externos como imágenes u objetos vinculados. Cuando convierte su archivo de Excel a PDF, Aspose.Cells recupera estos recursos externos y los renderiza a PDF. Pero a veces, no desea cargar estos recursos externos y, además, desea manipularlos. Puede hacerlo usando WorkbookSettings.StreamProvider que implementa la interfaz IStreamProvider.
Controlar la carga de recursos externos en el libro de Excel de MS al renderizar a PDF
El siguiente código de muestra explica cómo hacer uso de WorkbookSettings.StreamProvider para controlar la carga de recursos externos y manipularlos. Por favor revise el archivo de Excel de muestra usado en el código y el PDF generado por el código. La captura de pantalla muestra cómo la imagen externa antigua en el archivo de Excel de muestra fue reemplazada por una nueva imagen en el PDF generado.
Código de muestra
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
//Implement IStreamProvider | |
class MyStreamProvider : IStreamProvider | |
{ | |
public void CloseStream(StreamProviderOptions options) | |
{ | |
System.Diagnostics.Debug.WriteLine("-----Close Stream-----"); | |
} | |
public void InitStream(StreamProviderOptions options) | |
{ | |
string sourceDir = RunExamples.Get_SourceDirectory(); | |
System.Diagnostics.Debug.WriteLine("-----Init Stream-----"); | |
//Read the new image in a memory stream and assign it to Stream property | |
byte[] bts = File.ReadAllBytes(sourceDir + "newPdfSaveOptions_StreamProvider.png"); | |
MemoryStream ms = new MemoryStream(bts); | |
options.Stream = ms; | |
} | |
} | |
public static void Run() | |
{ | |
//Source directory | |
string sourceDir = RunExamples.Get_SourceDirectory(); | |
//Output directory | |
string outputDir = RunExamples.Get_OutputDirectory(); | |
//Load source Excel file containing external image | |
Workbook wb = new Workbook(sourceDir + "samplePdfSaveOptions_StreamProvider.xlsx"); | |
//Specify Pdf Save Options - Stream Provider | |
PdfSaveOptions opts = new PdfSaveOptions(); | |
opts.OnePagePerSheet = true; | |
wb.Settings.ResourceProvider = new MyStreamProvider(); | |
//Save the workbook to Pdf | |
wb.Save(outputDir + "outputPdfSaveOptions_StreamProvider.pdf", opts); | |
Console.WriteLine("ControlLoadingOfExternalResourcesInExcelToPDF executed successfully.\r\n"); | |
} |