ITEXT-PDFの画像の座標とページ番号を位置決めする
質問シーン:
itextでPDFを自動的に生成する過程で、PDFのいずれかのページに透かしを入れたいのですが、この透かし画像のページ番号は固定されていないので、そのまま『sealStamperUnder=stamp.getUnderContent(page-1);’を選択します.しかし、この透かしはある固定画像の前のページにあるので、この画像の位置情報を位置決めして、透かし画像のページ番号情報を取得することができます.この方法により、画像の座標情報も得ることができる.
コード#コード#
インポートするjarパッケージ:itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar、itext-asian.jar
後記:この方法は画像の座標とページ情報を取得し、テキストの座標とページ情報を取得したい場合はrenderText()のコメントを削除し、getKeyWords()のパラメータを交換すればよい.
itextでPDFを自動的に生成する過程で、PDFのいずれかのページに透かしを入れたいのですが、この透かし画像のページ番号は固定されていないので、そのまま『sealStamperUnder=stamp.getUnderContent(page-1);’を選択します.しかし、この透かしはある固定画像の前のページにあるので、この画像の位置情報を位置決めして、透かし画像のページ番号情報を取得することができます.この方法により、画像の座標情報も得ることができる.
コード#コード#
インポートするjarパッケージ:itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar、itext-asian.jar
/**
*
* @param filePath PDF
* @param image
* @return List float[0] >> X; float[1] >> Y; float[2] >> page
*/
public List<float[]> getKeyWords(String filePath, final Image image) {
final List<float[]> arrays = new ArrayList<float[]>();
PdfReader pdfReader;
try {
pdfReader = new PdfReader(filePath);
int pageNum = pdfReader.getNumberOfPages();
PdfReaderContentParser pdfReaderContentParser = new PdfReaderContentParser(pdfReader);
for (int i = 1; i <= pageNum; i++) {
final int finalI = i;
pdfReaderContentParser.processContent(i, new RenderListener() {
// PDF , arrays
@Override
public void renderText(TextRenderInfo textRenderInfo) {
/*String text = textRenderInfo.getText(); //
if (null != text && text.contains(key)) {
Rectangle2D.Float boundingRectange = textRenderInfo
.getBaseline().getBoundingRectange();
float[] resu = new float[3];
resu[0] = (float)boundingRectange.getCenterX();
resu[1] = (float)boundingRectange.getCenterY();
resu[2] = finalI;
arrays.add(resu);
}*/
}
// PDF
@Override
public void renderImage(ImageRenderInfo arg0) {
PdfImageObject image0;
try {
image0 = arg0.getImage();
byte[] imageByte = image0.getImageAsBytes();
Image imageInPDF = Image.getInstance(imageByte);
if(image0!=null && imageInPDF.equals(image)){
float[] resu = new float[3];
// 0 => x; 1 => y; 2 => z
//z 1
resu[0] = arg0.getStartPoint().get(0);
resu[1] = arg0.getStartPoint().get(1);
resu[2] = finalI;
arrays.add(resu);
}
} catch (IOException e) {
e.printStackTrace();
} catch (BadElementException e) {
e.printStackTrace();
}
}
@Override
public void endTextBlock() {
}
@Override
public void beginTextBlock() {
}
});
}
pdfReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return arrays;
}
後記:この方法は画像の座標とページ情報を取得し、テキストの座標とページ情報を取得したい場合はrenderText()のコメントを削除し、getKeyWords()のパラメータを交換すればよい.