复印文件时的空白页

时间:2015-10-13 10:52:49

标签: c# pdf itextsharp

当我复制文件时

var document = new Document();

    var writer = PdfWriter.GetInstance(document, memoryStream);
    document.Open();
    var cb = writer.DirectContent;
    var reader = new PdfReader(this_file_name);
    document.SetPageSize(reader.GetPageSizeWithRotation(1));
    document.NewPage();
    var page = writer.GetImportedPage(reader, 1);
    cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
    document.CloseDocument();       writer.Close();

当我打开新文档时 - 它是空的。 我尝试更改pdf版本和压缩级别 - 没有结果。 我不能使用PdfStamper,因为复制文件后需要插入一些文字和图片。this bad file

1 个答案:

答案 0 :(得分:1)

PDF是一个很好的例子,说明为什么假设0,0对应于"左下角"永远不是一个好主意。 PDF实际上可以自由地重新定义他们认为合适的坐标空间。该PDF具有第1页的特定条目:

/MediaBox   [0, -1693.08, 2396.52, 0]

这会将y参数偏移1693.08个单位"向下"。幸运的是,这很容易解决。您正确设置了页面大小,但您还希望在放置模板时使用该页面大小的坐标:

var s = reader.GetPageSizeWithRotation(1);
cb.AddTemplate(page, s.Left, s.Bottom);