Java 具有自定义宽度和高度的PdfBoxRenderer
我在我的数据库中将html内容存储为原始字符串,我喜欢以pdf格式打印,但需要自定义大小,例如页面大小为10cm宽,7com高,而不是标准的A4格式 如果可能的话,有人能给我举一些例子吗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);
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规则,将页边空白附加到正文中。请查看本文