iTextSharp转换为pdf .net不支持Tiles

时间:2013-11-08 11:32:07

标签: c# asp.net pdf itextsharp tiff

我正在尝试从磁盘中读取TIFF文件并使用PDF转换为iTextSharp格式

它工作正常,但除了一些TIFF之外有一些图像。在此行Tiles are not supported

处收到iTextSharp.text.Image.GetInstance(documentPath)错误错误

这是我使用的代码

string documentPath="somefile.TIFF";

try
{
  Image myImage = Image.GetInstance(documentPath); //Error here     
  documentPDF.Add(myImage);
  byte[] bytes= ms.GetBuffer();
}
catch (Exception ex)
{
  // Error says tiles are not supported
}

堆栈跟踪:

  

在   iTextSharp.text.pdf.codec.TiffImage.GetTiffImage(RandomAccessFileOrArray   s,Int32页面,布尔直接)at   iTextSharp.text.pdf.codec.TiffImage.GetTiffImage(RandomAccessFileOrArray   s,Int32页面)在iTextSharp.text.Image.GetInstance(Uri url)at at   iTextSharp.text.Image.GetInstance(String filename)

有人可以帮我解决这个问题吗?这是在新版本中修复的吗?

查看代码 here 后,他们似乎会检查TIFF中存在的Tiles。

是否有任何pdf创作者使用Tiles for C#阅读TIFF?

1 个答案:

答案 0 :(得分:1)

Docotic.Pdf library也可以从平铺的TIFF和其他流行格式创建PDF。

以下是从图像创建PDF的示例代码(平铺TIFF或不平铺)。缩放图像以适合页面。

public static void createPdfFromImage(string imageFile, string output)
{
    using (PdfDocument doc = new PdfDocument())
    {
        PdfImage img = doc.AddImage(imageFile);

        PdfPage page = doc.Pages[0];
        double widthRatio = (double)page.Width / (double)img.Width;
        double heightRatio = (double)page.Height / (double)img.Height;
        double ratio = Math.Min(Math.Min(widthRatio, heightRatio), 1);

        page.Canvas.DrawImage(img, 0, 0,
            (float)(img.Width * ratio), (float)(img.Height * ratio), 0f);

        doc.Save(output);
    }
}

免责声明:我为图书馆的供应商工作。