我在这个论坛上找到了一些很好的解决方案,如何使用pdfbox从pdf文档中提取图像。我使用了我在一篇帖子中发现的以下代码:
PDPageTree list = document.getPages();
for (PDPage page : list) {
PDResources pdResources = page.getResources();
for (COSName c : pdResources.getXObjectNames()) {
try {
PDXObject imageObj = pdResources.getXObject(c);
if (imageObj instanceof PDImageXObject) {
// same image to list
BufferedImage bImage = ((PDImageXObject) imageObj).getImage();
acceptedImages.add(bImage);
}
} catch (MissingImageReaderException mex) {
log.warn("Missing Image Reader for format: ", mex);
}
}
}
但我有一个问题,在极少数情况下,一些提取的图像有一个错误的方向。当我看pdf文档时,图片显示正确。但是有些提取的图像被旋转了nx90° 度。我猜旋转信息存储在pdf的某个地方?
1条答案
按热度按时间2ekbmq321#
运行
PrintImageLocations.java
示例从源代码下载(或此处)并分析ctm(“当前变换矩阵”)来提取旋转Math.round(Math.toDegrees(Math.atan2(ctmNew.getShearY(), ctmNew.getScaleY())))
.