46

既存の PDF があり、FdFWriter を使用してテキスト ボックスに入力できます。それはうまくいきます。今、私はイメージを持っています。ドキュメントを読み、多くの例を見てきましたが、それらはすべて新しいドキュメントを作成し、画像を挿入します。既存の PDF を取得して、画像フィールドに画像を挿入するか、ボタンのアイコン画像として挿入したいと考えています。試してみましたが、ドキュメントが破損します。

既存のドキュメントを取得して、その上に画像を配置できるようにする必要があります。オリジナルを開いたり、読んだり、置き換えたり、削除したりしたくありません。このオリジナルは変更され、「オリジナル」という名前は、このコンテキストではソース ファイルのみを意味します。このような画像を必要とする PDF ファイルはたくさんあります。

助けてくれてありがとう。

編集 - 以下のコードに非常に感謝しています。うまく機能しますが、私にとっての問題は、既存の PDF にデジタル署名があることです。ドキュメントがこのように (result.pdf に) コピーされると、これらの署名はまだ存在しますが、バイト数が異なるか、他のアイテムが破損しています。これは、result.pdf に表示される署名の横に「無効な署名」というアイコンが表示されることを意味します。

重要な場合に備えて、Topaz 署名パッドを使用して署名を作成していますが、これには独自のセキュリティがあります。PDFをコピーするだけでは破損しませんが、以下のプロセスで破損します.

この場合は重要なコピーではなく、既存のドキュメントに画像を配置しようとしています。

また、署名とは、ピン番号ではなく、手書きを意味します。

ありがとうございました。

編集 - これに PdfSignatureAppearance を使用できますか?

編集 - 私はそれを行うことができるようです:

var Stamper = new PdfStamper(reader, outputPdfStream,'1',true);

4

4 に答える 4

78

既存の PDF ファイルの内容を変更し、透かし、ページ番号、ヘッダーなどの追加コンテンツを追加する場合、PdfStamper が必要なオブジェクトです。次のコードを使用して、既存の pdf ファイルの特定の絶対位置に画像を挿入することに成功しました。

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

class Program
{
    static void Main(string[] args)
    {
        using (Stream inputPdfStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
        using (Stream inputImageStream = new FileStream("some_image.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
        using (Stream outputPdfStream = new FileStream("result.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
        {
            var reader = new PdfReader(inputPdfStream);
            var stamper = new PdfStamper(reader, outputPdfStream);
            var pdfContentByte = stamper.GetOverContent(1);

            Image image = Image.GetInstance(inputImageStream);
            image.SetAbsolutePosition(100, 100);
            pdfContentByte.AddImage(image);
            stamper.Close();
        }
    }
}

画像を挿入すると、サイズを変更できます。iTextSharp のドキュメントで変換行列を確認できます。

于 2009-02-24T22:09:43.540 に答える
1

スタンパーを使用してページに画像を挿入する同様の例を次に示します。

Gmane iTex メーリング リストの投稿

于 2010-03-05T14:30:04.697 に答える
0

pdftk はこれを行うことができます。これはライブラリではありませんが、コードから .exe として簡単に呼び出すことができます。

参照stampおよびbackgroundコマンド: http://www.pdflabs.com/docs/pdftk-man-page/

ref: PDF の上に差し込み印刷を行う方法は?

于 2011-02-25T11:38:06.500 に答える