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

如何调整现有的pdf页面大小

昝宜
2023-03-14
问题内容

在应用程序中,用户可以上传尺寸为8.46“ x 10.97”的任何pdf文件。根据我们的应用程序尺寸应为8.5“ x
11”。问题是,如何重新调整现有pdf页面的大小以设置8.5“ x11”?我必须通过代码修复,而不是手动,赞扬线路或外部软件。请让我知道提供此功能的Java支持jar(免费版)或通过简单的Java修复也可以。


问题答案:

使用iText,您可以执行以下操作:

float width = 8.5f * 72;
float height = 11f * 72;
float tolerance = 1f;

PdfReader reader = new PdfReader("source.pdf");

for (int i = 1; i <= reader.getNumberOfPages(); i++)
{
    Rectangle cropBox = reader.getCropBox(i);
    float widthToAdd = width - cropBox.getWidth();
    float heightToAdd = height - cropBox.getHeight();
    if (Math.abs(widthToAdd) > tolerance || Math.abs(heightToAdd) > tolerance)
    {
        float[] newBoxValues = new float[] { 
            cropBox.getLeft() - widthToAdd / 2,
            cropBox.getBottom() - heightToAdd / 2,
            cropBox.getRight() + widthToAdd / 2,
            cropBox.getTop() + heightToAdd / 2
        };
        PdfArray newBox = new PdfArray(newBoxValues);

        PdfDictionary pageDict = reader.getPageN(i);
        pageDict.put(PdfName.CROPBOX, newBox);
        pageDict.put(PdfName.MEDIABOX, newBox);
    }
}

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("target.pdf"));
stamper.close();

我介绍了公差是因为您可能不想更改尺寸仅很小的页面。

此外,即使几乎不使用该页面,您也可能希望将其 计入 页面的 UserUnit 值。

任何通用的PDF库都可能允许这样的事情,方法是提供一种明确的调整大小的方法,或者允许此处使用的直接访问。

关于您的需求 免费版本, 您用无注释的 方式 澄清 表示无需购买 ;只要遵守AGPL,就可以使用iText而不购买任何许可证。



 类似资料:
  • 问题内容: 我正在生成一个文档,就像下面的代码一样,当然,表的内容是变化的。我需要做的是确保无论单元格中的内容量如何,该表的大小都不会超过一页。有办法吗? 编辑:@Bruno Lowagie。模板中包裹着图像的提示听起来很合适,我根据更改了代码,但是现在得到的只是一个空的PDF。我是在做错什么,还是这是完全错误的方法? 问题答案: 如果要使表格适合页面,则应在考虑页面大小之前创建表格,并像Tabl

  • 我正在生成一个文档,如下面的代码所示,当然表的内容除外,它是变化的。我需要做的是确保这个表格的大小永远不会超过一页,而不管单元格中的内容数量如何。有办法做到吗?

  • 问题内容: 我需要将pdf中的每个页面的大小从字母调整为合法大小。这是我到目前为止所得到的 即使调整大小正确,输出的pdf也只包含1页。有什么帮助吗? 问题答案: 这就是答案。我需要循环,请阅读我的原始问题的评论以获取更多信息

  • 我设置了一个具有3个分片的SolrCloud结构。每个分片由2个节点组成。一个是Leader,另一个是副本。每个solr实例(作为节点)都在单独的机器中运行。现在我需要随着数据量的增加添加更多机器。但是如果我在不创建新分片的情况下添加新节点,它只会增加更多分片的副本。我想使用新机器创建更多分片,并且数据应该分布在分片之间。 出于测试目的,我创建了一个带有一个shard(2个节点)的SolrClou

  • 问题内容: 如何调整JTextField的大小? 问题答案: 如果看一下Javadoc,您会看到JTextField是从Component派生的,并且具有setSize()方法。如果您没有布局管理器,那就很有用。 如果你 这样做 有一个布局管理器,则有必要对setPreferredSize() / / 是要走的路。