We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

Color code variation in PDF output of chart

Hi,

I am using Aspose.Cells v8.5.2.4
On converting Chart 1 to PDF from Rev Model sheet, the code variation at bottom is not as per in source excel.

Code snippt or converting chart to PDF:
private static void chartToPDF() throws Exception {
Workbook workbook = new Workbook(“C:\Aspose Issues\80067\Excel.xlsx”);
WorksheetCollection ws = workbook.getWorksheets();
Chart chart = workbook.getWorksheets().get(0).getCharts().get(“Chart 1”);
ChartShape cshape = chart.getChartObject();
int sheetIndex = ws.add();
com.aspose.cells.Worksheet worksheet = ws.get(sheetIndex);
chart.calculate();
double chartWidthInInches = chart.getChartObject().getWidthInch();
double chartHeightInInches = chart.getChartObject().getHeightInch();
boolean defaultApproach = true;
if (chartWidthInInches > 18 || chartHeightInInches > 5) {
// The approach being followed here is to iterate as many columns as colwidth in pixels & set each column width equal = 1 pixel.
// Similarly for chart height, iterate through as many rows as row height & set each row height = 1 pixel.
// This is being done to fit in large charts that have height & width beyond maximum row/col dimensions & white spaces around
// the chart.

double chartWidthInPixels = chart.getChartObject().getWidth();
double chartHeightInPixels = chart.getChartObject().getHeight();
// Deliberately including one more column because Aspose considers the last column adjacent to chart which leads to white space
// on right of chart
for (int i = 0; i <= chartWidthInPixels; i++) {
worksheet.getCells().setColumnWidthPixel(i, 1);
}

// Deliberately including one more row because Aspose considers the last row adjacent to chart which leads to white space
// below the chart.
for (int i = 0; i <= chartHeightInPixels; i++) {
worksheet.getCells().setRowHeightPixel(i, 1);
}
defaultApproach = false;
} else {
worksheet.getCells().setColumnWidthInch(0, chartWidthInInches);
worksheet.getCells().setRowHeightInch(0, chartHeightInInches);
}

//Setting the name of the newly added worksheet
String transientSheetName = “TransientWorksheet”;
worksheet.setName(transientSheetName);
//Copy the Chart to Second Worksheet
worksheet.getShapes().addCopy(cshape, 0, 0, 0, 0);
//Get the new chart and set its height and width accordingly
com.aspose.cells.Chart chart1 = worksheet.getCharts().get(0);
chart1.getChartObject().setHeightInch(chartHeightInInches);
chart1.getChartObject().setWidthInch(chartWidthInInches);
//Make remaining worksheets invisible so that they are not part of the output pdf
for (int i = 0; i < ws.getCount(); i++) {
String sheetName = ws.get(i).getName();
if(!transientSheetName.equalsIgnoreCase(sheetName)){
ws.get(i).setVisible(false);
}
}
PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
pdfSaveOptions.setOnePagePerSheet(true);
worksheet.getPageSetup().setTopMargin(0);
worksheet.getPageSetup().setBottomMargin(0);
worksheet.getPageSetup().setRightMargin(0);
worksheet.getPageSetup().setLeftMargin(0);
//Setting Print area to first cell only as the chart is contained in the first cell (A1:A1)
if (defaultApproach) {
worksheet.getPageSetup().setPrintArea(“A1:A1”);
}
// Save the workbook
workbook.save(“D:\out.xlsx”);
// workbook.save(“C:\Aspose Issues\80067\out.pdf”, pdfSaveOptions);
}

Attached the sample files.


–Jaspreet

Hi,


Thanks for the template file and sample code.

I could not find the issue. Please see the screen shot here:
http://prntscr.com/8p10y0

When you take the print preview of the chart in Ms Excel manually, it displays the same as per the output rendered chart in the PDF, the legend items are pasted the same way.

Thank you.


Hi,

I have attached a screenshot depicting the problem.

Also, for info I am using Aspose.Cells v8.5.2.4

Thanks,
Jaspreet

Hi,


Please select the chart in the worksheet and then take the print preview of the chart (Page Setup|Print Preview) in MS Excel, you will see it displays the same as per the output rendered chart in the PDF, the legend items are pasted in one line too. Aspose.Cells does render PDF file based on what is shown in Print Preview for the data or objects in the worksheet.

Thank you.