簡體   English   中英

在PDF的SVG元素中嵌入屬性

[英]Embedding attributes in SVG elements in PDFs

我正在與一個使用專有軟件FlexiSIGN-PROi-Cut的標牌制作客戶合作。 我正在開發一個基於SVG的自定義工具,該工具將在服務器端導出並與i-Cut配合使用,該工具會獲取圖像和矢量以創建帶有面部的標志。 i-Cut帶有PDF,因此我一直在研究使用基於節點的解決方案將SVG文件導出為PDF的不同解決方案(我嘗試了PDFKitPhantomJS的屏幕捕獲 。到目前為止,我已經它可以在這里將矢量和圖像彼此導出為PDF,並可以在FlexiSIGN / i-Cut中打開。

但是,為了使客戶快速創建標牌,需要傳遞“ DieColor”顏色名稱屬性,但這有點含糊,我不確定這在專有軟件領域中的含義。 使用正確的屬性導入/導出文件時,在FlexiSign程序的“顏色規格”中應如下所示:

對於我的PDF,該框缺少屬性(盡管我傳遞的洋紅色填充顏色有效):

因此,問題是,如何將任何屬性導出為PDF格式? 必須可以嵌入某種元數據,但是我不熟悉PDF格式或如何與之交互,或者什么庫可以完成這項工作。 有沒有我可以使用的更好支持的PHP庫? 我也在研究使用.eps的可能性,因為顯然i-Cut可以使用它。

我最近還找到了此鏈接: SVG專色和切割線

這與聲明PDF顏色空間有關,但是我對它的工作方式一無所知-它與SVG ColorProfileElement有關嗎?

任何幫助將不勝感激。 謝謝!

如我所見,SVG當前標准不支持專色聲明,您將需要定制和/或昂貴的SVG> PDF轉換工具,以將命名的SVG顏色轉換為PDF中的專色。 如果選擇的工具和PDF唯一的問題是它們沒有專色,則可以對PDF進行后處理。 假設RGB洋紅色未用於其他任何用途,

$ perl -Mstrict -MCAM::PDF -we '
> sub _n { CAM::PDF::Node->new(@_) }
> @ARGV and my $doc = CAM::PDF->new($ARGV[0]) or die();
> my $r = $doc->getValue($doc->getPage(1)->{Resources});
> $r->{ColorSpace} ||= _n("dictionary", {});
> $doc->getValue($r->{ColorSpace})->{DieLine} = _n("array", [
>     (map {_n("label", $_)} qw(Separation DieLine DeviceCMYK)),
>     _n("reference", $doc->appendObject(undef, 
>         _n("object", _n("dictionary", {
>             FunctionType => _n("number", 2),
>             Domain => _n("array", [map{_n("number", $_)} (0,1)]),
>             C0 => _n("array", [map {_n("number", $_)} (0,0,0,0)]),
>             C1 => _n("array", [map {_n("number", $_)} (0,0.5,1,0.2)]),
>             N => _n("number", 1),
>         })),
>     ,0)),
> ]);
> my $s = $doc->getPageContent(1);
> $s =~ s!(?<=\s)1\s0\s1\srg(?=\s)!/DieLine cs 1 sc!g;
> $doc->setPageContent(1, $s);
> $ARGV[0] =~ s/(.pdf)$/+$1/;
> $doc->cleanoutput($ARGV[0]);
> ' test.pdf

生成的test+.pdf應具有DieLine專色(例如,或多或少呈橙色)代替255-0-255填充形狀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM