首页 > 解决方案 > 使用数字签名调整 PDF 文档的大小

问题描述

我在我的代码中使用 iTextSharp 来调整 PDF 文档的大小,它工作得很好,如下所示:

    public byte[] ResizePdf(byte[] data) {
        PdfReader reader = new PdfReader(data);
        Document document = new Document(PageSize.A4);

        MemoryStream stream = new MemoryStream();
        PdfWriter writer = PdfWriter.GetInstance(document, stream);

        document.Open();
        PdfContentByte cb = writer.DirectContent;

        for (int i = 1; i <= reader.NumberOfPages; i++) {
            document.NewPage();
            PdfImportedPage page = writer.GetImportedPage(reader, i);
            cb.AddTemplate(page, 0.8, 0, 0, 0.8, 25f, 60f);
        }

        document.Close();
        return stream.ToArray();
    }

但是,当一个 PDF 文档被签名时,当我尝试调整它的大小时,我丢失了新调整大小的文档上的签名。

我尝试创建文档的副本(按照代码),它工作正常,但我无法调整它的大小。

    public byte[] Test(byte[] data) {
        PdfReader reader = new PdfReader(data);
        Document document = new Document(PageSize.A4);

        MemoryStream stream = new MemoryStream();
        PdfCopy copy = new PdfCopy(document, stream);

        document.Open();
        PdfContentByte cb = copy.DirectContent;

        for (int i = 1; i <= reader.NumberOfPages; i++) {
            document.NewPage();
            PdfImportedPage page = copy.GetImportedPage(reader, i);
            cb.AddTemplate(page, 0.8, 0, 0, 0.8, 0, 0);
            copy.AddPage(page);
        }

        document.Close();
        return stream.ToArray();
    }

有没有人有任何提示或任何可以帮助我的东西?提前致谢!

标签: c#.netasp.net-mvcpdfitext

解决方案


推荐阅读