Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有自定义宽度和高度的PdfBoxRenderer_Java_Pdfbox_Openhtmltopdf - Fatal编程技术网

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

Java 具有自定义宽度和高度的PdfBoxRenderer,java,pdfbox,openhtmltopdf,Java,Pdfbox,Openhtmltopdf,我在我的数据库中将html内容存储为原始字符串,我喜欢以pdf格式打印,但需要自定义大小,例如页面大小为10cm宽,7com高,而不是标准的A4格式 如果可能的话,有人能给我举一些例子吗 ByteArrayOutputStream out = new ByteArrayOutputStream(); PDRectangle rec = new PDRectangle(recWidth, recHeight); PDPage page = new PDPage(rec);

我在我的数据库中将html内容存储为原始字符串,我喜欢以pdf格式打印,但需要自定义大小,例如页面大小为10cm宽,7com高,而不是标准的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());
ByteArrayOutputStream out=newbytearrayoutputstream();
PDRectangle rec=新的PDRectangle(recWidth,recHeight);
PDPage=新的PDPage(rec);
try(PDDocument document=new PDDocument()){
PdfRendererBuilder=新PdfRendererBuilder();
builder.defaultTextDirection(baserenderbuilder.TextDirection.LTR);
字符串htmlContent=“Hello world”+内容;
建筑商。含htmlContent(htmlContent,“”);
文件。添加页(第页);
建造商。使用PDDocument(文件);
PdfBoxRenderer renderer=builder.buildPdfRenderer();
renderer.createPDFWithoutClosing();
文件。保存(输出);
}捕获(例外e){
例如printStackTrace();
}
返回新的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!");
    }
       
try(PDDocument=newpddocument()){
PdfRendererBuilder=新PdfRendererBuilder();
builder.defaultTextDirection(baserenderbuilder.TextDirection.LTR);
builder.useDefaultPageSize(210297,pdfrenderBuilder.PageSizeUnits.MM);
builder.usePdfAConformance(pdfrenderbuilder.PdfAConformance.PDFA_3_A);
字符串htmlContent=“content”;
建筑商。含htmlContent(htmlContent,“”);
建造商。使用PDDocument(文件);
PdfBoxRenderer renderer=builder.buildPdfRenderer();
renderer.createPDFWithoutClosing();
文件。保存(输出);
}捕获(例外e){
log.error(“>>>创建PDF无效!”);
}

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

我以前没有检查此解决方案,但请尝试使用所需的页面大小和文档类型初始化生成器对象,如下所示

    builder.useDefaultPageSize(210, 297, PdfRendererBuilder.PageSizeUnits.MM);
    builder.usePdfAConformance(PdfRendererBuilder.PdfAConformance.PDFA_3_A);
该库包含许多PDF格式,接下来是PdfAConformance枚举,其中包含可能的值


这很有用。您可能知道如何设置边距吗?我想使用自定义大小,如builder.useDefaultPageSize(283198,baseRenderBuilder.PageSizeUnits.INCHES);你认为这可能吗?我意识到大小改变了,但内容没有打印出来。尝试创建一个完整的html结构页面,并附加css规则,将页边空白附加到正文中。请查看本文