Cannot create XGraphics for a page of a document that cannot be modified. Use PdfDocumentOpenMode.Modify 报错
时间: 2024-04-15 13:29:33 浏览: 18
非常抱歉,我之前的回答中有一个错误。在PdfSharpCore中,使用`XGraphics`对象绘制页面内容时,需要以`PdfDocumentOpenMode.Modify`模式打开PDF文档。以下是修改后的示例代码:
```csharp
using System.Drawing.Printing;
using PdfSharpCore.Pdf;
using PdfSharpCore.Pdf.IO;
class Program
{
static void Main(string[] args)
{
string pdfFilePath = "path/to/your/pdf/file.pdf";
string printerName = "Your Printer Name";
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = printerName;
int currentPage = 0;
printDoc.PrintPage += (sender, e) =>
{
using (PdfDocument pdfDoc = PdfReader.Open(pdfFilePath, PdfDocumentOpenMode.Modify))
{
if (currentPage < pdfDoc.PageCount)
{
PdfPage page = pdfDoc.Pages[currentPage];
using (XGraphics graphics = XGraphics.FromPdfPage(page))
{
// 使用graphics对象绘制页面内容
// ...
}
currentPage++;
e.HasMorePages = currentPage < pdfDoc.PageCount;
}
else
{
e.HasMorePages = false;
}
}
};
printDoc.Print();
}
}
```
在上面的代码中,我们使用`PdfReader.Open`方法以`PdfDocumentOpenMode.Modify`模式打开PDF文档。然后,在每次PrintPage事件触发时,我们使用`XGraphics.FromPdfPage`方法创建一个`XGraphics`对象来绘制页面内容。
请注意,在使用`XGraphics`对象完成绘制操作后,需要使用`using`语句或显式调用`Dispose`方法来释放资源,并确保及时关闭和保存PDF文档。
再次感谢您的提醒,希望这次的回答对您有所帮助。如果还有任何疑问,请随时提问。