Skip to content
ComPDF

最佳实践

资源管理

java
  CDocument document = new CDocument();
  CBorder border = new CBorder(1f);
  CBorderRadius radius = new CBorderRadius(5f)
  // 使用这些资源
  document.saveToFile("output.pdf");

样式复用

java
// 创建可重用的样式
CStyle bodyTextStyle = document.createStyle();
bodyTextStyle
    .setFontSize(12)
    .setFontFamily("Arial");

bodyTextStyle.setMarginBottom(10);

CStyle headingStyle = document.createStyle();
headingStyle
    .setFontSize(18)
    .setFontWeight(CFontWeight.BOLD);

headingStyle.setMarginTop(15)
    .setMarginBottom(10);

// 应用到多个元素
paragraph1.addStyle(bodyTextStyle);
paragraph2.addStyle(bodyTextStyle);
heading1.addStyle(headingStyle);
heading2.addStyle(headingStyle);

性能优化

java
// 1. 批量创建元素时,考虑预先创建样式
CStyle itemStyle = document.createStyle();
itemStyle.setFontSize(12);
itemStyle.setMarginBottom(5);

for (int i = 0; i < 1000; i++) {
  CText text = div.createTextElement("Item " + i);
  text.addStyle(itemStyle); // 复用样式而不是每次设置
}

//2. 使用流输出而不是先写入内存
try (FileOutputStream fos = new FileOutputStream("large.pdf")) {
  document.saveToFile(fos);
} catch (IOException e) {
  e.printStackTrace();
}

错误处理

java
try {
    	CDocument document = new CDocument();
        CPage page = document.createPage(595, 842);
        
        // 验证图片路径
        String imagePath = "path/to/image.png";
        File imageFile = new File(imagePath);
        if (imageFile.exists()) {
            CImage image = page.createDivElement().createImageElement(imagePath);
        } else {
            System.out.println("图片文件不存在: " + imagePath);
        }
        
        document.saveToFile("output.pdf");
    
} catch (Exception ex) {
    System.out.println("生成 PDF 时出错: " + ex.getMessage());
    ex.printStackTrace();
}