在 C# 中将空白 .txt 文件转换为 PDF

发布于 2024-10-28 19:40:50 字数 1088 浏览 1 评论 0原文

我正在 C# 中将 .txt 转换为 .pdf。如果 .txt 文件不为空,则此方法可以正常工作。如果是,则会抛出“文档没有页面”的错误。

pdf 已生成,但在打开 pdf 文件时抛出错误“打开此文档时出错。文件已损坏且无法修复”。

代码如下所示,

  public void converttxttoPDF(string sourcePath, string destPath)
    {
        try
        {
            iTextSharp.text.Document document = new iTextSharp.text.Document();
            string filename = Path.GetFileNameWithoutExtension(sourcePath);
            System.IO.StreamReader myFile = new System.IO.StreamReader(sourcePath);
            string myString = myFile.ReadToEnd();
            myFile.Close();
            if (!Directory.Exists(destPath))
                Directory.CreateDirectory(destPath);
            iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(destPath + "\\" + filename + ".pdf", FileMode.CreateNew));
            document.Open();
            document.Add(new iTextSharp.text.Paragraph(myString));
            document.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

如果需要任何信息,请告诉我。

谢谢

I am converting a .txt to .pdf in c#. This works fine if the .txt file is not blank. if it is, it threw an error of "The document has no pages".

The pdf gets generated but threw an error of "There was an error opening this document. The file is damaged and could not be repaired" when opening a pdf file.

Code is seen below

  public void converttxttoPDF(string sourcePath, string destPath)
    {
        try
        {
            iTextSharp.text.Document document = new iTextSharp.text.Document();
            string filename = Path.GetFileNameWithoutExtension(sourcePath);
            System.IO.StreamReader myFile = new System.IO.StreamReader(sourcePath);
            string myString = myFile.ReadToEnd();
            myFile.Close();
            if (!Directory.Exists(destPath))
                Directory.CreateDirectory(destPath);
            iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(destPath + "\\" + filename + ".pdf", FileMode.CreateNew));
            document.Open();
            document.Add(new iTextSharp.text.Paragraph(myString));
            document.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

let me know if any info needed.

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鲜血染红嫁衣 2024-11-04 19:40:50

您需要向 pdf 添加一些内容。所以试试这个:

myString = string.IsNullOrEmpty(myString) ? " " : myString;
document.Add(new iTextSharp.text.Paragraph(myString));

You need to add some content to the pdf. So try this:

myString = string.IsNullOrEmpty(myString) ? " " : myString;
document.Add(new iTextSharp.text.Paragraph(myString));
潇烟暮雨 2024-11-04 19:40:50

您需要让 iText 相信该页面上有某些内容。

两种方法:

  1. 明确。 writer.setPageEmpty(false);
  2. 欺骗它(这是达林建议的)。 writer.getDirectContent().setLiteral(" ");

You need to convince iText that there IS something on that page.

Two Methods:

  1. Be explicit. writer.setPageEmpty(false);
  2. Trick it (which is what Darin suggests). writer.getDirectContent().setLiteral(" ");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文