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

XObject窗体边界框的y,x坐标错误-PDFBOX

通京
2023-03-14

我正在使用PdfBox读取pdf中的Xobjects,Xobjects是类型形式,我注意到左下y和右上y的值是错误的,Illustrator/pdf查看器显示了正确的呈现

这是我的代码,用来找到y坐标

    PDDocument document = PDDocument.load(new File("D:/temp/temp.pdf"));
    PDResources pdResources = document.getPage(0).getResources();
    Iterable<COSName> cosNames = pdResources.getXObjectNames();
    for (COSName cosname : cosNames) {
    PDXObject xobject = pdResources.getXObject(cosname);
    COSStream stream = xobject.getCOSObject();
    PDFormXObject pdxObjectForm = new PDFormXObject(stream);
    System.out.println(pdxObjectForm.getBBox().getLowerLeftY());
    System.out.println(pdxObjectForm.getBBox().getUpperRightY());
}
    document.close();
    // TODO: handle exception
 }  

您可以在此查看pdf链接:https://www.justbeamit.com/zxime

共有1个答案

顾炎彬
2023-03-14

bbox本身并不告诉xobject表单要呈现在何处:这些边界将用于剪辑xobject表单并确定其大小以进行缓存。显示位置取决于ctm(=当前转换矩阵):每次do运算符绘制表单XObject时,该矩阵应与当前转换矩阵连接,以定义表单空间到设备空间的映射。

从源代码下载或存储库中获取PrintImageLocations.java示例。

您会发现以下片段:

else if(xobject instanceof PDFormXObject)
{
    PDFormXObject form = (PDFormXObject)xobject;
    showForm(form);
}
else if(xobject instanceof PDFormXObject)
{
    PDFormXObject form = (PDFormXObject)xobject;

    PDRectangle bbox = form.getBBox();
    Matrix ctm = getGraphicsState().getCurrentTransformationMatrix().clone();
    ctm.concatenate(form.getMatrix());
    System.out.println("Found form [" + objectName.getName() + "]");
    System.out.println("bbox: " + bbox);
    Rectangle2D transformedBBox = bbox.transform(ctm).getBounds2D();
    System.out.println("bbox transformed: " + transformedBBox);

    showForm(form);
}

(我们在场外进行了一些讨论。我也被问及其他形状;这些是矢量图形。这个答案显示了如何获得它们)

 类似资料:
  • 所以我有一个java JFrame,我把画布放进去,它出现在错误的坐标上,好像它把0,0作为左下角,而不是左上角。这是我的密码。 为什么不使用常规窗口坐标(如0,0为左上角)?

  • 我有一个堆叠的条形图。我想画一条线,就像对堆叠的条形图的几个条形进行分组一样。 一些人请帮助绘制这些线使用D3。 JS:

  • 想象一个笛卡尔平面,每个细胞对象代表平面中的一个点(该平面将是迷宫)。在构建迷宫时,我想弄清楚一个单元格对象是一个顶点(四个角点)还是一个边界点(任何在迷宫边缘的单元格,顶点也是边界点)。 我需要知道,以便我可以添加相邻单元格作为特定单元格的邻居(我正在创建一个带有节点的图结构)。不同的边框对什么单元格是邻居有不同的要求(例如,右上的顶点不能有y+1或x+1的邻居,因为它在迷宫之外,而左下的顶点不

  • 我一直在努力寻找解决这个问题--所以我真的必须寻求帮助。 我创建了一个基于CSS的游戏地图,它以六边形瓷砖的形状覆盖了div(就像桌面游戏一样)。我正在尝试查找哪些瓷砖与当前活动瓷砖相邻。 有什么建议吗?

  • 在前面的一些章节中,我们介绍了诸多用于图像分类的模型。在图像分类任务里,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别。然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置。在计算机视觉里,我们将这类任务称为目标检测(object detection)或物体检测。 目标检测在多个领域中被广泛使用。例如,在无人驾驶里,我们需要通过识别拍摄到