3

Rを使用して生成された(単純な線グラフの)pdfがあり、プレーンテキストストリームとともに保存されています。グラフの作成に使用したデータが失われました。PDFを編集して軸ラベルを変更したいと思います。

私はこの行を見つけました:

/F2 1 Tf 12.00 0.00 -0.00 12.00 238.73 18.72 Tm (**Error Rate**) Tj

これは、必要な軸ラベルを制御しているように見えます(現在「エラー率」と表示されています)。次のように変更します。

/F2 1 Tf 12.00 0.00 -0.00 12.00 238.73 18.72 Tm (**Different Label**) Tj

実際、軸ラベルが「異なるラベル」に変更されます。

さて、新しいラベルを「Mu」にします。のように、ギリシャの手紙ムー。軸ラベルにギリシャ文字を使用してRでpdfを生成できるため、これが可能であることはわかっています。

私が最初に考えたのは、vim trigraph ctrl + km *を使用して、また文字コード表などを使用して、MuのUTF-8文字を手動で入力し、次のようにすることでした。

/F2 1 Tf 12.00 0.00 -0.00 12.00 238.73 18.72 Tm ( μ ) Tj

これを行った後にファイルを書き込もうとすると、「行xyzの変換エラー」というエラーメッセージが表示されます。ここで、xyzは変更された行です。保存したPDFを開くと、「?」が表示されます 軸ラベル用。

PDFはどのようにmuをエンコードしますか?それに応じてラベルを変更するにはどうすればよいですか?

4

3 に答える 3

4

PDF ファイルはバイナリ ファイルです。テキスト ファイルとして変更すると、ほとんどの場合、破損します。ファイルを有効に保つには、外部参照テーブルを更新する必要があります (詳細については、PDF 仕様を参照してください)。ファイル全体のバイト カウントが変更された場合、ファイルの有効性を維持するには、外部参照テーブルの各エントリを更新する必要があります。別のオプションとして、外部参照テーブルをまとめて削除し、結果のファイルを別のツールに渡して「推測」することもできます。私は過去にゴーストスクリプトでこれを行い、良い結果を得ました。

フォントの問題ですが、/F2はどのフォントに対応していますか?PDFファイルに部分的に埋め込まれていますか?そうである場合、文字 μ を追加するために必要な情報がファイルにない可能性があります。

于 2012-09-20T16:02:17.130 に答える
3

私はこれを試しました:

pdf("testmu.pdf",compress=FALSE)
plot(1:10,1:10,xlab="abc",ylab=expression("LABEL "*mu))
dev.off()

結果のファイルに次のチャンクが見つかりました。

BT
/F2 1 Tf 0.00 12.00 -12.00 0.00 10.28 235.40 Tm (LABEL ) Tj
ET
BT
/F6 1 Tf 0.00 12.00 -12.00 0.00 10.28 276.09 Tm (m) Tj
ET

だから私はあなたが使用するかどうかを疑う

/F6 1 Tf 12.00 0.00 -0.00 12.00 238.73 18.72 Tm ( m ) Tj

上記の例では、うまくいくはずです。R が常に (Symbol フォント) を定義しているかどうかはわかりませんF6。そのため、次の行に沿って何かをハックする必要があるかもしれません。

13 0 obj
<< /Type /Font /Subtype /Type1 /Name /F6 /BaseFont /Symbol
>>

編集:他の回答とその下のコメントで指摘されているように、(私が思うに)を検索してxref、次のようなチャンクを見つけて、xrefカウントを手動で更新する必要があるようです

xref
0 13

そして2番目の値をインクリメントします...

于 2012-09-20T16:23:45.870 に答える
2

@yms が指摘したように、PDF は通常、テキスト エディターでは編集できません。PDF にはバイナリ データが含まている可能性が高く、PDF で文字が挿入または削除された場合に更新する必要がある xref テーブルがあるためです。PDF を編集する必要がある場合は、qpdf使用して PDF を編集します

于 2012-09-21T08:07:38.917 に答える