c# - PDFsharp - 尝试为我刚刚与页面链接合并的所有文件制作目录
问题描述
我正在尝试为使用 PDFsharp 连接在一起的文件创建目录(带有页面链接)。
我已经到了尝试添加指向我刚刚写的文本的链接的地步。有人可以提供一些方向吗?
public static void combinePDFs(List<string> filenames)
{
List<PdfDocument> pdfs = new List<PdfDocument>();
foreach (string f in filenames)
pdfs.Add(PdfReader.Open(f, PdfDocumentOpenMode.Import));
List<int> pagesInDoc = new List<int>();
using (PdfDocument outPdf = new PdfDocument())
{
PdfDocument doc = TOC();
//CopyPages(TOC(), outPdf);
foreach (var p in pdfs)
pagesInDoc.Add(CopyPages(p, doc));
doc.Save(@"...\file1and2.pdf");
}
PdfDocument TOC()
{
PdfDocument doc = new PdfDocument();
PdfPage page = doc.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Calibri", 14, XFontStyle.Bold);
gfx.DrawString("Table of Contents", font, XBrushes.DarkBlue,
new XRect(0,0,page.Width,page.Height)
,XStringFormats.TopLeft);
var xrect = new XRect(10, 20, 300, 20);
//I am trying to hard code my first link here
gfx.DrawString("CRA", font, XBrushes.DarkBlue
, xrect, XStringFormats.CenterLeft);
page.AddDocumentLink(new PdfRectangle(xrect), 2);
return doc;
}
int CopyPages(PdfDocument from, PdfDocument to)
{
for (int i = 0; i < from.PageCount; i++)
{
to.AddPage(from.Pages[i]);
}
return from.PageCount;
}
解决方案
即使它让你这样做,你仍然需要添加一个转换:
page.AddDocumentLink(new PdfRectangle(xrect), 2);
to
page.AddDocumentLink(new PdfRectangle(gfx.Transformer.WorldToDefaultPage(xrect)), 2);
推荐阅读
- python - Google Colab 上的 pynvrtc:找不到 libnvrtc.so
- android - 输入表单控件在 android 中不接受 0
- ruby-on-rails - 如果我向多个列添加唯一性约束,我是否还需要索引各个列?
- macos - Crashlytics 未将崩溃事件传输到 Fabric.io(仅限调试模式?)
- javascript - 从同一域中的不同选项卡/窗口访问弹出窗口
- yii2 - 如何在 Yii2 SideNav 小部件中添加确认对话框
- javascript - TypeError:无法读取(ReactJS)中未定义的属性“发布”
- neo4j - Neo4j:从密码外壳运行多个脚本文件
- python - 将某个类别的范围内的随机数分配给熊猫数据框
- c - 如何保存指向最后一个节点的指针