复印文件时空白页

Blank page when copy document

当我复制文档时

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

那个 PDF 很好地说明了为什么假设 0,0 对应于 "lower left corner" 永远不是一个好主意。 PDF 实际上可以自由地重新定义它们认为合适的坐标 space。该 PDF 具有第 1 页的特定条目:

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

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

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