小编Bri*_*ian的帖子

在PDFBox中,如何更改PDRectangle对象的原点(0,0)?

情况:
在PDFBox中,PDRectangle对象的默认原点(0,0)似乎是页面的左下角.

例如,以下代码在页面的左下角为您提供了一个正方形,每边长度为100个单位.

PDRectangle rectangle = new PDRectangle(0, 0, 100, 100);
Run Code Online (Sandbox Code Playgroud)

问题:
是否可以将原点更改为UPPER-LEFT转角,例如,上面的代码会在页面的左上角为您提供相同的方块?

我问的原因
:我使用PDFTextStripper来获取文本的坐标(通过使用提取的TextPosition对象的getX()和getY()方法).从TextPosition对象检索的坐标似乎在UPPER-LEFT CORNER处具有原点(0,0).我希望我的PDRectangle对象的坐标与我的TextPosition对象的坐标具有相同的原点.

我试图通过"页面高度减去Y坐标"来调整PDRectangle的Y坐标.这给了我想要的结果,但它并不优雅.我想要一个优雅的解决方案

注意:有人问过类似的问题.答案就是我尝试过的,这不是最优雅的. 如何从左下角到左上角更改pdf页面中文本的坐标

java pdf pdfbox

7
推荐指数
2
解决办法
7322
查看次数

在PDFBox中,为什么保存后文件大小变得过大?

我正在使用PDFBox 1.8.8处理现有的PDF文件。保存文档后,输出文件将比原始文件大几倍。这是不希望的。

如何减小输出文件的文件大小?

如何复制我的情况

在下面的代码中,PDFBox只是加载现有的PDF,然后将其保存。什么都没做。但是,文件大小仍然会变大几倍。

以下是两个示例输入文件的链接。对于input1.pdf,文件大小从6MB增加到50MB。对于input2.pdf,文件大小从0.4MB增加到1.3MB。

https://dl.dropboxusercontent.com/u/13566649/samplePDF/input1.pdf https://dl.dropboxusercontent.com/u/13566649/samplePDF/input2.pdf

import java.io.*;
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.exceptions.*;


class Test {

    public static void main(String[] args) throws IOException, COSVisitorException {

        PDDocument document = PDDocument.load("input1.pdf");
        document.save("output.pdf");
        document.close();       
    }
}   
Run Code Online (Sandbox Code Playgroud)

我尝试过的

我尝试使用类的addCompression()方法PDStream,如以下代码所示。它不会改变任何东西。输出文件大小仍然相同。

class Test2 {

    public static void main(String[] args) throws IOException, COSVisitorException {

        PDDocument document = PDDocument.load("input1.pdf");

        for (int i = 0; i < document.getNumberOfPages(); i++) {
            PDPage page = (PDPage) document.getDocumentCatalog().getAllPages().get(i);
            page.getContents().addCompression();
        }

        document.save("output.pdf");
        document.close();    

    }

}   
Run Code Online (Sandbox Code Playgroud)

java pdf pdfbox

5
推荐指数
1
解决办法
2889
查看次数

标签 统计

java ×2

pdf ×2

pdfbox ×2