【问题标题】:Itext PDF Shrink issue with hyperlink bounding box is not getting Shrinked超链接边界框的 Itext PDF 收缩问题未收缩
【发布时间】:2018-07-09 08:23:08
【问题描述】:

我正在处理 PDF 缩小然后给它加水印,同样我正在使用 itextpdf-5.5.1.jar。这是我用来缩小 PDF 的代码。在代码中,xPercentage 和 xPercentage 的值为 0.9f。当我缩小具有内容表的 PDF 时,页面上的内容正在正确缩小。当我转到目录时,超链接的边界框放错了位置。我注意到原始和缩小输出文档的边界框大小相同。如何根据内容缩小超链接的边界框?

public  void shrinkPDF(String strFilePath , String strFileName) throws Exception{
PdfReader reader = new PdfReader(strFilePath+"//"+strFileName);
PdfStamper stamper = new PdfStamper(reader, new 
FileOutputStream(strFilePath+"//Shrink_"+strFileName));
int n = reader.getNumberOfPages();
Map mpPDFLayer = stamper.getPdfLayers();
    for (int p = 1; p <= n; p++) {
        float offsetX = (reader.getPageSize(p).getWidth() * (1 - xPercentage)) / 2;
        float offsetY = (reader.getPageSize(p).getHeight() * (1 - yPercentage)) / 2;
        stamper.getUnderContent(p).setLiteral(
                    String.format("\nq %s 0 0 %s %s %s cm\nq\n",
                    xPercentage, yPercentage, offsetX, offsetY));

        stamper.getOverContent(p).setLiteral("\nQ\nQ\n");
    }   
stamper.close();
reader.close();
}

【问题讨论】:

  • 我的回答是否足以回答您的问题?如果没有,你为什么不要求澄清或更多细节。否则,你为什么不接受答案?
  • 抱歉,stackoverflow 的新手。谢谢提醒。我正在研究注释以解决此问题。但是,我遇到了与相同代码的方向相关的另一个问题。我为此提出了另一个问题。

标签: java hyperlink itext pdf-generation bounding-box


【解决方案1】:

您的代码仅缩小内容,但不会相应地移动和缩小注释。所以你还需要做的是遍历每个页面的注释并缩小它们。

这尤其意味着您必须缩小和移动 Rect 注释矩形。但是,根据相应注释的性质,它们中还有其他坐标值,例如QuadPoints(如果是链接)或线的 L 端点坐标。


顺便说一句,您的内容收缩代码对用户空间坐标系的原点进行了假设;它似乎假设原点位于裁剪框的左下方,并且裁剪框和媒体框重合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多