创建PDF使用.NET

时间:2017-10-08 07:22:07

标签: pdf character-encoding visual-studio-2017 pdfsharp

我将创建一个应用程序,用于在单击按钮后生成PDF文件。该应用程序适用于英语,但不适用于中文。我使用utf-8进行编码,所以我无法确定导致问题的原因。这是主要的脚本:

using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            PdfDocument pdf = new PdfDocument();
            pdf.Info.Title = "My First PDF";
            PdfPage pdfPage = pdf.AddPage();
            XGraphics graph = XGraphics.FromPdfPage(pdfPage);
            XFont font = new XFont("Microsoft Himalaya", 35, XFontStyle.Regular);
            graph.DrawString("香港", font, XBrushes.Black, new XRect(0, 0, pdfPage.Width.Point, 170), XStringFormats.Center);
            string pdfFilename = "firstpage.pdf";
            pdf.Save(pdfFilename);
            Process.Start(pdfFilename);
        }
    }
}

这是app.config:

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

1 个答案:

答案 0 :(得分:0)

您在程序中使用的编码无关紧要,您为PDF创建的字体是ANSI字体。

XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode,
                              PdfFontEmbedding.Always);

XFont font = new XFont("Times New Roman", 12, XFontStyle.Regular, options);

另见:
http://pdfsharp.net/wiki/Unicode-sample.ashx

嵌入选项已删除IIRC,但您仍需设置编码。