Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PDF中的黑色条纹代替图像_C#_.net_Image_Pdf_Itext - Fatal编程技术网

C# PDF中的黑色条纹代替图像

C# PDF中的黑色条纹代替图像,c#,.net,image,pdf,itext,C#,.net,Image,Pdf,Itext,因此,我正在为我的客户制作软件,当我向他展示输出PDF时,输出中出现了奇怪的黑色条纹,而不是图像。 这让我很惊讶,因为它在我的电脑和笔记本电脑上运行得很好,没有任何问题。所以当我在虚拟机上试用后,同样的问题发生了 左虚拟机输出,右我的计算机 页眉和页脚始终保持不变,只有内容在页面之间切换 PDF页面由三个块组成:页眉、内容和页脚 我通过截取屏幕截图并切换内容,然后将图像转换成PDF来创建PDF。输出总是打印出来的,所以这无关紧要 主表格是595 x 835 收割台是595 x 65 内容是5

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

左虚拟机输出,右我的计算机

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

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

我通过截取屏幕截图并切换内容,然后将图像转换成PDF来创建PDF。输出总是打印出来的,所以这无关紧要

主表格是595 x 835 收割台是595 x 65 内容是595x705 页脚是595x65 生成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);
    }

所以我发现了问题所在

这行代码:

            System.Drawing.Rectangle bounds = this.Bounds;
似乎它只受可见窗口大小的限制我不确定原因,所以我将其更改为:

                System.Drawing.Rectangle bounds = this.Bounds;
                bounds.Size = new Size(595, 835);

它强制限制窗口到屏幕的实际大小。现在问题似乎消失了。

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

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

以HTML格式生成文档,并将HTML转换为PDF iText7+pdfHTML 使用JFreeChart之类的工具生成图形,将其导出到BuffereImage并直接添加到PDF 将图形生成为SVG图像,并将其直接添加到PDF中
我通过截取屏幕声音的屏幕截图来创建PDF,好像该部分不是机器/屏幕独立的。既然我们看不到,我们只能猜测。图表是从excel还是MSChart还是什么?你没有显示代码,你没有共享PDF。。。您希望我们如何帮助您?@mkl抱歉,伙计们添加了信息。TaW图表只是图像。黑色边框是与截图一起出现的,还是仅在PDF中出现?如果这是由于您复制屏幕的方法造成的,那么这个问题不是关于PDF部分,而是关于如何更正屏幕复制。@usr2564301所以我做了测试,实际上这个问题与屏幕无关。如果我将虚拟计算机的分辨率提高到1600x1200 1280x1024,即使我的1920x1080在PC上运行良好,也仍然无法在图像和PDF上显示。你们有关于修复的建议吗?