C# TIF文件转PDF

TIF文件转PDF

使用场景

前几天公司管文件的想要一个本地TIF文件转换成PDF的功能,虽然我不明白为什么要转换成PDF(TIF文件是有图层的,可以使用其他软件进行重新编辑),其实是公司购买的致远OA系统不能支持TIF文件在线预览而只能下载,PDF文件可以预览而且有水印。

然后领导说让我从网上找企业问问这个功能(管文件的上传TIF之后,这个功能把TIF转换成PDF文件然后上传给OA)的价格,不问不知道,一问10w+(虽然是嵌套在其他WEB应用中的,但是我还是觉得离了个大谱)。

其实用Windows自带的图片浏览器直接打印选择导出PDF文件然后上传OA系统就可以了,但是怕用户需要转换的量太大,一个一个文件转换不知道得弄多久,我寻思自己开发一个小功能,让管文件的在他本地把TIF转换成PDF再上传OA系统就OK了。

结局
用自己开发的导出的感觉比用Windows自带的清晰一些(可能是错觉),最后领导怕我开发的软件用户会给别人用,一旦有问题用户可能首先往我头上怀疑,而且用户一年才有十几个TIF文件需要转换成PDF的,就让他们用Windows自带的功能自己转换去了,这玩意最后就太监了

代码
废话说完了,看看代码吧

这个是按钮点击,主要是调用“tifToPdf”方法,如果需要批量转换的话就遍历文件名称,每次都调用这个方法就行了。

private void button1_Click(object sender, EventArgs e)
{
    try
    {                
        tifToPdf(@"D:\test.tif", @"D:\test.pdf");
        MessageBox.Show("转换成功!");
    }
    catch (Exception ex)
    {
        MessageBox.Show("转换失败!\r详细信息:" + ex.Message);
    }
}

转换的方法

/// <summary>
/// 将tif文件转换成pdf
/// </summary>
/// <param name="arr">需要导出为PDF格式的tif文件全路径</param>
/// <param name="toFilePdf">导出PDF的文件权路径</param>
private static void tifToPdf(string arr, string toFilePdf)
{
    System.Drawing.Bitmap pic = new System.Drawing.Bitmap(arr);
    float width = pic.Size.Width;   // TIF图片的宽度
    float height = pic.Size.Height;   // TIF图片的高度

    FileInfo _toFile = new FileInfo(toFilePdf);
    // 创建一个文档对象
    Document doc = new Document();
    Rectangle rectangle = new Rectangle(0, 0, width, height);
    doc.SetPageSize(rectangle);
    int pages = 0;
    FileStream fs = new FileStream(toFilePdf, FileMode.OpenOrCreate);
    // 定义输出位置并把文档对象装入输出对象中
    PdfWriter writer = PdfWriter.GetInstance(doc, fs);
    // 打开文档对象
    doc.Open();
    PdfContentByte cb = writer.DirectContent;
    RandomAccessFileOrArray ra = new RandomAccessFileOrArray(arr);
    int comps = TiffImage.GetNumberOfPages(ra);
    for (int c = 0; c < comps; ++c)
    {
        Image img = TiffImage.GetTiffImage(ra, c + 1);
        if (img != null)
        {
            doc.SetPageSize(new Rectangle(img.ScaledWidth, img.ScaledHeight));
            img.SetAbsolutePosition(0, 0);
            cb.AddImage(img);
            doc.NewPage();
            ++pages;
        }
        ra.Close();// 关闭
    }
    // 关闭文档对象,释放资源
    doc.Close();
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值