具有自定义宽度和高度的 PdfBoxRenderer

问题描述

我在我的数据库中将 html 内容存储为原始字符串,我喜欢以 pdf 格式打印它,但使用自定义大小,例如页面大小为 10 厘米宽和 7 厘米高,而不是标准的 A4 格式。>

如果可能的话,谁能给我一些例子。

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    PDRectangle rec = new PDRectangle(recWidth,recHeight);
    PDPage page = new PDPage(rec);

    try (PDDocument document = new PDDocument()) {
        PdfRendererBuilder builder = new PdfRendererBuilder();
        builder.defaultTextDirection(BaseRendererBuilder.TextDirection.LTR);
        String htmlContent = "<b>Hello world</b>" + content; 
        builder.withHtmlContent(htmlContent,"");

        document.addPage(page);
        builder.usePDDocument(document);
        PdfBoxRenderer renderer = builder.buildPdfRenderer();
        renderer.createPDFWithoutClosing();

        document.save(out);
    } catch (Exception e) {
      ex.printstacktrace();
    }
    return new ByteArrayInputStream(out.toByteArray());

这段代码为我生成了 2 个文件一个文件一个 A4。

更新:

我试过这个:

  try (PDDocument document = new PDDocument()) {
        PdfRendererBuilder builder = new PdfRendererBuilder();
        builder.defaultTextDirection(BaseRendererBuilder.TextDirection.LTR);
        builder.useDefaultPageSize(210,297,PdfRendererBuilder.PageSizeUnits.MM);
        builder.usePdfAConformance(PdfRendererBuilder.PdfAConformance.PDFA_3_A);
        String htmlContent = "<b>content</b>";
        builder.withHtmlContent(htmlContent,"");
        builder.usePDDocument(document);
        PdfBoxRenderer renderer = builder.buildPdfRenderer();
        renderer.createPDFWithoutClosing();
        document.save(out);
    } catch (Exception e) {
        log.error(">>> The creation of PDF is invalid!");
    }
       

在这种情况下内容不显示,如果我删除useDefaultPageSize,内容显示

解决方法

我之前没有检查过这个解决方案,但尝试使用您想要的页面大小和文档类型初始化构建器对象,如下所示

    builder.useDefaultPageSize(210,297,PdfRendererBuilder.PageSizeUnits.MM);
    builder.usePdfAConformance(PdfRendererBuilder.PdfAConformance.PDFA_3_A);

lib 包含许多 PDF 格式,接下来是带有可能值的 PdfAConformance Enum

PdfAConformance Enum

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...