当前位置: 首页 > 知识库问答 >
问题:

如何使用Apache PDFBox将图像移动到PDF页面的顶部?

双恩
2023-03-14

我正在使用PDFBox以Java生成报告。我的要求之一是创建一个PDF文档,在页面顶部包含公司徽标。我无法找到实现这一目标的方法。

我在Java类中有以下方法:

public void createPdf() {   

        PDDocument document = null;

        PDPage page = null;

        ServletContext servletContext = (ServletContext) FacesContext
                .getCurrentInstance().getExternalContext().getContext();

        try {

            File f = new File("Afiliado_2.pdf");

            if (f.exists() && !f.isDirectory()) {
                document = PDDocument.load(new File("Afiliado_2.pdf"));

                page = document.getPage(0);
            } else {

                document = new PDDocument();

                page = new PDPage();

                document.addPage(page);
            }

            PDImageXObject pdImage = PDImageXObject.createFromFile(
                    servletContext.getRealPath("/resources/images/logo.jpg"),
                    document);

            PDPageContentStream contentStream = new PDPageContentStream(
                    document, page, AppendMode.APPEND, true);


            contentStream.drawImage(pdImage, 0, 0);

            // Make sure that the content stream is closed:
            contentStream.close();

            // Save the results and ensure that the document is properly closed:
            document.save("Afiliado_2.pdf");
            document.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

图像当前出现在PDF的底部。我知道我需要修改的行是contentStream.drawImage(pdImage,0,0);但是我需要指定什么坐标才能出现在页面顶部?

共有1个答案

戈华茂
2023-03-14

PDF中页面的坐标系通常从左下角开始。因此

contentStream.drawImage(pdImage, 0, 0);

此时您正在绘制图像。您可以使用

page.getMediaBox();

并用它来定位您的图像,例如。

PDRectangle mediaBox = page.getMediaBox();

// draw with the starting point 1 inch to the left
// and 2 inch from the top of the page
contentStream.drawImage(pdImage, 72, mediaBox.getHeight() - 2 * 72);

其中PDF文件通常指定72点到1物理英寸。

 类似资料:
  • 我正在用ApachePDFBox编写一个简单的Java应用程序。我有几个PDF,其中最后一页是前几页内容的索引。 我需要的索引(最后一页)成为PDF文件的第一页。 可能吗? 我还发现了http://itextpdf.com/这个库听起来比ApachePDFBox更好,但在这种情况下,我也不知道我是否能做我需要的事情 或者我可以用这个:http://saaspose.com/docs/display

  • 问题内容: 有没有一种方法可以使用JavaScript / jQuery控制浏览器滚动? 当我向下滚动页面一半,然后触发重新加载时,我希望页面进入顶部,但它会尝试找到最后一个滚动位置。所以我这样做: 但是没有运气。 编辑 : 因此,当页面加载后,我打电话给您时,您的两个答案都有效。但是,如果我只是在页面上刷新,则看起来浏览器会在事件发生后计算并滚动到其旧的滚动位置(我也测试了body onload

  • 非常奇怪。例如,假设一个名为“rv”的。 > 如果现在项目10位于当前的下,请调用,回收视图将项目10滚动到底部。 如果现在项目10位于当前的中,请调用,不会进行任何滚动,不会执行任何操作。 如果现在项目10位于当前的顶部,请调用,回收视图将滚动项目10至顶部。 但我需要的是,无论何时调用它,都会将假定的位置滚动到当前视图的顶部,就像案例3一样。怎么做?

  • 我正在尝试使用带有itext5的飞碟来创建一个包含文本以及一些图像的pdf,这些图像占据了页面的整个上半部分,包括边距。使用css的宽度和高度属性,并通过使图像浮动,我可以让图像显示在页面顶部,但它仍然(当然)在页面的边距内。当我试图绕过这一点时,比如说 图像不会移到当前页面的边距中,而是移到上一页。 如何使图像移动到页面边距?

  • 我在onLoad上使用下面的代码进入页面顶部。window.scroll到(0,0)在Javascript中,它适用于浏览器,但不适用于任何移动设备。

  • 我对jQuery移动锚有问题。当我点击带有某个锚的_blank链接时,我会重定向到新选项卡中的新页面并导航到锚链接。但是当页面完全加载时,页面跳转到页面顶部