我編碼創建HTML頁面包括圖像提取PDF文檔中的頁面。如何將pdf中的圖像座標轉換爲JSON文件?
我試圖從PDF中提取圖像,然後我成功地從PDF中提取圖像,並使用PDFBox lib將圖像應用於html頁面。但我沒有在HTML頁面中提取圖像座標。
因此,搜索如何提取pdf中的圖像座標,我嘗試使用PDFBox庫提取pdf中的圖像座標。
下面的代碼:
public static void main(String[] args) throws Exception
{
try
{
PDDocument document = PDDocument.load(
"/Users/tmdtjq/Downloads/PDFTest/test.pdf");
PrintImageLocations printer = new PrintImageLocations();
List allPages = document.getDocumentCatalog().getAllPages();
for(int i=0; i<allPages.size(); i++)
{
PDPage page = (PDPage)allPages.get(i);
int pageNum = i+1;
System.out.println("Processing page: " + pageNum);
printer.processStream(page, page.findResources(),
page.getContents().getStream());
}
}
finally
{
}
}
protected void processOperator(PDFOperator operator, List arguments) throws IOException
{
String operation = operator.getOperation();
if(operation.equals("Do"))
{
COSName objectName = (COSName)arguments.get(0);
Map xobjects = getResources().getXObjects();
PDXObject xobject = xobjects.get(objectName.getName());
if(xobject instanceof PDXObjectImage)
{
try
{
PDXObjectImage image = (PDXObjectImage)xobject;
PDPage page = getCurrentPage();
Matrix ctm = getGraphicsState().getCurrentTransformationMatrix();
double rotationInRadians =(page.findRotation() * Math.PI)/180;
AffineTransform rotation = new AffineTransform();
rotation.setToRotation(rotationInRadians);
AffineTransform rotationInverse = rotation.createInverse();
Matrix rotationInverseMatrix = new Matrix();
rotationInverseMatrix.setFromAffineTransform(rotationInverse);
Matrix rotationMatrix = new Matrix();
rotationMatrix.setFromAffineTransform(rotation);
Matrix unrotatedCTM = ctm.multiply(rotationInverseMatrix);
float xScale = unrotatedCTM.getXScale();
float yScale = unrotatedCTM.getYScale();
float xPosition = unrotatedCTM.getXPosition();
float yPosition = unrotatedCTM.getYPosition();
System.out.println("Found image[" + objectName.getName() + "] " +
"at " + xPosition + "," + yPosition +
" size=" + (xScale/100f*image.getWidth()) + "," + (yScale/100f*image.getHeight()));
}
catch(NoninvertibleTransformException e)
{
throw new WrappedIOException(e);
}
}
}
}
輸出打印X,在圖像y位置是所有0.0,0.0。
我想因爲getGraphicsState()是返回graphicsState的方法。
但我想獲得具體的圖像座標應用於PDF頁面的高度,寬度以創建html頁面。
我想也許這是從PDF圖像座標中提取JSON的解決方案。
請將PDF圖像座標引入JSON工具或建議PDF庫。
(我已經在FlexPaper使用pdf2json工具。這個工具提取JSONfile從PDF頁面,包括沒有圖像數據只是文本數據(內容,座標,字體..)。)
如果所有職位都報告爲(0,0),那是因爲* origin *已被轉換。試試[getCurrentTransformationmatrix()](https://pdfbox.apache.org/apidocs/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.html#getCurrentTransformationMatrix%28%29)。 – usr2564301 2014-08-28 10:10:20