- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有很多 DICOM 数据集,其中有一个私有(private)标签,其中包含我不想保留在标题中的信息。每个数据集的此标记值都会发生变化,因此我不知道该值。以下是我要更新或删除的 PRIVATE CREATOR 和私有(private)标签的示例。
0033,0010 ---: MITRA OBJECT UTF8 ATTRIBUTES 1.0
0033,1016 ---: Dummy^Data^G^
我希望能够完全删除 0033,1016
或使用新值更新它。我尝试过的一切要么什么都不做,要么会添加另一个 0033,1016
标签,从而创建两个 0033,1016
标签。一个是原始的,一个是我尝试更新原始时添加的。
0033,0010 ---: MITRA OBJECT UTF8 ATTRIBUTES 1.0
0033,1016 ---: Dummy^Data^G^
0033,1016 ---: FOO
如果我再次运行代码,我可以更新值为 FOO
的 0033,1016
,但我永远无法更改 0033,1016
标签的值为 Dummy^Data^G^
。
以下是我的代码:
string main_path = @"C:\Users\pthalken\Desktop\foo";
DirectoryInfo foo = new DirectoryInfo(main_path);
FileInfo[] dicomFiles = foo.GetFiles();
foreach(FileInfo files in dicomFiles)
{
DicomFile openedDicom = DicomFile.Open(files.FullName, FileReadOption.ReadAll);
//getting the private tag that I want to change or remove
var remove = DicomTag.Parse("0033,1016");
var test = DicomTag.Parse("0010,0010");
//this method will work for public tags as expected, but with private tags it will juist add another tag
//it will not update the orignial tag. If ran again it will change the recently inputted tag but still not touch the original
openedDicom.Dataset.AddOrUpdate(remove, "FOO");
//Does not update original tag, will add another 0033,1016 tag with value HOT
openedDicom.Dataset.AddOrUpdate(new DicomCodeString(openedDicom.Dataset.GetPrivateTag(new DicomTag(0x0033, 0x1016)), "HOT"));
//Does not update original tag, will add another 0033,1016 tag with value HOT CHEETO
openedDicom.Dataset.AddOrUpdate(new DicomCodeString(openedDicom.Dataset.GetPrivateTag(remove), "HOT CHEETO"));
//does not remove the orignial tag
openedDicom.Dataset.Remove(remove);
openedDicom.Save(files.FullName);
}
最佳答案
对于 fo-DICOM 的 4.0.7 版,以下代码可以正确地从数据集中删除和更新私有(private)标签:
string dirPath = @"C:\.....";
string filePath = Path.Combine(dirPath, "Test.dcm");
DicomFile openedDicom = DicomFile.Open(filePath, FileReadOption.ReadAll);
var remove = DicomTag.Parse("0019,0010");
openedDicom.Dataset.Remove(remove);
openedDicom.Save(Path.Combine(dirPath, "Removed.dcm"));
var edit = DicomTag.Parse("0043,0010");
openedDicom.Dataset.AddOrUpdate(edit, "EDITED");
openedDicom.Save(Path.Combine(dirPath, "Edited.dcm"));
我没有包含您提到的私有(private)标签的数据集;我使用的标签不同,但这无关紧要。
但是,有一个陷阱。如果私有(private)标签的 VR
是 [UN - Unknown]
,则 Remove
和 AddOrUpdate
都不起作用。这似乎与未知值表示有关。
我尝试读取 VR
为 UN
的元素的值,如下所示:
var read = DicomTag.Parse("0019,1002");
string value = openedDicom.Dataset.GetString(read);
GetString
失败,出现以下异常:
Tag: (0019,1002) not found in dataset
在 Visual Studio 中,如果您快速查看 openedDicom.Dataset
以查找带有 UN
VR
的元素,您将观察到奇怪的结果。
似乎 fo-DICOM 在使用 UN
VR
读取元素时出现问题。
你在问题中说:
Everything I have tried either does nothing or will add another 0033,1016 tag, creating two 0033,1016 tag.
它会创建新标签,因为它无法找到现有标签。查看新建标签的VR
;我猜它会是 UN
以外的东西。这就是为什么您可以编辑新创建的标签但不能编辑原始标签的原因。
关于c# - 如何使用 fo-DICOM 删除或更新私有(private)标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65116887/
我有一个 XML 输入文件,可以说 shipnote.xml其中包含一个零件项目列表。部分项目具有通常的属性 qty , partno和 label .每个项目都分配给一个 packetno . 我写
我们客户的要求是提供带圆角的 PDF 表格。我只有 Apache FOP 处理器可供我使用,它不支持圆角属性。它也不支持 float ,因此无法向左和向右 float 圆形图像。 你对如何做到这一点有
我的 FO 流程有问题,因为在一页上,标题显示在一页的末尾并在之后的页面上继续。如何向 title-element 添加属性,以便标题始终显示在同一页面上,这意味着:没有分页符。 谢谢! /丹尼 最佳
我希望 column-count="2"只出现在页面的某些部分。 ]>
我正在为我的 XML 内容生成 xsl-fo 文档,然后将此内容传递给将生成 PDF 的第三方 DLL 之一。我需要以 45 度角显示测试。如何实现这一目标? 谢谢 最佳答案 我很确定您不能在纯 XS
在我的情况下,我必须在两个表格行之间提供高达 0.5cm 的空间。我怎样才能做到这一点。 代码:: 我用过了:
我正在从我的 xsl 和 xml 文件生成一个 pdf,其中我需要在第一页的末尾显示一个表格。但是由于该表格上方还有一些表格,将其显示为静态文本会将其向下推到第 2 页(或第 3 页,依此类推)。所以
我正在从 xml 和 xsl-fo 以及 Apache FOP 创建一个 pdf 文件,我需要在一行上写文本。我的意思是类似于手工编辑的表格,你可以在其中写上名字、姓氏等。是这样的:姓名:______
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在我的 XSL 页面主代码看起来像这样......
我有一些很长的表格,它们跨越多个页面,用 Apache-FOP 1.1 呈现 表格有标题,例如“表 7.6. 事物的详细信息”和列标题。 在每个连续页面上,列标题在顶部正确重复。但我还需要让表格延续也
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 2年前关闭。 Improve t
我创建了一个 XSL-FO 模板,它打印了一些包含动态变化的文本的块。有时一个块被分成两页,因为页面上没有足够的空间。有没有办法将块放在下一页而不是在不适合的情况下将其拆分到页面上?我试图将它放入一个
我有一个非常简单的模板: 我如何告诉DO即使块为空也要保留空行。 最佳答案 只需在的末尾添加一个元素。像这样:
我有一个 fo:block 可能跨越一个页面。我想在该 block 所在的第一页的底部放置一些文本,例如“继续”。 源文档在 标记内有一系列 。 我认为做到这一点的唯一方法是在源文档的正确位置添加下一
我为 sp_sign 获得的值(如下所示)我想将其用作 fo:external graphics 的 src 。我尝试了很多事情仍然没有运气请帮助。 // 提前致谢 问候,
我正在使用 XSL:FO 和 Apache FOP 创建可访问的文档。要确认可访问性,PDF Accesibility Checker 3 (PAC3)应该使用。不幸的是,检查器提示每个表格单元格边框
我正在使用 XSL:FO 和 Apache FOP 创建可访问的文档。要确认可访问性,PDF Accesibility Checker 3 (PAC3)应该使用。不幸的是,检查器提示每个表格单元格边框
我正在以这种方式在 XSL FO 文档中创建背景文本: Background Watermark Text
我有一个 .xml 文件,我想生成一个 .pdf 文件。我使用 xsl-fo 来实现这一点。 问题是我无法请求当前页面的编号以将其存储到变量中,而是根据其值做出不同的事情。 具体:如果当前页面是0模3
我是一名优秀的程序员,十分优秀!