支持excel ole对象产生的emf文件
This commit is contained in:
parent
448bbfc7e2
commit
5dc201c1a2
|
|
@ -29,6 +29,7 @@ private
|
|||
function RToDrawingRange(r: R);
|
||||
function RAlternateContentToRange(r: R);
|
||||
function RFootnoteReference(r: R);
|
||||
function RObject(r: R);
|
||||
function SetLinesAlignment();
|
||||
function ResetCoordinates();
|
||||
function NewLineRange(): TSPdfLineRange;
|
||||
|
|
@ -87,7 +88,6 @@ begin
|
|||
bookmark_flag := false;
|
||||
for _,element in elements do
|
||||
begin
|
||||
if not ifObj(element.XmlNode) then continue;
|
||||
if element.LocalName = "r" then
|
||||
begin
|
||||
empty_flag := false;
|
||||
|
|
@ -120,6 +120,7 @@ begin
|
|||
else if ifObj(element.Drawing.XmlNode) then {self.}RToDrawingRange(element);
|
||||
else if ifObj(element.AlternateContent.XmlNode) then {self.}RAlternateContentToRange(element);
|
||||
else if ifObj(element.FootnoteReference.XmlNode) then {self.}RFootnoteReference(element);
|
||||
else if ifObj(element.Object) then {self.}RObject(element);
|
||||
else if not fld then {self.}RToTextRange(element, bookmark_name);
|
||||
end
|
||||
else if element.LocalName = "fldSimple" then
|
||||
|
|
@ -519,6 +520,27 @@ begin
|
|||
// range := new TSPdfParagraphRange(self, page_, docx_components_ware_, );
|
||||
end;
|
||||
|
||||
function TSPdfParagraphRange.RObject(r: R);
|
||||
begin
|
||||
id := r.Object.Shape.Imagedata.Id;
|
||||
image := {self.}GetImageData(id);
|
||||
if not image then return;
|
||||
style := r.Object.Shape.Style;
|
||||
style_arr := str2array(style, ";");
|
||||
for _,str in style_arr do
|
||||
begin
|
||||
if startsStr("width:", str) then w := strtofloat(str[7:length(str)-2]);
|
||||
else if startsStr("height:", str) then h := strtofloat(str[8:length(str)-2]);
|
||||
end
|
||||
image_range := new TSPdfImageRange();
|
||||
image_range.Image := image;
|
||||
image_range.StartX := 0;
|
||||
image_range.StartY := 0;
|
||||
image_range.Width := w;
|
||||
image_range.DynamicHeight := h;
|
||||
range_array_[length(range_array_)] := image_range;
|
||||
end;
|
||||
|
||||
function TSPdfParagraphRange.GetXYCordinates(): array of real;
|
||||
begin
|
||||
xml_file := docx_to_pdf_.GetCurrentXmlFile();
|
||||
|
|
@ -549,12 +571,21 @@ begin
|
|||
image := docx_components_ware_.Zip().Get(image_path);
|
||||
data := image.Data();
|
||||
image_path := docx_to_pdf_.GetCachePath(image_path);
|
||||
writeFile(rwBinary(), "", image_path, 0, length(data)-1, data);
|
||||
writeFile(rwBinary(), "", image_path, 0, length(data), data);
|
||||
image_type := extractFileExt(image_path);
|
||||
if image_type = ".emf" then
|
||||
begin
|
||||
image_old_path := image_path;
|
||||
image_path := replaceStr(image_path, "emf", "png");
|
||||
gdipconvimagetype("", image_old_path, "", image_path, "image/png");
|
||||
image_type := ".png";
|
||||
fileDelete("", image_old_path);
|
||||
end
|
||||
image := nil;
|
||||
case {self.}GetImageFileType(data) of
|
||||
"png":
|
||||
case image_type of
|
||||
".png":
|
||||
image := docx_to_pdf_.GetPdf().LoadPngImageFromFile("", image_path);
|
||||
"jpg":
|
||||
".jpg", ".jpeg":
|
||||
image := docx_to_pdf_.GetPdf().LoadJpegImageFromFile("", image_path);
|
||||
end;
|
||||
fileDelete("", image_path);
|
||||
|
|
|
|||
Loading…
Reference in New Issue