如何用C#旋转pdf文档的输入框?

问题描述 投票:0回答:1

我有一个带有一些文本输入字段的 pdf 文件。 我已经安装了 C# 的 itext7 (8.0.4) nuget 包来处理 pdf 文件,我需要填写文本字段,然后将它们旋转 25 度。

我向chatgpt寻求解决方案,它提出了这个:

using iText.Forms.Fields;
using iText.Kernel.Pdf;

PdfDocument pdfDoc = new PdfDocument(new PdfReader("input.pdf"), new PdfWriter("output.pdf"));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true);

PdfFormField field = form.GetField("fieldName");
field.SetRotation(90); // Set rotation angle in degrees

pdfDoc.Close();

但是 PdfFormField 没有 SetRotation 方法。这是主要问题。

我对 C# 非常陌生,我主要使用 typescript 来完成 Vue 组件,所以我无法正确解决这个问题。

关于即兴讨论 - 我真的很接近创建自己的 PDF 库(可能不应该这样做) - 有没有从头开始创建 pdf 文件的好教程? :)

c# pdf itext7
1个回答
0
投票

您可以使用小部件的外观特征字典为字段小部件设置旋转值:

|键|类型|值| |-|-|-| |R|整数|(可选) 小部件注释相对于页面逆时针旋转的度数。该值应为 90 的倍数。默认值:0。| (ISO 32000-2,表 192 — 外观特征字典中的条目)

iText 类

PdfWidgetAnnotation
有一个
setAppearanceCharacteristics
方法,您可以使用该方法设置具有 R 值的字典。

关于您的要求

我需要填写文本字段,然后将它们旋转 25 度。

您可以尝试将生成的外观的变换矩阵设置为按该角度旋转。

但不幸的是,这不是 PDF 处理器的预期行为;特别是在填充文本字段时,PDF 处理器应将外观流字典条目(ResourcesBBox 除外)设置为其各自的默认值 (请参阅 ISO 32000-2,第 12.7.4.3 节可变文本) 。因此,PDF 查看器不会期望 Matrix 条目中存在此类特殊旋转,因此可能会忽略它。

在快速测试中,Chrome 接受了 Matrix 条目,而 Adobe Acrobat 忽略了它。

© www.soinside.com 2019 - 2024. All rights reserved.