首页 > 解决方案 > PDF中的黑色条纹而不是图像

问题描述

所以我正在为我的客户制作软件,当我向他展示输出(PDF)时,输出中出现了奇怪的黑色条纹而不是图像。它让我感到惊讶,因为它在我的电脑和笔记本电脑上运行良好,没有任何问题。所以在我在虚拟机上尝试之后,同样的问题发生了。

左边虚拟机输出,右边我的电脑 左边虚拟机输出,右边我的电脑

页眉和页脚始终保持不变,只有内容在页面之间切换。

PDF页面由三个块组成:页眉、内容、页脚 PDF页面由三个块组成:页眉、内容、页脚

我通过截取屏幕截图并切换内容然后将图像放入 PDF 来创建 PDF。(输出总是被打印出来,所以没关系)。

制作 PDF 的部分代码

FileStream PDFfile = new FileStream(PDFpath + "//" + filename + "_" + i + ".pdf", FileMode.Create);
Document Document = new Document(PageSize.A4, 25, 25, 25, 25);
PdfWriter Writer = PdfWriter.GetInstance(Document, PDFfile);
Document.AddAuthor("Clientela garde");
Document.AddCreator("http://www.icsharp.eu");
Document.AddKeywords("Výpis do PDF");
Document.AddSubject("Výpis informací pro klienta");
Document.AddTitle("Finanční gramotnost");
// Výpis do stránky
Document.Open();
try
{
    Page1.Hide();
    Page2.Hide();
    Page3.Hide();
    Page4.Hide();
    Page5.Hide();


    Page1.Show();
    System.Drawing.Rectangle bounds = this.Bounds;
    using (Bitmap bitmap = new Bitmap(595, 835))
    {
        System.Drawing.Rectangle rct = new System.Drawing.Rectangle(new Point(bounds.Left - EcoTron.PDFCreator.ActiveForm.Location.X, bounds.Top - EcoTron.PDFCreator.ActiveForm.Location.Y), bounds.Size);
        EcoTron.PDFCreator.ActiveForm.DrawToBitmap(bitmap, rct);
        iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(bitmap, System.Drawing.Imaging.ImageFormat.Bmp);
        bitmap.SetResolution(1190, 1684);
        PdfPTable HeaderTable = new PdfPTable(1);
        HeaderTable.DefaultCell.Border = 0;
        HeaderTable.WidthPercentage = 100;
        PdfPCell ImageCell = new PdfPCell();
        ImageCell.Border = 0;
        img.ScaleAbsolute(595 - 50, 835 - 50);
        ImageCell.AddElement(img);
        HeaderTable.AddCell(ImageCell);
        Document.Add(HeaderTable);
    }

标签: c#.netimagepdfitext

解决方案


您描述的工作流程似乎非常复杂和脆弱。

也许您应该考虑其他创建文档的方法。

  1. 以 HTML 格式生成文档并将 HTML 转换为 PDF ( iText7+ pdfHTML)
  2. 使用类似的东西生成图形JFreeChart,将它们导出到 aBufferedImage并直接添加到 PDF
  3. 将图形生成为 SVG 图像,并将它们直接添加到 PDF

推荐阅读