当前位置: 首页 > 面试题库 >

如何在iText中放置PDFGraphis2D对象?

终波涛
2023-03-14
问题内容

我正在创建一个PDF,并在其中的某个位置添加一个JPanel。

使用PdfContentBytePdfGraphics2D我可以将其添加到文档中,但是:

  • 我如何定位它使其位于左边距而不是页面左侧?
  • 如何防止其显示在其他元素之上?
  • 换句话说:如何将其放在段落中?

代码片段:

// multiple Paragraphs
// ...
JPanel myPanel = ...

PdfContentByte canvas = writer.getDirectContent();
int origWidth = myPanel.getWidth();
int origHeight = myPanel.getHeight();
float width = document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin();
double scale = width / origWidth;
Graphics2D g2 = new PdfGraphics2D(canvas, origWidth, origHeight);
g2.scale(scale, scale);
myPanel.paint(g2);
g2.dispose();

// even more Paragraphs
//...

问题答案:

我通过使用a PdfTemplateImage从中创建一个使其工作。

PdfContentByte canvas = writer.getDirectContent();
int origWidth = myPanel.getWidth();
int origHeight = myPanel.getHeight();
PdfTemplate template = canvas.createTemplate(origWidth, origHeight);
Graphics2D g2 = new PdfGraphics2D(template, origWidth, origHeight);
myPanel.paint(g2);
g2.dispose();
Image image = Image.getInstance(template);
float width = document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin();
image.scaleToFit(width, 1000);
document.add(image)


 类似资料:
  • 问题内容: 我在另一个实现Parcelable的场所对象中有一个Location对象。我该如何在我的writeToParcel方法实现中正确序列化它?所以这是一些代码: 问题答案: 在这里,您有一个片段如何将可分割对象序列化为您自己的包裹。

  • 问题内容: 如何将提示/占位符放在asp:TextBox中?当我说一个提示时,是指一些文本,当用户单击该文本时,这些文本就会消失。有没有办法使用html / css实现相同的目的? 问题答案: 该属性 您正在寻找属性。像在ASP.net控件内的任何其他属性一样使用它: 不要担心您的IDE(即Visual Studio),也许 不知道 该属性。未通过ASP.net注册的属性将通过并按原样呈现。因此,

  • 如何将三元条件放入JS对象文字中? 下面是正在工作的JS对象,但我的目标是让它“更智能” 对象必须是键/值对,因为我使用的是传单库。

  • 我在NestedScrollView中有一个RecyclerView。当recyclerView适配器列表较小时,它工作正常。但当列表太大时,它会使我的应用程序崩溃(或造成更多延迟)。我该怎么修呢。代码如下。 XML: 爪哇:

  • 我正在使用iText7和convertToPdf()方法将html转换为pdf。PDF生成正确,但横向模式不工作。 有人能告诉我如何获得风景模式吗?

  • 问题内容: 我们正在使用iText从Java代码生成PDF文件,该文件在大多数情况下效果很好。几天前,我们开始生成PDF / A,而不是需要嵌入所有字体的普通PDF文件。iText 主要是自定义类和其他类的构建,在这些类中我们直接控制字体。所有使用的字体都是通过通过以下代码加载的TTF文件创建的- 效果很好: 现在,我们在使用HTML代码生成的PDF中使用一种特定的内容类型。我们使用来处理该部分。