7

たとえば、「a.pdf」という名前の 5 ページの PDF があり、2 ページ目と 4 ページ目は空です。そして、「b.pdf」と呼ばれる別の 2 ページの PDF。ここで、「b.pdf」の最初のページを「a.pdf」のページ 2 にコピーし、「b.pdf」の 2 ページ目を「a.pdf」のページ 4 にコピーします。

例を見つけるのは非常に難しいことがわかりました。私が見つけたのは、ここで提供されている人 です 。 '、これは私が探しているものだと思いますが、簡単なデモを行いましたがうまくいきませんでした。誰か私のために小切手をもらえますか?

string _outMergeFile = Server.MapPath("~/11/a.pdf");

string file2 = Server.MapPath("~/11/b.pdf");
PdfReader readerA = new PdfReader(_outMergeFile);
PdfReader readerB = new PdfReader(file2);

PdfStamper cc = new PdfStamper(readerA,new MemoryStream());

cc.ReplacePage(readerB, 1, 2);
cc.ReplacePage(readerB, 2, 4);
cc.Close();

前もって感謝します。

================================================== =============================== ホセの提案に感謝します。コードが動作するようになりました。他の人が参照できるように、ここで簡単なサンプルを提供しています。

public void MyFunction()
{
    string _outMergeFile = Server.MapPath("~/11/a.pdf");

    string file2 = Server.MapPath("~/11/b.pdf");
    PdfReader readerA = new PdfReader(_outMergeFile);
    PdfReader readerB = new PdfReader(file2);

    PdfStamper cc = new PdfStamper(readerA, new FileStream(Server.MapPath("~/11/result.pdf"), FileMode.Append));

    cc.ReplacePage(readerB, 1, 2);
    cc.Close();
}
4

1 に答える 1

5

OK、私はあなたの問題を見つけたと思います。ccメモリ内に作成され、ファイルを閉じる前に実際の変更をファイルに保存するコードが表示されないため、メモリ内ファイルに加えられた変更は失われます。1 つのオプションはnew FileStream ()、メモリ ストリームの代わりにを使用して作成することです。

于 2013-10-07T02:41:30.373 に答える