簡體   English   中英

PDFBox renderImage 在指定比例下產生不正確的圖像尺寸

[英]PDFBox renderImage produces incorrect image dimensions at specified scale

我正在使用非常有用的 PDFBox 構建一個簡單的 pdf 沖壓 GUI。

但是,我注意到特定文檔存在嚴重問題。

當我為渲染指定特定比例因子時,預期的 output 圖像大小是不同的。

更糟糕的是什么? 用於生成的圖像沿水平軸的縮放因子與沿垂直軸的縮放因子不同。

這是我使用的代碼:

/**
 * @param pdfPath The path to the pdf document
 * @param page The pdf page number(is zero based)
 */
public BufferedImage loadPdfImage(String pdfPath, int page) {
    File file = new File(pdfPath);

    try (PDDocument doc = PDDocument.load(file)) {

        pageCount = doc.getNumberOfPages();
        PDPage pDPage = doc.getPage(page);

       float w = pDPage.getCropBox().getWidth();
       float h = pDPage.getCropBox().getHeight();

       System.out.println("Pdf opening: width: "+w+", height: "+h);


        PDFRenderer renderer = new PDFRenderer(doc);

        float dpiRatio =  1.5f;

        BufferedImage img = renderer.renderImage(page, dpiRatio);

 float dpiXRatio = img.getWidth() / w;
 float dpiYRatio = img.getHeight()/ h;


       System.out.println("dpiXRatio: "+dpiXRatio+", dpiYRatio: "+dpiYRatio);

        return img;
    } catch (IOException ex) {
        System.out.println( "invalid pdf found. Please check");
    }

    return null;
}

上面的代碼加載了我嘗試過的大多數 pdf 文檔,並將其中的給定頁面轉換為 BufferedImage 對象。

然而,對於上述文檔,它似乎無法以提供的比例因子渲染轉換后的圖像。

我的代碼有什么問題嗎? 或者它是一個已知的錯誤?

謝謝。

編輯

我正在使用 PDFBOX v2.0.15

並且頁面沒有旋轉。

錯誤是我的; 在大多數情況下。

我曾使用 MediaBox 來計算比例因子,不幸的是,所討論的 pdf 文件的 MediaBox 和 CropBox 並不相同。

例如:

cropbox-rect: [8.50394,34.0157,586.496,807.984]
mediabox-rect: [0.0,0.0,595.0,842.0]

在對這些進行更正后,比例因子沿兩個軸匹配得更好,除了由於圖像尺寸是 integer 數字而導致的錯誤。

不過,這對我來說可以忽略不計。

沖壓時,我所要做的就是對裁剪框進行必要的修正。 例如,要在P(x,y)處繪制圖像(郵票),我會這樣做:

        x += cropBox.getLowerLeftX();
        y += cropBox.getLowerLeftY();

在調用繪制圖像功能之前。

結果一切都很好!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM