1

Microsoft Word で生成された PDF ファイルがあります。ユーザーは、テキストがブラック ボックスのように見えるようにする (そして、テキストが編集されたように見えるようにする) ために、黒の「ハイライト」色を指定しました。代わりにテキストが強調表示されるように、黒いボックスを黄色に変更したいと思います。

理想的には、これを Python で行いたいと考えています。

ありがとう!

4

1 に答える 1

2

オプション 1:商用ライブラリがオプションである場合、これをAmyuni PDF Creator .Netで簡単に実装できます。C# コードは次のようになります。

using System.IO;
using Amyuni.PDFCreator;
using System.Collections;

//open a pdf document
FileStream testfile = new FileStream("test1.pdf", FileMode.Open, FileAccess.Read, FileShare.Read);
IacDocument document = new IacDocument(null);
document.Open(testfile, "");

//get the first page
IacPage page1 = document.GetPage(1);

//get all graphic objects on the page
IacAttribute attribute = page1.AttributeByName("Objects");

// listobj is an arraylist of objects
ArrayList listobj = (ArrayList)attribute.Value;

foreach (IacObject iacObj in listobj)
{
    //if the object is a rectangle and the background color is black then set it to yellow
    if ((IacObjectType)iacObj.AttributeByName("ObjectType").Value == (IacObjectType.acObjectTypeFrame && (int)obj.Attribute("BackColor").Value == 0)
    {
        obj.Attribute("BackColor").Value = 0x00FFFF; //Yellow   
    }
}

代わりにこれを IronPython に翻訳できると思います。
この提案には通常の免責事項が適用されます

オプション 2:商用ライブラリがオプションではなく、商用のクローズド ソース アプリケーションを開発していない場合は、iText を使用してページ コンテンツに対して信頼性の低いハッキングを試すことができます。

ページ コンテンツをデコードしてみてください (詳細については、iText の ContentByteUtils クラスを参照してください)。すべての塗りつぶし演算子の前に色選択演算子を挿入してから、ファイルを再保存します。これらの演算子の詳細については、Adobe PDF リファレンス ドキュメントの TABLE 4.10 Path-painting 演算子を参照してください。

オペランド f: ゼロ以外の巻き数規則を使用してパスを塗りつぶし、塗りつぶす領域を決定します (232 ページの「非ゼロ巻き数規則」を参照)。

オペランド rg: 非ストローク色空間を DeviceRGB に設定し、非ストローク色を指定された値に設定します

オペランド q: 現在のグラフィック状態を保存します

オペランド Q: 保存されたグラフィック状態を復元します

したがって、ページに一連の演算子がある場合:

0.0 0.0 0.0 rg % Set nonstroking color to black
25 175 175 −150 re % Construct rectangular path
f % Fill path

次のようになります。

0.0 0.0 0.0 rg % Set nonstroking color to black
25 175 175 −150 re % Construct rectangular path
q % Saves the current graphic state
1.0 1.0 0.0 rg % Set nonstroking color to yellow
f % Fill path
Q % Restores the saved graphic state

いくつかの注意事項:
-このアプローチは、すべての非テキスト描画 (線、曲線などを含み、ラスター イメージを除く) を黄色に変え、他の PDF と同じ描画演算子を使用してページに描画されたテキストも黄色として描画します。図面。
-ページで使用されている Xforms と注釈は処理されません。
-処理するドキュメントが同じツールで同じ方法で作成されている場合は、いくつかのファイルをテストして、その結果を確認するだけでかまいません。

重要: これは私の頭の上からのテストされていないアイデアにすぎません。うまくいくかもしれませんし、うまくいかないかもしれません。

于 2013-02-20T16:42:04.047 に答える