PDFを画像としてレンダリングし、そこに含まれるすべての画像の罫線を描画します。このためには、ページ上のイメージの正しい寸法が必要です。pdfboxでPDFの正しい(回転した)画像寸法を取得
public class PrintImageLocations extends PDFStreamEngine
{
@Override
protected void processOperator(Operator operator, List<COSBase> operands) throws IOException
{
String operation = operator.getName();
if("Do".equals(operation))
{
COSName objectName = (COSName) operands.get(0);
PDXObject xobject = getResources().getXObject(objectName);
if(xobject instanceof PDImageXObject)
{
PDImageXObject image = (PDImageXObject)xobject;
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
System.out.println("Found image " + objectName.getName());
Matrix ctmNew = getGraphicsState().getCurrentTransformationMatrix();
float imageXScale = ctmNew.getScalingFactorX();
float imageYScale = ctmNew.getScalingFactorY();
// position in user space units. 1 unit = 1/72 inch at 72 dpi
System.out.println("position in PDF = " + ctmNew.getTranslateX() + ", " + ctmNew.getTranslateY() + " in user space units");
}
else if(xobject instanceof PDFormXObject)
{
PDFormXObject form = (PDFormXObject)xobject;
showForm(form);
}
}
else
{
super.processOperator(operator, operands);
}
}
}
出力例:PDFで位置= 535.68、ユーザ空間単位で97.79052残念ながら
は私が持っている、これは次のコードで作業している
ページが回転しているときの問題。 "getCurrentPage()。getRotation()"に90を返すpdfがたくさんあります。 90度の場合、正しい位置を取得するためにgetTranslateXとgetTranslateYの値を切り替える必要がありますが、これは特別に90度でしか動作しません。私は位置を回転させるために使用できるクールなマトリックス情報がありますか?
私はthisコードで、この回転の問題を解決しようとしましたが、第1回はどのような変換が行われているのか分かりません。
1.(私は問題は、コンピュータの前に座っていたと思います)残念ながら、それは動作しませんでした...私はいくつかの数学で作業をすることができGTと思いました誰かが私の問題を理解してくれたことを嬉しく思う^^ – FlavorFlav
2.感謝!!!これは動作します...私は背後にある数学を理解していませんが、 "負の値" - 修正はまさに私が探していたものです...すべての回転角度のために働いているようです。 – FlavorFlav
@FlavorFlavそれはあなたのためにうれしい!これがあなたの問題を解決するなら、upvoteし、私の答えを受け入れることを確認してください – Travis