• PdfSharp库剪裁Pdf页面边缘空白部分


    背景

    网上下载下来的Pdf格式电子书放到Kindle后由于页面太大,缩放后字常常小得看不清,因此可以通过剪裁页面边缘的空白以缩小页面,使Kindle上显示的字放大。在GitHub上星最多的C# Pdf处理库就是PdfSharp了,然而这个库没有Api手册,需要从零散的示例中找到需要的函数,因此将代码记录如下方便以后参考。

    多页Pdf重叠至一页

    using PdfSharp.Pdf;
    using PdfSharp.Pdf.IO;
    using PdfSharp.Drawing;
    
    class main {
        static void Main(string[] args) {
            XPdfForm f = XPdfForm.FromFile(@"E:Java&C#input.pdf");
            // 原来的Pdf文档
            PdfDocument output = new PdfDocument();
            // 创建空白Pdf文档
            PdfPage p = output.AddPage(); p.Width = f.PixelWidth; p.Height = f.PixelHeight;
            // 给空白的Pdf文档添加页面并设置大小为原Pdf页面大小
            XGraphics g = XGraphics.FromPdfPage(p);
            // 在该页面上创建画布
            for (int i = 0; i < f.PageCount; i++) {
                f.PageIndex = i; g.DrawImage(f, 0, 0);
                // 让f指向第i页并把f画在空白文档上
                if (i == 1) p.MediaBox = new PdfRectangle(new XRect(50, 60, p.Width - 100, p.Height - 110));
                // 根据需要调节XRect的参数以剪切页面边缘
            }
            output.Save(@"E:Java&C#output.pdf");
        }
    }
    

    多页Pdf剪裁页面边缘

    using PdfSharp.Pdf;
    using PdfSharp.Pdf.IO;
    using PdfSharp.Drawing;
    
    class main {
        static void Main(string[] args) {
            XPdfForm f = XPdfForm.FromFile(@"E:Java&C#input.pdf");
            PdfDocument output = new PdfDocument();
            for (int i = 0; i < f.PageCount; i++) {
                f.PageIndex = i;
                PdfPage p = output.AddPage(); p.Width = f.PixelWidth; p.Height = f.PixelHeight;
                XGraphics g = XGraphics.FromPdfPage(p); g.DrawImage(f, 0, 0);
                if (i != 0) p.MediaBox = new PdfRectangle(new XRect(50, 60, p.Width - 100, p.Height - 110));
                // 如果不是封面则剪裁
            }
            output.Save(@"E:Java&C#output.pdf");
        }
    }
    
  • 相关阅读:
    nginx安装
    虚拟机下Linux的NAT网络配置 及显示红叉
    eclipse常用快捷键
    MongoDB笔记
    Pytorch 之 MNIST 数据集实现(代码讲解)
    [python][科学计算][matplotlib]使用指南
    梯度计算
    第一次神经网络作业,神经网络预测图片是否为猫的代码实现
    KVM监控完善
    Zabbix表结构,zabbix api获取主机信息vs直接从数据库获取主机信息
  • 原文地址:https://www.cnblogs.com/YuanZiming/p/10339303.html
Copyright © 2020-2023  润新知