だから私はこの状況にあります:
pdftoxml.exe
sourceforge.netから使用して、テキストトークンとその座標を取得しました。pdfファイルが回転した場合(つまり/Rotate 90
、ソースに書き込まれている場合)、pdftoxml.exeは、指定されたページの高さと幅、および指定されたオブジェクトのx座標とy座標を交換します。それが私が理解していることです。
re
太い線を描いていたPDFファイルに出くわすまでは満足していました。つまり、太い線の場合は、この図のように4本の細い線が引かれ、スペースが埋められます。左側には、大きな長方形の一部である2本の細い線(色なし)が表示されます(大きく拡大されています)。私は実際に黒で満たされたその間のスペースを空にして、線を確認しました。
さらに、上記のpdfが回転します。したがってB
、最終的に直立させるために、このtextmatrixが使用され0 1 -1 0 90.72 28.3705 Tm
ました。細い線はこのように描かれて83.04 27.891 0.48 0.48 re
います(座標はここでは異なる場合がありますが、それはそのような再操作でした。操作は次のようx y width height re
になり、 adobeのpdf 1.7ページ133のre
長方形用です)。ここで関連するのは、浮動小数点の問題のために丸められたり変更されたりしない計算です。これは行のxの正確な値であり、残念ながら、ハードコードされた'sxよりも大きくなります。27.891 + 0.48 = 28.371
B
28.3705
83.52 27.891 m 92.39999999999999 27.891 l s
92.39999999999999 27.891 m 92.39999999999999 28.371 l s
92.39999999999999 28.371 m 83.52 28.371 l s
83.52 28.371 m 83.52 27.891 l s
ページの座標は842 x 595,2
、左上隅のPDFXChangeビューアに従って次のようになります。ページが回転しているので、これは自然なことのようです。回転していない場合は左下隅になるので、問題ないはずです。
テキストを1 0 0 1 90.72 28.3705 Tm
元の方向に変更すると、下の行が折りたたまれて左側の線が表示されます。
B
'syは28.3705
andであり、行の水平位置は28.371
(上記のコード行の2行目に見られるように)であるため、これは私が期待することです。したがって、probabylyB
の収益はそれを超えて28.371
いますが、ズームできませんでした。
B
さて、最初の写真の線と線の間のギャップはどこから来ていますか?これは私にとって重要です。なぜなら、左側の最も近い行をB
見つけようとしていて、2つの値、つまりpdftoxml.exeから取得したテキストのsuppsed x値28.3705
と、行の水平方向の値に驚いたからです。 28.371
。私は線が実際には正しくない左をはるかに超えていることを知っていたのでB
、少なくとも「線のx位置を取り、Bのx位置を取り、比較し、線のxがB
「sx、線は左側にあります」。
x値で正しい行を見つけることができません。代わりに、左端にもう1行が表示されます...まるでテキストが2つの間にあるかのように。
これはテキスト描画コードです:
BT
%0 7.5 -7.5 0 90.72 28.3705 Tm
0 1 -1 0 90.72 28.3705 Tm
%1 0 0 1 90.72 28.3705 Tm
/F1 1 Tf
1 Tr
q
0.01 w
(B) Tj
Q
ET
したがって、Bのサイズや線の太さには何の問題もありません。
私が理解するのを手伝ってくれませんか?
I
これは、同じページに2つが描かれた更新された画像で、上部は(数学的に90度回転)I
を使用し、下部は使用しています。わかりませんが、下部がどのように回転して上部になってしまうのでしょうか。0 1 -1 0 90.72 28.3705 Tm
1 0 0 1 90.72 28.3705 Tm
I
+90
これがPDFコードです。かなり大きいですが、ファイルにコピーしてsth.pdfという名前を付けることができるはずです。
PDFサンプル(実際に表示するには、左上隅を実際に大きく拡大する必要がありますI
)
編集私は実際にグリフバウンディングボックスを見つけることについていくつかの興味深い情報を見つけましたが、まだそれらをまとめることができませんでした。