简体   繁体   中英

PdfBoxRenderer with custom width and height

I am having html content store as a raw string in my database and I like to print it in pdf, but with custom size, for example page size to be 10cm width and 7 com height, not standard A4 format.

Can someone gives me some examples if it is possible.

    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());

This code generates for me 2 files, one small and one A4.

UPDATE:

I tried this one:

  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!");
    }
       

But in this case content is not shown, if I remove useDefaultPageSize, content will be shown

I didn't check this solution before, but try initialise the builder object with your desired page size and document type like below

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

the lib include many PDF format next is PdfAConformance Enum with possible values

PdfAConformance Enum

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM