使用 itext7 将 PNG 文件转换为 PDF 时出现权限问题,某些命令似乎可以访问其他命令
Having permission issues when using itext7 to convert PNG files to PDFs, some commands seems to have access others dont
https://itextpdf.com/en/demos/convert-image-to-pdf-free-online
我从他们的网站上获得了演示代码,我正在用 c# visual studio 构建它,使用 selenium/nunit
看起来很简单,但我遇到了一些我不明白的问题。这是我的代码:
using System;
using iText.IO.Image;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
namespace TesingPDFConvert
{
internal class Program
{
private static string ORIG = @"C:\Users$username\Documents\c_projects\SeleniumScreenshots";
private static string OUTPUT_FOLDER = @"C:\Users$username\Documents\c_projects\pdf_output\";
public static void Main(string[] args)
{
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(OUTPUT_FOLDER + "ImageToPdf.pdf"));
Document document = new Document(pdfDocument);
ImageData imageData = ImageDataFactory.Create(ORIG);
Image image = new Image(imageData);
image.SetWidth(pdfDocument.GetDefaultPageSize().GetWidth() - 50);
image.SetAutoScaleHeight(true);
document.Add(image);
pdfDocument.Close();
}
}
}
当我 运行 执行此操作时,SeleniumScreenshots 文件夹的访问被拒绝,但另一个文件夹 (pdf_output) 似乎可以访问。如果我将文件夹更改为 pdf_output 文件夹以从那里获取图像,我仍然被拒绝访问,但是,它正在将空 pdf 写入输出文件夹,因此它似乎可以访问。我尝试从“只读”属性更改文件夹,但由于某种原因它没有保存,我不认为这是问题原因我在其他 selenium 或 c# 项目中写入我的文档文件夹并且没有问题。我的想法是我使用 itext7 错误。
这里的目标是获取我的 SeleniumScreenshots 文件夹中的 PNG 并将它们转换为 PDF 并在 运行 进行 selenium/nunit 测试后放入 pdf_outputs 文件夹(未在代码中看到)。
在无法让它与我的 selenium/nunit 项目一起工作后,我打开了一个新项目并设置了他们的代码以工作(控制台应用程序),但仍然得到了相同的结果。我难住了。
总的来说,我对 c# 和 visual studio code/developement 还很陌生。提前感谢您的帮助。
根据评论,解决方法如下:
ORIG
末尾是文件名,不能引用文件夹
OUTPUT_FOLDER
最后指的是文件夹下的space,你少了\
.
代码本身没有问题
https://itextpdf.com/en/demos/convert-image-to-pdf-free-online
我从他们的网站上获得了演示代码,我正在用 c# visual studio 构建它,使用 selenium/nunit
看起来很简单,但我遇到了一些我不明白的问题。这是我的代码:
using System;
using iText.IO.Image;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
namespace TesingPDFConvert
{
internal class Program
{
private static string ORIG = @"C:\Users$username\Documents\c_projects\SeleniumScreenshots";
private static string OUTPUT_FOLDER = @"C:\Users$username\Documents\c_projects\pdf_output\";
public static void Main(string[] args)
{
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(OUTPUT_FOLDER + "ImageToPdf.pdf"));
Document document = new Document(pdfDocument);
ImageData imageData = ImageDataFactory.Create(ORIG);
Image image = new Image(imageData);
image.SetWidth(pdfDocument.GetDefaultPageSize().GetWidth() - 50);
image.SetAutoScaleHeight(true);
document.Add(image);
pdfDocument.Close();
}
}
}
当我 运行 执行此操作时,SeleniumScreenshots 文件夹的访问被拒绝,但另一个文件夹 (pdf_output) 似乎可以访问。如果我将文件夹更改为 pdf_output 文件夹以从那里获取图像,我仍然被拒绝访问,但是,它正在将空 pdf 写入输出文件夹,因此它似乎可以访问。我尝试从“只读”属性更改文件夹,但由于某种原因它没有保存,我不认为这是问题原因我在其他 selenium 或 c# 项目中写入我的文档文件夹并且没有问题。我的想法是我使用 itext7 错误。
这里的目标是获取我的 SeleniumScreenshots 文件夹中的 PNG 并将它们转换为 PDF 并在 运行 进行 selenium/nunit 测试后放入 pdf_outputs 文件夹(未在代码中看到)。
在无法让它与我的 selenium/nunit 项目一起工作后,我打开了一个新项目并设置了他们的代码以工作(控制台应用程序),但仍然得到了相同的结果。我难住了。
总的来说,我对 c# 和 visual studio code/developement 还很陌生。提前感谢您的帮助。
根据评论,解决方法如下:
ORIG
末尾是文件名,不能引用文件夹OUTPUT_FOLDER
最后指的是文件夹下的space,你少了\
.
代码本身没有问题