7

比如说,我现在有一个名为“a.pdf”的 5 页 PDF,其中第 2 页和第 4 页是空的。还有另一个名为“b.pdf”的 2 页 PDF。现在我想要的是将“b.pdf”的第一页复制到“a.pdf”的第 2 页,将“b.pdf”的第二页复制到“a.pdf”的第 4 页。

我发现很难找到任何例子,我发现有人在这里提供, http ://itextsharp.10939.n7.nabble.com/Replace-Pages-with-ItextSharp-td2956.html 称为'PdfStamper.ReplacePage() ',我想这就是我要找的,但我做了一个简单的演示,但没有成功。有人可以帮我检查一下吗?

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();

提前致谢。

==================================================== ================================感谢Jose的建议。该代码现在有效。我现在在这里提供一个简单的示例供其他人参考。

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

好的,我想我找到了你的问题。cc是在内存中创建的,在关闭文件之前我没有看到任何代码来保存对文件的实际更改,因此对内存文件所做的更改会丢失。new FileStream ()一种选择是使用 a而不是内存流来创建它

于 2013-10-07T02:41:30.373 回答