Excel转换PDF时,页眉文字设置了字体倾斜,不生效

订单.xlsx【副本】.xlsx.zip (16.4 KB)

PdfSaveOptions opts = new PdfSaveOptions();
Worksheet worksheet = wb.getWorksheets().get(0);
PageSetup pageSetup = worksheet.getPageSetup();
pageSetup.setTopMargin(1);
pageSetup.setLeftMargin(1);
pageSetup.setRightMargin(1);
opts.setOutputBlankPageWhenNothingToPrint(false);
opts.setAllColumnsInOnePagePerSheet(true);
opts.setCalculateFormula(true);
wb.save(output, opts);

@SeanXie

在将 Excel 导出为 PDF 时,可以尝试使用 PageSetup.SetHeader 并在其中加入 Excel 的格式化代码来指定斜体字体。示例代码如下(参考 [5]):

// workbook 已经加载
Worksheet sheet = wb.getWorksheets().get(0);
PageSetup pageSetup = sheet.getPageSetup();

// ① 设置页眉内容(左/中/右),使用 &"FontName,Italic" 指定斜体
//    这里以左侧页眉为例,使用 Arial 斜体
pageSetup.setHeader(0, "&\"Arial,Italic\"&L订单号:12345");

// ② 其它 PageSetup 参数(如页边距)保持不变
pageSetup.setTopMargin(1);
pageSetup.setLeftMargin(1);
pageSetup.setRightMargin(1);

// ③ PDF 保存选项
PdfSaveOptions opts = new PdfSaveOptions();
opts.setOutputBlankPageWhenNothingToPrint(false);
opts.setAllColumnsInOnePagePerSheet(true);
opts.setCalculateFormula(true);

// ④ 保存为 PDF
wb.save(outputPath, opts);

关键说明

  1. 格式化代码 &"FontName,Italic" 用于在页眉/页脚中使用指定字体并启用斜体。
  2. &L&C&R 分别代表左、中、右三段内容,可按需选择。
  3. 使用 SetHeader(或 SetFooter)时加入上述代码后,PDF 中的页眉文字有可能以斜体显示,前提是所使用的字体已在系统中安装。

如果仍未看到斜体,请检查:

  • 所使用的字体(如 ArialTimes New Roman 等)是否已在系统中安装。
  • setHeader 的第一个参数(0‑左、1‑中、2‑右)是否对应了实际想要显示的区域。

按照上述方式设置后,页眉文字的倾斜样式应能在导出的 PDF 中得到体现。如有其他异常,请继续在本帖反馈。

@SeanXie
通过研究样例文件,我们发现原始样例文件里并没有设置页眉文字倾斜,请查看附件里的Excel打印预览图片1.png。在我们修改了页眉文字倾斜并进行打印预览,在Excel打印预览里可以看到文字倾斜效果,请查看附件里的图片2.png。通过使用以下样例代码在最新版本v25.12上进行测试,我们可以得到正确的结果。请查看附件。result.zip (311.6 KB)

Workbook wb = new Workbook(filePath + "订单.xlsx【副本】-modify.xlsx");
PdfSaveOptions opts = new PdfSaveOptions();
Worksheet worksheet = wb.getWorksheets().get(0);
PageSetup pageSetup = worksheet.getPageSetup();
//		pageSetup.setTopMargin(1);
//		pageSetup.setLeftMargin(1);
//		pageSetup.setRightMargin(1);
opts.setOutputBlankPageWhenNothingToPrint(false);
opts.setAllColumnsInOnePagePerSheet(true);
opts.setCalculateFormula(true);
wb.save(filePath + "out_java_modify.pdf", opts);