代码之家  ›  专栏  ›  技术社区  ›  Betty Crokker

在包含图像的ios上创建简单的xfinium pdf

  •  0
  • Betty Crokker  · 技术社区  · 6 年前

    我们在iOS上的C_xamarin表单应用程序上使用xfinium。我有一些测试代码,可以用几段文本创建一个pdf文件,它工作正常。但是,当我尝试包含图像时,生成的pdf不包含图像,acrobat reader会给出“此页上存在错误”。有问题的图像是我的应用程序中的一个资源(不是从url加载的)。

    string path = Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
    string file = System.IO.Path.Combine(path, "report.pdf");
    PdfFixedDocument document = new PdfFixedDocument();
    PdfStandardFont helveticaBold = new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 16);
    PdfPage page = document.Pages.Add();
    page.Width = 8 * 72 + 36;
    page.Height = 11 * 72;
    PdfBrush blackBrush = new PdfBrush(PdfRgbColor.Black);
    page.Graphics.DrawString("Hello", helveticaBold, blackBrush, 20, 50);
    string imageFileName = "UI_Assets_Image.png";
    FileStream imageStream = System.IO.File.Open(imageFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
    PdfPngImage image = new PdfPngImage(imageStream);
    Debug.WriteLine("   image is " + image.Width + " x " + image.Height);
    // Reports 1373 x 417 which is correct so I believe it is
    // loading the image correctly
    // Draw image in the page width
    PdfSize size = page.Graphics.DrawImage(image, 36, 75, 540, 166);
    Debug.WriteLine("   DrawImage() returned " + size.Width + " x " + size.Height);
    // Reports 540 x 166 which seems reasonable
    using (FileStream stream = System.IO.File.Create(file))
    {
        document.Save(stream, null);
    }
    

    如果我不包括图像,pdf就可以了。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Mihai Iancu    6 年前

    出现此问题的原因是png图像不是正确的png图像,它在构建过程中经过了优化,以便与ios方法和类一起使用。
    如果在项目设置中禁用PNG优化,则图像应在PDF文件中正确显示。