问题描述
我在我的数据库中将 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());
更新:
我试过这个:
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