标签: pdfsharp

查找各种Arial字体大小的字符宽度(以像素为单位)

我有一个程序,使用C#中的PDFsharp手动生成PDF.虽然它相当繁琐但我必须使用它并接近完成任务.只剩下一个问题.

问题:我想知道如何在Arial中找出给定字符大小的给定字符的宽度.

我无法想出更精确的文本包装方法.现在,一个以像素为单位定义框的宽度,然后继续在该框中写出一个字符串.我只是猜测可以装在盒子里的弦的最大长度,并且有时会出现一些视觉上的奇怪现象.

有帮助吗?

谢谢

c# pdf string char pdfsharp

2
推荐指数
2
解决办法
8840
查看次数

检查变量是否为NULL

我正在使用PDFSharp开展一个项目.可悲的是,作为VB.Net开发人员,他们提供的示例是用C#编写的.我遇到了检查变量是否存在的问题null.

在C#上,代码声明如下

PdfDictionary resources = page.Elements.GetDictionary("/Resources");
  if (resources != null) 
  'do stuff here
Run Code Online (Sandbox Code Playgroud)

我有第二行的问题,

if(resources!= null)

到目前为止,这是我在VB上所做的,我也从sLaks 读过这个博客.

昏暗的资源如新的PdfDictionary?()

但它给了我一些错误.

简单地设置资源以nothing产生其默认值,可以是int,或者无论如何.我希望它与NULL进行比较.
这是完整的代码.

vb.net variables null pdfsharp

2
推荐指数
1
解决办法
2万
查看次数

返回 PDF 页面的 SHA256 哈希值

我正在编写一个 C# WPF 应用程序,我在其中插入一个“标题”页面作为一批 PDF 文档的第一页。标题页取自批处理中第一个 pdf 的第一页。

用户将启动此过程,但我想确保在以后用户无法再次运行此过程,这会导致插入另一个标题。

所以我的计划是获取标题页的 SHA256 哈希值,并将其与其他 pdf 的第一页的哈希值进行比较。如果它们匹配,则第一页与页眉页相同,否则我们插入页眉。

我敲了下面的代码来测试获取pdf中第一页的哈希值,但是每次运行时哈希值都不同。

为什么每次都不一样?

谢谢

using System.IO;
using System.Text;
using System.Security.Cryptography;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;

namespace Syncada
{
    public class PDFDoc
    {

        private PdfDocument pdfDoc;

        public PDFDoc(string path)
        {
            pdfDoc = PdfReader.Open(path,PdfDocumentOpenMode.Import);
        }

        public string GetPageOneHash()
        {

            byte[] hash;

            PdfPage page = pdfDoc.Pages[0];
            using (MemoryStream stream = new MemoryStream())
            {
                PdfDocument doc = new PdfDocument();
                doc.AddPage(page);
                doc.Save(stream,false);

                SHA256 sha256 = SHA256.Create();
                hash = sha256.ComputeHash(stream);
            }

            StringBuilder sb = …
Run Code Online (Sandbox Code Playgroud)

c# pdf wpf hash pdfsharp

2
推荐指数
1
解决办法
3190
查看次数

新部分开始时页码重置 - MigraDoc

我正在使用 MigraDoc 创建 PDF。根据我的要求,我必须根据页面\部分的内容添加不同的标题。我可以通过添加新部分并为每个部分定义新标题来实现它。到这里为止,一切正常。
在页脚中,我使用“AddPageField”显示页码。但我意识到,每当新的部分开始时,页面字段都会重置为 1。页脚有什么方法可以继续所有部分的页数吗?
如果我在整个文档中仅使用一个部分,则页码将继续。但在这种情况下,我不能使用不同的标头。

pdfsharp migradoc

2
推荐指数
1
解决办法
1369
查看次数

对齐单元格,使文本在底部对齐

我想将TableCell中的文本对齐以与单元格的底部对齐。我在表格单元属性的任何地方都没有看到此选项。这是构建该表的代码片段。

        Table thirdTable = section.Headers.Primary.AddTable();

        thirdTable.Format.Font.Size = "7pt";

        column = thirdTable.AddColumn("1.5cm");
        column.Format.Alignment = ParagraphAlignment.Center;

        column = thirdTable.AddColumn("1cm");
        column.Format.Alignment = ParagraphAlignment.Center;

        column = thirdTable.AddColumn("7cm");
        column.Format.Alignment = ParagraphAlignment.Left;

        column = thirdTable.AddColumn("2.5cm");
        column.Format.Alignment = ParagraphAlignment.Center;

        column = thirdTable.AddColumn("1cm");
        column.Format.Alignment = ParagraphAlignment.Center;

        column = thirdTable.AddColumn("1.5cm");
        column.Format.Alignment = ParagraphAlignment.Center;

        column = thirdTable.AddColumn("1.5cm");
        column.Format.Alignment = ParagraphAlignment.Center;

        row = thirdTable.AddRow();
        row = thirdTable.AddRow();

        row.Cells[0].AddParagraph("Segment Code");
        row.Cells[1].AddParagraph("Milepoint");
        row.Cells[2].AddParagraph("Description of Milepoint");
        row.Cells[3].AddParagraph("City Name");
        row.Cells[4].AddParagraph("Segment Code");
        row.Cells[5].AddParagraph("Milepoint");
        row.Cells[6].AddParagraph("FA Route Number");
Run Code Online (Sandbox Code Playgroud)

c# pdfsharp migradoc

2
推荐指数
1
解决办法
1801
查看次数

将多页 MigraDoc 文档添加到 PDFSharp 文档

在 Migradoc 和 PDFSharp 示例页面中,有一个将 Migradoc 文档绘制为 PDFSharp 文档:http://www.pdfsharp.net/wiki/MixMigraDocAndPdfSharp-sample.ashx

但是,如果我要渲染的 Migradoc 文档不止一页怎么办? 在 Migradoc 中,您不处理页面..它是自动完成的。

编辑:找到我的路

好吧,一旦你“ Prepare()”文档......你就有了FormattedDocument()方法,在那里你可以看到它最终有多少页。我在下面添加了我自己的回应。

pdfsharp migradoc

2
推荐指数
1
解决办法
1971
查看次数

将外部 PDF 页面添加到 PDFSharp/MigraDoc

我目前使用 MigraDoc 构建一个 PDF 文件,然后渲染创建 PdfDocument (PDFSharp) 的文档,以便我可以从其他 PDF 中添加外部页面(因为根据我的理解,MigraDoc 没有页面的“概念”,因此无法添加外部页面)页)

我当前的 PDF 文件格式是:

(PDFSharp) Page 1 --- 
(PDFSharp) Page 2   | (MigraDoc) Section 1
(PDFSharp) Page 3 ---
(PDFSharp) Page 4 --- (MigraDoc) Section 2
(PDFSharp) Page 5 --- (MigraDoc) Section 2
(PDFSharp) Page 6 --- (MigraDoc) Section 3
(PDFSharp) External Page 1
(PDFSharp) External Page 2
(PDFSharp) External Page 3
(PDFSharp) External Page 4
Run Code Online (Sandbox Code Playgroud)

我需要有类似的东西:

(PDFSharp) Page 1 --- 
(PDFSharp) Page 2   | (MigraDoc) Section 1
(PDFSharp) Page …
Run Code Online (Sandbox Code Playgroud)

c# pdf-generation pdfsharp migradoc

2
推荐指数
1
解决办法
1328
查看次数

Migradoc封面图片

我需要找到一种方法,如何用.png图片填充整个封面页,并在页面的底部放置一些文本,图片不会.

现在我通过使用它来伸展它:

document.DefaultPageSetup.LeftMargin = 0;
document.DefaultPageSetup.TopMargin = 0; 
Run Code Online (Sandbox Code Playgroud)

但是上边距仍然留下了som mm的空间(而不是顶部有一些白色的图片.)

PS将来我需要在封面图片上面放一张图片.所以它实际上必须是2层.有什么建议?

c# pdfsharp migradoc

1
推荐指数
1
解决办法
2176
查看次数

在PdfSharp中更改文本颜色

我目前正在使用PdfSharp创建一个PDF,它主要由文本和一些图像组成.文本元素具有不同的颜色.我的问题是,一旦我使用与我开始使用的颜色不同的颜色,文本在生成的PDF中不可见(例如,我以黑色文本开头,切换到红色文本,红色文本不可见).所有文本元素都在生成的PDF中(我可以选择它们),但红色元素是不可见的.

所以这是代码:

// Create a new PDF document with one page
var document = new PdfDocument();
var page = document.AddPage();
page.Width = 800;
page.Height = 600;
var defaultFont = new XFont("Arial", 12, XFontStyle.Regular, new XPdfFontOptions(PdfFontEmbedding.Always));
var gfx = XGraphics.FromPdfPage(page);

// black text
gfx.DrawString("black", defaultFont, XBrushes.Black, new XRect(x, y, width, height), XStringFormats.Center);

// red text
gfx.DrawString("red", defaultFont, XBrushes.Red, new XRect(x2, y2, width2, height2), XStringFormats.Center);
Run Code Online (Sandbox Code Playgroud)

我已经找到了一个解决方案(重新创建XGraphics对象),但它很安静,因为它需要在每次颜色更改后调用:

// ...

// black text
gfx.DrawString("black", defaultFont, XBrushes.Black, new XRect(x, y, width, height), XStringFormats.Center);

// disposing …
Run Code Online (Sandbox Code Playgroud)

pdf pdfsharp

1
推荐指数
1
解决办法
6729
查看次数

如何使用PdfSharp将.SVG写入pdf

我正在使用PdfSharp并保存.png文件.它工作正常.现在我需要保存SVG图像,我收到一个错误

System.OutOfMemoryException: Out of memory.
Run Code Online (Sandbox Code Playgroud)

代码是

var path = @"D:\Projects\ProjectName\Content\Images\Instruments";
path += Path.GetFileName(instrument.Src); //instrument.src is a valid name and the path is a valid path on the local machine, which is where I'm testing

if (!File.Exists(path))
    return;  //never hit as the path is correct

var img = XImage.FromFile(path); //out of memory
//more code
Run Code Online (Sandbox Code Playgroud)

如果我将上面的.svg更改为.png它可以正常工作(因为我有两个,同名的.png和.svg文件)

如何使用PDF Sharp将SVG图像保存为PDF?

c# svg pdfsharp

1
推荐指数
1
解决办法
1580
查看次数

标签 统计

pdfsharp ×10

c# ×6

migradoc ×5

pdf ×3

char ×1

hash ×1

null ×1

pdf-generation ×1

string ×1

svg ×1

variables ×1

vb.net ×1

wpf ×1